Donors
Set the default donor saved view
Preference belongs to the authenticated user and organization. Only active saved view/report definitions in a valid existing context are eligible; current context permission is checked. Campaign and recipient surfaces remain separate. Replaces this user’s default with an accessible definition, including legacy donor definitions. Returns 404 when the saved definition is unavailable.
PUT
/
admin
/
donors
/
default-saved-view
Set the default donor saved view
curl --request PUT \
--url https://api.gratona.com/v1/admin/donors/default-saved-view \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_preference_id": 42
}
'import requests
url = "https://api.gratona.com/v1/admin/donors/default-saved-view"
payload = { "filter_preference_id": 42 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filter_preference_id: 42})
};
fetch('https://api.gratona.com/v1/admin/donors/default-saved-view', 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/donors/default-saved-view",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'filter_preference_id' => 42
]),
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://api.gratona.com/v1/admin/donors/default-saved-view"
payload := strings.NewReader("{\n \"filter_preference_id\": 42\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.gratona.com/v1/admin/donors/default-saved-view")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter_preference_id\": 42\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/donors/default-saved-view")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_preference_id\": 42\n}"
response = http.request(request)
puts response.read_body{
"message": "Default donor view updated.",
"data": {
"id": 42,
"client_id": 42,
"owner_user_id": 42,
"hysform_id": 42,
"module_id": 42,
"sponsorships": 42,
"name": "Example",
"fields": "[]",
"column_fields": "[]",
"column_order": "[]",
"date_range": "[]",
"footer_calculations": "[]",
"sort_key": "Example",
"sort_order": "Example",
"search_query": "Example",
"related_config": {},
"snapshot": false,
"type": "Example",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"deleted_at": "2026-10-20T12:00:00Z"
}
}{
"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.
Body
application/json
Eligible saved view/report definition ID.
Required range:
x >= 1Example:
42
⌘I
Set the default donor saved view
curl --request PUT \
--url https://api.gratona.com/v1/admin/donors/default-saved-view \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_preference_id": 42
}
'import requests
url = "https://api.gratona.com/v1/admin/donors/default-saved-view"
payload = { "filter_preference_id": 42 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filter_preference_id: 42})
};
fetch('https://api.gratona.com/v1/admin/donors/default-saved-view', 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/donors/default-saved-view",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'filter_preference_id' => 42
]),
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://api.gratona.com/v1/admin/donors/default-saved-view"
payload := strings.NewReader("{\n \"filter_preference_id\": 42\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.gratona.com/v1/admin/donors/default-saved-view")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter_preference_id\": 42\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/donors/default-saved-view")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_preference_id\": 42\n}"
response = http.request(request)
puts response.read_body{
"message": "Default donor view updated.",
"data": {
"id": 42,
"client_id": 42,
"owner_user_id": 42,
"hysform_id": 42,
"module_id": 42,
"sponsorships": 42,
"name": "Example",
"fields": "[]",
"column_fields": "[]",
"column_order": "[]",
"date_range": "[]",
"footer_calculations": "[]",
"sort_key": "Example",
"sort_order": "Example",
"search_query": "Example",
"related_config": {},
"snapshot": false,
"type": "Example",
"created_at": "2026-10-20T12:00:00Z",
"updated_at": "2026-10-20T12:00:00Z",
"deleted_at": "2026-10-20T12:00:00Z"
}
}{
"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"
}