JavaScript SDK
const securityCategories = [
{ name: 'Admins' },
{ name: 'Developers' },
];
const createdSecurityCategories = await client.securityCategories.create(securityCategories);from cognite.client.data_classes import SecurityCategoryWrite
my_category = SecurityCategoryWrite(name="My Category")
res = client.iam.security_categories.create(my_category)
List<SecurityCategory> createSecurityCategoriesList =
List.of(SecurityCategory.newBuilder().setName("Name").build());
client.securityCategories().create(createSecurityCategoriesList);
curl --request POST \
--url https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"name": "Guarded by vendor x"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories",
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([
'items' => [
[
'name' => 'Guarded by vendor x'
]
]
]),
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://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories"
payload := strings.NewReader("{\n \"items\": [\n {\n \"name\": \"Guarded by vendor x\"\n }\n ]\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))
}require 'uri'
require 'net/http'
url = URI("https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories")
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 \"items\": [\n {\n \"name\": \"Guarded by vendor x\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"name": "Guarded by vendor x",
"id": 123
}
]
}Create security categories
Required capabilities:
securityCategoriesAcl:CREATE
Creates security categories with the given names. Duplicate names in the request are ignored. If a security category with one of the provided names exists already, then the request will fail and no security categories are created.
POST
/
securitycategories
JavaScript SDK
const securityCategories = [
{ name: 'Admins' },
{ name: 'Developers' },
];
const createdSecurityCategories = await client.securityCategories.create(securityCategories);from cognite.client.data_classes import SecurityCategoryWrite
my_category = SecurityCategoryWrite(name="My Category")
res = client.iam.security_categories.create(my_category)
List<SecurityCategory> createSecurityCategoriesList =
List.of(SecurityCategory.newBuilder().setName("Name").build());
client.securityCategories().create(createSecurityCategoriesList);
curl --request POST \
--url https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"items": [
{
"name": "Guarded by vendor x"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories",
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([
'items' => [
[
'name' => 'Guarded by vendor x'
]
]
]),
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://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories"
payload := strings.NewReader("{\n \"items\": [\n {\n \"name\": \"Guarded by vendor x\"\n }\n ]\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))
}require 'uri'
require 'net/http'
url = URI("https://{cluster}.cognitedata.com/api/v1/projects/{project}/securitycategories")
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 \"items\": [\n {\n \"name\": \"Guarded by vendor x\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"name": "Guarded by vendor x",
"id": 123
}
]
}Authorizations
oidc-tokenoauth2-client-credentialsoauth2-open-industrial-dataoauth2-auth-code
Access token issued by the CDF project's configured identity provider. Access token must be an OpenID Connect token, and the project must be configured to accept OpenID Connect tokens. Use a header key of 'Authorization' with a value of 'Bearer $accesstoken'. The token can be obtained through any flow supported by the identity provider.
Body
application/json
List of categories to create
Show child attributes
Show child attributes
Response
201 - application/json
A list of security categories.
Show child attributes
Show child attributes
Last modified on August 21, 2026
⌘I