Admin
Read the team access matrix
Requires a signed-in team user, the team_access_roles_v1 rollout and Manage Access roles (groups). API keys remain accepted by route middleware but cannot replace the user actor required by this controller. Includes organization feature areas and each non-synthetic program, with contextual role levels and available edits.
GET
/
admin
/
access
/
overview
Read the team access matrix
curl --request GET \
--url https://api.gratona.com/v1/admin/access/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/access/overview"
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/access/overview', 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/access/overview",
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/access/overview"
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/access/overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/access/overview")
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{
"data": {
"version": 123,
"can_manage": true,
"roles": [
{
"id": 123,
"name": "<string>",
"is_full_access": true,
"member_count": 123,
"version": 123,
"members": [
{
"id": 123,
"name": "<string>",
"email": "<string>",
"is_active": true,
"role_id": 123,
"access_assignment_version": 123
}
],
"access_by_area": {}
}
],
"resources": [
{
"resource": {
"type": "<string>",
"id": 123,
"label": "<string>"
},
"roles": [
{
"id": 123,
"name": "<string>",
"is_full_access": true,
"member_count": 123,
"level": "<string>",
"source": "<string>",
"editable": true,
"reason": "<string>",
"version": 123,
"allowed_levels": [
"<string>"
],
"members": [
{
"id": 123,
"name": "<string>",
"email": "<string>",
"is_active": true,
"role_id": 123,
"access_assignment_version": 123
}
]
}
]
}
]
}
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}⌘I
Read the team access matrix
curl --request GET \
--url https://api.gratona.com/v1/admin/access/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/access/overview"
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/access/overview', 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/access/overview",
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/access/overview"
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/access/overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/access/overview")
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{
"data": {
"version": 123,
"can_manage": true,
"roles": [
{
"id": 123,
"name": "<string>",
"is_full_access": true,
"member_count": 123,
"version": 123,
"members": [
{
"id": 123,
"name": "<string>",
"email": "<string>",
"is_active": true,
"role_id": 123,
"access_assignment_version": 123
}
],
"access_by_area": {}
}
],
"resources": [
{
"resource": {
"type": "<string>",
"id": 123,
"label": "<string>"
},
"roles": [
{
"id": 123,
"name": "<string>",
"is_full_access": true,
"member_count": 123,
"level": "<string>",
"source": "<string>",
"editable": true,
"reason": "<string>",
"version": 123,
"allowed_levels": [
"<string>"
],
"members": [
{
"id": 123,
"name": "<string>",
"email": "<string>",
"is_active": true,
"role_id": 123,
"access_assignment_version": 123
}
]
}
]
}
]
}
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}