Admin
Read the canonical permissions editor schema
Returns the configured permission schema directly, including sections, presets and the server access registry. Dynamic items refer to choices supplied by the group editor; use the Access role detail for actor-specific allowed transitions. If configuration is unavailable returns version 1 with empty sections and presets.
GET
/
admin
/
permissions
/
schema
Read the canonical permissions editor schema
curl --request GET \
--url https://api.gratona.com/v1/admin/permissions/schema \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/permissions/schema"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/permissions/schema', 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.gratona.com/v1/admin/permissions/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/permissions/schema"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/permissions/schema")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/permissions/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"version": 3,
"sections": [
{
"id": "<string>",
"title": "<string>",
"description": "<string>",
"type": "<string>",
"items": [
{
"type": "<string>",
"key": "<string>",
"label": "<string>",
"description": "<string>",
"module_id": "<string>",
"view_key": "<string>",
"manage_key": "<string>",
"source": "<string>",
"key_prefix": "<string>",
"id_field": "<string>",
"label_field": "<string>",
"label_prefix": "<string>",
"parent_module": "<string>",
"min_parent_level": "<string>",
"grant_if_any": [
"<string>"
],
"ui_hints": {}
}
]
}
],
"presets": [
{
"id": "<string>",
"label": "<string>",
"description": "<string>",
"enable": [
"<string>"
],
"dynamic": {}
}
],
"team_access_roles": {
"feature_flag": "<string>",
"enabled_without_posthog": true
},
"access_registry": {}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Response
Read the canonical permissions editor schema response.
Example:
3
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Canonical authorization registry: version, implications, static keys, dynamic prefixes and resource types. Registry entries describe availability, grantability, prerequisites and contextual adapters.
⌘I
Read the canonical permissions editor schema
curl --request GET \
--url https://api.gratona.com/v1/admin/permissions/schema \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/permissions/schema"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/permissions/schema', 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.gratona.com/v1/admin/permissions/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/permissions/schema"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/permissions/schema")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/permissions/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"version": 3,
"sections": [
{
"id": "<string>",
"title": "<string>",
"description": "<string>",
"type": "<string>",
"items": [
{
"type": "<string>",
"key": "<string>",
"label": "<string>",
"description": "<string>",
"module_id": "<string>",
"view_key": "<string>",
"manage_key": "<string>",
"source": "<string>",
"key_prefix": "<string>",
"id_field": "<string>",
"label_field": "<string>",
"label_prefix": "<string>",
"parent_module": "<string>",
"min_parent_level": "<string>",
"grant_if_any": [
"<string>"
],
"ui_hints": {}
}
]
}
],
"presets": [
{
"id": "<string>",
"label": "<string>",
"description": "<string>",
"enable": [
"<string>"
],
"dynamic": {}
}
],
"team_access_roles": {
"feature_flag": "<string>",
"enabled_without_posthog": true
},
"access_registry": {}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}