curl --request DELETE \
--url https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking', 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/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Untrack Brand
Clear GTB — remove an advertiser from the global refresh registry.
The admin-only kill switch for the paid nightly refresh sweep: stops
future collection without deleting the advertiser or its ad history (see
AdLibraryTrackedAdvertiser’s docstring — this is now its one
non-destructive removal path). Refuses UOB/DOB advertisers with 409
regardless of the census UI’s disabled-button state — a direct API call
must not be able to untrack a brand some tenant actively owns or
discovered. Idempotent: untracking an advertiser that isn’t currently
tracked still returns 204 — and writes NO audit row, because nothing
happened. An audit row here means the registry actually lost a member;
emitting one for the no-op would make “who removed this brand from the
paid sweep?” unanswerable from the log, which is the question the row
exists to answer.
The audit row is gated on what the DELETE actually removed, not on the
eagerly-loaded global_tracking that got us here. Same reason
track_brand_globally re-reads via persisted_tracking_countries:
the advertiser row lock does not cover
ad_library_tracked_advertisers, so the registry row can be gone by
the time this statement runs — a concurrent admin untrack, or a brand
deletion cascade. untrack_advertiser_globally reports that as
False, and crediting this admin with a removal that hit zero rows
would put a permanently wrong record of an admin action in the log.
curl --request DELETE \
--url https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking', 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/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/admin/brand-library/brands/{advertiser_id}/global-tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Was this page helpful?