Donors
Set a donor primary external contact
Requires an existing forward link to the active related donor. Replaces any other primary link, stores the requested synchronization keys and immediately copies supported values from the related donor. Future source updates synchronize those keys. id/client_id and internal attributes are ignored, tags/household_relationship are skipped, and dn-prefixed keys address custom profile fields.
PATCH
/
admin
/
donors
/
{donor_id}
/
relationships
/
primary
Set a donor primary external contact
curl --request PATCH \
--url https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"related_contact_id": 42,
"donor_id": 42,
"fields": [
"phone"
]
}
'import requests
url = "https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary"
payload = {
"related_contact_id": 42,
"donor_id": 42,
"fields": ["phone"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({related_contact_id: 42, donor_id: 42, fields: ['phone']})
};
fetch('https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary', 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/{donor_id}/relationships/primary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'related_contact_id' => 42,
'donor_id' => 42,
'fields' => [
'phone'
]
]),
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/{donor_id}/relationships/primary"
payload := strings.NewReader("{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": true
}{
"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"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Record ID in the authenticated organization.
Example:
42
Body
application/json
Response
Set a donor primary external contact completed.
Mutation completed.
Example:
true
⌘I
Set a donor primary external contact
curl --request PATCH \
--url https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"related_contact_id": 42,
"donor_id": 42,
"fields": [
"phone"
]
}
'import requests
url = "https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary"
payload = {
"related_contact_id": 42,
"donor_id": 42,
"fields": ["phone"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({related_contact_id: 42, donor_id: 42, fields: ['phone']})
};
fetch('https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary', 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/{donor_id}/relationships/primary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'related_contact_id' => 42,
'donor_id' => 42,
'fields' => [
'phone'
]
]),
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/{donor_id}/relationships/primary"
payload := strings.NewReader("{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/donors/{donor_id}/relationships/primary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"related_contact_id\": 42,\n \"donor_id\": 42,\n \"fields\": [\n \"phone\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": true
}{
"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"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}