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>"
}
}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 ("role_" + 22 alphanumeric chars); omit to mint one. Not allowed for roles on the built-in access resource, whose scoped ids are derived from the resource and role name.
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>"
}
}
