Admin
Read access change audit history
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. Returns the newest audit entries first, including before/after semantic snapshots and source/request correlation.
GET
/
admin
/
access
/
history
Read access change audit history
curl --request GET \
--url https://api.gratona.com/v1/admin/access/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/access/history"
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/history', 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/history",
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/history"
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/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/access/history")
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,
"entries": [
{
"id": 123,
"role_id": 123,
"actor_user_id": 123,
"action": "<string>",
"affected_member_count": 123,
"source": "<string>",
"request_id": "<string>",
"version": 123,
"created_at": "2023-11-07T05:31:56Z",
"target": {
"type": "<string>",
"id": 123
},
"before": {
"role_id": 123,
"role_name": "<string>",
"is_full_organization_access": true,
"version": 123,
"effective_access": {},
"restrictions": [
"<string>"
]
},
"after": {
"role_id": 123,
"role_name": "<string>",
"is_full_organization_access": true,
"version": 123,
"effective_access": {},
"restrictions": [
"<string>"
]
}
}
],
"pagination": {
"current_page": 123,
"last_page": 123,
"per_page": 123,
"total": 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"
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Query Parameters
Page.
Required range:
x >= 1Requested page size, clamped to 1–100.
Required range:
1 <= x <= 100Response
Read access change audit history response.
Show child attributes
Show child attributes
⌘I
Read access change audit history
curl --request GET \
--url https://api.gratona.com/v1/admin/access/history \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/access/history"
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/history', 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/history",
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/history"
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/history")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/access/history")
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,
"entries": [
{
"id": 123,
"role_id": 123,
"actor_user_id": 123,
"action": "<string>",
"affected_member_count": 123,
"source": "<string>",
"request_id": "<string>",
"version": 123,
"created_at": "2023-11-07T05:31:56Z",
"target": {
"type": "<string>",
"id": 123
},
"before": {
"role_id": 123,
"role_name": "<string>",
"is_full_organization_access": true,
"version": 123,
"effective_access": {},
"restrictions": [
"<string>"
]
},
"after": {
"role_id": 123,
"role_name": "<string>",
"is_full_organization_access": true,
"version": 123,
"effective_access": {},
"restrictions": [
"<string>"
]
}
}
],
"pagination": {
"current_page": 123,
"last_page": 123,
"per_page": 123,
"total": 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"
}