Grant Permission
curl --request POST \
--url https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions \
--header 'Content-Type: application/json' \
--data '
{
"principalId": "<string>",
"role": "<string>"
}
'import requests
url = "https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions"
payload = {
"principalId": "<string>",
"role": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({principalId: '<string>', role: '<string>'})
};
fetch('https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions', 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.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions",
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([
'principalId' => '<string>',
'role' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions"
payload := strings.NewReader("{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions")
.header("Content-Type", "application/json")
.body("{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"permission": {}
}Instructions
Grant Permission
Grant or update a user’s role on an instruction workspace.
POST
/
api
/
public
/
v1
/
instructions
/
workspaces
/
{workspaceId}
/
permissions
Grant Permission
curl --request POST \
--url https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions \
--header 'Content-Type: application/json' \
--data '
{
"principalId": "<string>",
"role": "<string>"
}
'import requests
url = "https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions"
payload = {
"principalId": "<string>",
"role": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({principalId: '<string>', role: '<string>'})
};
fetch('https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions', 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.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions",
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([
'principalId' => '<string>',
'role' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions"
payload := strings.NewReader("{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions")
.header("Content-Type", "application/json")
.body("{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/public/v1/instructions/workspaces/{workspaceId}/permissions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"principalId\": \"<string>\",\n \"role\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"permission": {}
}Grants a workspace role to a user — or, when the user already holds one, updates it (upsert). The
OWNER role cannot be granted; workspace creation persists it for the owner.
Requirements: instructions:publish + workspace OWNER + a verified (claimed) account.
Request
string
required
The workspace id.
string
required
The user id receiving the role.
string
required
EDITOR (author changesets), REVIEWER (decide submitted changesets), or VIEWER (read only).Response
object
The created or updated permission record.
⌘I