curl --request PUT \
--url https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"brandName": "<string>",
"invoiceTo": "<string>",
"advertiserName": "<string>"
}
'import requests
url = "https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}"
payload = {
"brandName": "<string>",
"invoiceTo": "<string>",
"advertiserName": "<string>"
}
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({brandName: '<string>', invoiceTo: '<string>', advertiserName: '<string>'})
};
fetch('https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}', 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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}",
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([
'brandName' => '<string>',
'invoiceTo' => '<string>',
'advertiserName' => '<string>'
]),
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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}"
payload := strings.NewReader("{\n \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}")
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 \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Upsert Billing Contact
Create or update a billing contact.
A billing contact records who is behind an ad: the agency or advertiser that runs
the campaign (advertiserName), the brand the ad promotes (brandName) and the
company that pays the invoice (invoiceTo). Marketplaces in the EU display these
details next to each ad to meet the Digital Services Act (DSA).
This is the first step of the DSA setup. After creating a contact, link it to vendors with Upsert Vendor Billing Contact, then assign it to campaigns.
You choose billing_contact_id. Sending an existing ID replaces all three fields,
and the change applies to every campaign that uses the contact.
See the DSA setup guide.
curl --request PUT \
--url https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"brandName": "<string>",
"invoiceTo": "<string>",
"advertiserName": "<string>"
}
'import requests
url = "https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}"
payload = {
"brandName": "<string>",
"invoiceTo": "<string>",
"advertiserName": "<string>"
}
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({brandName: '<string>', invoiceTo: '<string>', advertiserName: '<string>'})
};
fetch('https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}', 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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}",
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([
'brandName' => '<string>',
'invoiceTo' => '<string>',
'advertiserName' => '<string>'
]),
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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}"
payload := strings.NewReader("{\n \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\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.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.topsort.com/public/v1/billing-service/billing-contacts/{billing_contact_id}")
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 \"brandName\": \"<string>\",\n \"invoiceTo\": \"<string>\",\n \"advertiserName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Autorizaciones
A valid API key generated in Topsort's UI. Use the TSE API key if calling auctions or events API, otherwise use the TSC API key.
Parámetros de ruta
The ID of the billing contact.
1Cuerpo
Respuesta
Successful Response
¿Esta página le ayudó?