cURL
curl --request PATCH \
--url https://api.example.com/v1/account/preferences \
--header 'Content-Type: application/json' \
--header 'X-CSRF-Token: <x-csrf-token>' \
--data '
{
"notifications": {
"expiry": true,
"traffic": true,
"renewal": true,
"news": true
},
"marketing": true
}
'import requests
url = "https://api.example.com/v1/account/preferences"
payload = {
"notifications": {
"expiry": True,
"traffic": True,
"renewal": True,
"news": True
},
"marketing": True
}
headers = {
"X-CSRF-Token": "<x-csrf-token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-CSRF-Token': '<x-csrf-token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
notifications: {expiry: true, traffic: true, renewal: true, news: true},
marketing: true
})
};
fetch('https://api.example.com/v1/account/preferences', 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.example.com/v1/account/preferences",
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([
'notifications' => [
'expiry' => true,
'traffic' => true,
'renewal' => true,
'news' => true
],
'marketing' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-CSRF-Token: <x-csrf-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/account/preferences"
payload := strings.NewReader("{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-CSRF-Token", "<x-csrf-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.example.com/v1/account/preferences")
.header("X-CSRF-Token", "<x-csrf-token>")
.header("Content-Type", "application/json")
.body("{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/account/preferences")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-CSRF-Token"] = '<x-csrf-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}"
response = http.request(request)
puts response.read_body{
"locale": "auto",
"notifications": {
"expiry": true,
"traffic": true,
"renewal": true,
"news": true
},
"marketing": {
"enabled": true,
"decidedAt": "2023-11-07T05:31:56Z",
"source": "<string>",
"policyVersion": "<string>"
},
"contacts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "email",
"verified": true,
"transactional": true,
"marketing": true,
"createdAt": "2023-11-07T05:31:56Z"
}
],
"quietHours": {
"startHour": 11,
"endHour": 11
},
"suppression": {
"reason": "customer_request",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}account
Patch v1accountpreferences
Each field is optional and an absent field is left unchanged, so a screen that renders one toggle never has to send back a document it did not read. A marketing decision appends a consent record rather than overwriting one, because the history of who opted in and when is the thing that has to survive.
PATCH
/
v1
/
account
/
preferences
cURL
curl --request PATCH \
--url https://api.example.com/v1/account/preferences \
--header 'Content-Type: application/json' \
--header 'X-CSRF-Token: <x-csrf-token>' \
--data '
{
"notifications": {
"expiry": true,
"traffic": true,
"renewal": true,
"news": true
},
"marketing": true
}
'import requests
url = "https://api.example.com/v1/account/preferences"
payload = {
"notifications": {
"expiry": True,
"traffic": True,
"renewal": True,
"news": True
},
"marketing": True
}
headers = {
"X-CSRF-Token": "<x-csrf-token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-CSRF-Token': '<x-csrf-token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
notifications: {expiry: true, traffic: true, renewal: true, news: true},
marketing: true
})
};
fetch('https://api.example.com/v1/account/preferences', 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.example.com/v1/account/preferences",
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([
'notifications' => [
'expiry' => true,
'traffic' => true,
'renewal' => true,
'news' => true
],
'marketing' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-CSRF-Token: <x-csrf-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/account/preferences"
payload := strings.NewReader("{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-CSRF-Token", "<x-csrf-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.example.com/v1/account/preferences")
.header("X-CSRF-Token", "<x-csrf-token>")
.header("Content-Type", "application/json")
.body("{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/account/preferences")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-CSRF-Token"] = '<x-csrf-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notifications\": {\n \"expiry\": true,\n \"traffic\": true,\n \"renewal\": true,\n \"news\": true\n },\n \"marketing\": true\n}"
response = http.request(request)
puts response.read_body{
"locale": "auto",
"notifications": {
"expiry": true,
"traffic": true,
"renewal": true,
"news": true
},
"marketing": {
"enabled": true,
"decidedAt": "2023-11-07T05:31:56Z",
"source": "<string>",
"policyVersion": "<string>"
},
"contacts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "email",
"verified": true,
"transactional": true,
"marketing": true,
"createdAt": "2023-11-07T05:31:56Z"
}
],
"quietHours": {
"startHour": 11,
"endHour": 11
},
"suppression": {
"reason": "customer_request",
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}Headers
Echoes the token from the current session. Required on every unsafe method.
Body
application/json
Every field is optional and an absent field is left unchanged, so a screen that renders one toggle never sends back a document it did not read. Equal quiet-hours bounds clear the window.
Response
Updated
Available options:
auto, ru, en Show child attributes
Show child attributes
Show child attributes
Show child attributes
Flags only. The address itself is never returned.
Show child attributes
Show child attributes
Absent when unset.
Show child attributes
Show child attributes
Show child attributes
Show child attributes