Create App Resource Role
Create a new app resource role for a resource.
curl --request POST \
--url https://public.api.serval.com/v2/app-resource-roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceId": "<string>",
"name": "<string>",
"provisioningMethod": {
"builtinWorkflow": {}
},
"description": "<string>",
"requestsEnabled": true,
"accessPolicyId": "<string>",
"externalId": "<string>",
"externalData": "<string>",
"owners": [
{
"targetId": "<string>"
}
],
"scopedId": "<string>"
}
'import requests
url = "https://public.api.serval.com/v2/app-resource-roles"
payload = {
"resourceId": "<string>",
"name": "<string>",
"provisioningMethod": { "builtinWorkflow": {} },
"description": "<string>",
"requestsEnabled": True,
"accessPolicyId": "<string>",
"externalId": "<string>",
"externalData": "<string>",
"owners": [{ "targetId": "<string>" }],
"scopedId": "<string>"
}
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({
resourceId: '<string>',
name: '<string>',
provisioningMethod: {builtinWorkflow: {}},
description: '<string>',
requestsEnabled: true,
accessPolicyId: '<string>',
externalId: '<string>',
externalData: '<string>',
owners: [{targetId: '<string>'}],
scopedId: '<string>'
})
};
fetch('https://public.api.serval.com/v2/app-resource-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://public.api.serval.com/v2/app-resource-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([
'resourceId' => '<string>',
'name' => '<string>',
'provisioningMethod' => [
'builtinWorkflow' => [
]
],
'description' => '<string>',
'requestsEnabled' => true,
'accessPolicyId' => '<string>',
'externalId' => '<string>',
'externalData' => '<string>',
'owners' => [
[
'targetId' => '<string>'
]
],
'scopedId' => '<string>'
]),
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://public.api.serval.com/v2/app-resource-roles"
payload := strings.NewReader("{\n \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\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://public.api.serval.com/v2/app-resource-roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public.api.serval.com/v2/app-resource-roles")
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 \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"resourceId": "<string>",
"name": "<string>",
"description": "<string>",
"requestsEnabled": true,
"accessPolicyId": "<string>",
"provisioningMethod": {
"builtinWorkflow": {}
},
"externalId": "<string>",
"externalData": "<string>",
"requireFormConfirmation": true,
"tagIds": [
"<string>"
],
"isIngested": true,
"scopedId": "<string>"
}
}Authentication and permissions
Token requirements: User-based token (OAuth) or Organization-scoped API key or Workspace-scoped API key. Send a bearer access token for one of these identities. The permissions and resource restrictions below also apply.
| Credential | Access requirements |
|---|---|
| Organization-scoped API key | apps:write |
| Workspace-scoped API key | apps:write |
| User-based token (OAuth) | Supported, subject to permissions |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The ID of the resource.
The name of the role.
Provisioning configuration. Exactly one method should be set.
- Builtin Workflow
- Custom Workflow
- Linked Roles
- Manual
Show child attributes
Show child attributes
A description of the role.
Whether requests are enabled for the role.
The default access policy for the role (optional).
The external ID of the role in the external system (optional).
Data from the external system as a JSON string (optional).
Owners (users/groups) to set on the created role (optional).
Show child attributes
Show child attributes
Scoped ID to assign to an editable role ("role_" + 22 alphanumeric chars); omit to mint a random ID. The ID is immutable after creation.
Response
Success
The created role.
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://public.api.serval.com/v2/app-resource-roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceId": "<string>",
"name": "<string>",
"provisioningMethod": {
"builtinWorkflow": {}
},
"description": "<string>",
"requestsEnabled": true,
"accessPolicyId": "<string>",
"externalId": "<string>",
"externalData": "<string>",
"owners": [
{
"targetId": "<string>"
}
],
"scopedId": "<string>"
}
'import requests
url = "https://public.api.serval.com/v2/app-resource-roles"
payload = {
"resourceId": "<string>",
"name": "<string>",
"provisioningMethod": { "builtinWorkflow": {} },
"description": "<string>",
"requestsEnabled": True,
"accessPolicyId": "<string>",
"externalId": "<string>",
"externalData": "<string>",
"owners": [{ "targetId": "<string>" }],
"scopedId": "<string>"
}
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({
resourceId: '<string>',
name: '<string>',
provisioningMethod: {builtinWorkflow: {}},
description: '<string>',
requestsEnabled: true,
accessPolicyId: '<string>',
externalId: '<string>',
externalData: '<string>',
owners: [{targetId: '<string>'}],
scopedId: '<string>'
})
};
fetch('https://public.api.serval.com/v2/app-resource-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://public.api.serval.com/v2/app-resource-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([
'resourceId' => '<string>',
'name' => '<string>',
'provisioningMethod' => [
'builtinWorkflow' => [
]
],
'description' => '<string>',
'requestsEnabled' => true,
'accessPolicyId' => '<string>',
'externalId' => '<string>',
'externalData' => '<string>',
'owners' => [
[
'targetId' => '<string>'
]
],
'scopedId' => '<string>'
]),
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://public.api.serval.com/v2/app-resource-roles"
payload := strings.NewReader("{\n \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\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://public.api.serval.com/v2/app-resource-roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public.api.serval.com/v2/app-resource-roles")
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 \"resourceId\": \"<string>\",\n \"name\": \"<string>\",\n \"provisioningMethod\": {\n \"builtinWorkflow\": {}\n },\n \"description\": \"<string>\",\n \"requestsEnabled\": true,\n \"accessPolicyId\": \"<string>\",\n \"externalId\": \"<string>\",\n \"externalData\": \"<string>\",\n \"owners\": [\n {\n \"targetId\": \"<string>\"\n }\n ],\n \"scopedId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"resourceId": "<string>",
"name": "<string>",
"description": "<string>",
"requestsEnabled": true,
"accessPolicyId": "<string>",
"provisioningMethod": {
"builtinWorkflow": {}
},
"externalId": "<string>",
"externalData": "<string>",
"requireFormConfirmation": true,
"tagIds": [
"<string>"
],
"isIngested": true,
"scopedId": "<string>"
}
}
