Change your brand draft
A JSON Merge Patch (RFC 7396): leave a field out to keep it, send null to clear it, send a value to change it. If-Match is required and must be the draft’s ETag as you last read it; if somebody else saved since, the answer is 412 concurrent_change and nothing is written; without it, 428 precondition_required. Every field is checked: colours are #RRGGBB, links https only, the product name 2 to 40 characters, the legal footer up to 300, and text on the main colour must reach WCAG AA (4.5:1). fontLicenceConfirmed: true records you and the time as the licence confirmation an uploaded font needs. Flow-controlled settings (white label, Powered by Flow, allowances, domains) cannot be sent here. Changing the brand needs access to every organisation in the account, or being its owner (403 whole_customer_access_denied); canChange on the draft says whether you can.
curl --request PATCH \
--url https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft \
--header 'Content-Type: application/merge-patch+json' \
--header 'If-Match: <if-match>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmed": true,
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": true,
"documentsUseBrandColour": true,
"appShowsProductName": true,
"signInShowsProductName": true,
"emailsShowProductName": true,
"documentsShowProductName": true
}
'import requests
url = "https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft"
payload = {
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmed": True,
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": True,
"documentsUseBrandColour": True,
"appShowsProductName": True,
"signInShowsProductName": True,
"emailsShowProductName": True,
"documentsShowProductName": True
}
headers = {
"If-Match": "<if-match>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/merge-patch+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'If-Match': '<if-match>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/merge-patch+json'
},
body: JSON.stringify({
productName: '<string>',
primaryColour: '<string>',
primaryForegroundColour: '<string>',
accentColour: '<string>',
fontCuratedKey: '<string>',
fontFamily: '<string>',
fontRegularAssetId: '<string>',
fontMediumAssetId: '<string>',
fontBoldAssetId: '<string>',
fontLicenceConfirmed: true,
logoAssetId: '<string>',
iconAssetId: '<string>',
logoDarkAssetId: '<string>',
iconDarkAssetId: '<string>',
loadingAnimationAssetId: '<string>',
loadingAnimationDarkAssetId: '<string>',
supportEmail: '<string>',
supportUrl: '<string>',
privacyUrl: '<string>',
termsUrl: '<string>',
emailFromName: '<string>',
emailFromAddress: '<string>',
emailSenderOverrides: {},
emailReplyTo: '<string>',
emailFooterText: '<string>',
legalFooter: '<string>',
documentsShowLogo: true,
documentsUseBrandColour: true,
appShowsProductName: true,
signInShowsProductName: true,
emailsShowProductName: true,
documentsShowProductName: true
})
};
fetch('https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft', 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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft",
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([
'productName' => '<string>',
'primaryColour' => '<string>',
'primaryForegroundColour' => '<string>',
'accentColour' => '<string>',
'fontCuratedKey' => '<string>',
'fontFamily' => '<string>',
'fontRegularAssetId' => '<string>',
'fontMediumAssetId' => '<string>',
'fontBoldAssetId' => '<string>',
'fontLicenceConfirmed' => true,
'logoAssetId' => '<string>',
'iconAssetId' => '<string>',
'logoDarkAssetId' => '<string>',
'iconDarkAssetId' => '<string>',
'loadingAnimationAssetId' => '<string>',
'loadingAnimationDarkAssetId' => '<string>',
'supportEmail' => '<string>',
'supportUrl' => '<string>',
'privacyUrl' => '<string>',
'termsUrl' => '<string>',
'emailFromName' => '<string>',
'emailFromAddress' => '<string>',
'emailSenderOverrides' => [
],
'emailReplyTo' => '<string>',
'emailFooterText' => '<string>',
'legalFooter' => '<string>',
'documentsShowLogo' => true,
'documentsUseBrandColour' => true,
'appShowsProductName' => true,
'signInShowsProductName' => true,
'emailsShowProductName' => true,
'documentsShowProductName' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/merge-patch+json",
"If-Match: <if-match>",
"X-Auth-Token: <api-key>"
],
]);
$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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft"
payload := strings.NewReader("{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("If-Match", "<if-match>")
req.Header.Add("X-Auth-Token", "<api-key>")
req.Header.Add("Content-Type", "application/merge-patch+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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft")
.header("If-Match", "<if-match>")
.header("X-Auth-Token", "<api-key>")
.header("Content-Type", "application/merge-patch+json")
.body("{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["If-Match"] = '<if-match>'
request["X-Auth-Token"] = '<api-key>'
request["Content-Type"] = 'application/merge-patch+json'
request.body = "{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}"
response = http.request(request)
puts response.read_body{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": {
"settings": {
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontSource": "Curated",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmedBy": "<string>",
"fontLicenceConfirmedDate": "<string>",
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"helpLinksFallback": "Hide",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": true,
"documentsUseBrandColour": true,
"appShowsProductName": true,
"signInShowsProductName": true,
"emailsShowProductName": true,
"documentsShowProductName": true,
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingStyle": "Spinner",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"emailButtonShape": "Rounded",
"emailHeaderStyle": "Plain"
},
"previews": {
"logoSvgUrl": "<string>",
"iconSvgUrl": "<string>",
"logoDarkSvgUrl": "<string>",
"iconDarkSvgUrl": "<string>",
"loadingAnimationSvgUrl": "<string>",
"loadingAnimationDarkSvgUrl": "<string>"
},
"entitlement": {
"whiteLabelEnabled": true,
"poweredByFlow": true,
"domainAllowance": 123,
"sendingDomainAllowance": 123
},
"version": 123,
"updatedDate": "<string>",
"updatedBy": "<string>",
"canChange": true
},
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}Authorizations
FlowPayroll JWT (raw token, no Bearer prefix)
Headers
The draft's ETag as you last read it, such as "4" (the same as version in quotes). 412 concurrent_change when somebody saved since; 428 precondition_required without it.
Body
A JSON Merge Patch (RFC 7396) of the branding draft: a field left out stays as it is, a field sent as
null is removed, anything else replaces it. Field names match settings on the draft.
Flow-controlled fields (white label on, Powered by Flow, allowances) are not here and cannot be sent.
Which version it changes is the request's If-Match, never a body field.
Required to publish. 2 to 40 characters.
Required to publish. Hex colour, #RRGGBB.
null derives it from the primary colour.
Curated, Uploaded true records the caller and the time as the licence confirmation. Required before an uploaded font can be published.
The logo on a dark background (an asset id from a Logo upload). Null uses the light one.
The icon on a dark background (an asset id from an IconMark upload). Null uses the light one.
Spinner, Icon, Animation From a LoadingAnimation upload.
From a LoadingAnimation upload. Null uses the light one.
The corners of the buttons in emails.
Rounded, Square, Pill How the top of each email looks.
Plain, BrandBar https only.
https only.
https only.
Hide, FlowGuides The address every email comes from, such as payroll@acme.example, on one of the account's email domains
(GET /customer/branding/sender-options). Used while that domain is verified; removed, emails come from
noreply@ the account's first verified domain, or Flow's standard address when it has none.
Per kind of email, keyed by email type (PayslipGeneratedEvent, P60GeneratedEvent, ...), the name,
address or reply-to it uses instead of the default. Merged key by key: an object changes the fields it names,
null puts that email back on the default, and keys left out are unchanged, so one request edits any number
of emails. null for the whole field puts every email back on the default.
Show child attributes
Show child attributes
Up to 300 characters.
Show the product name beside the logo in the app. With no logo the name always shows.
Show the product name beside the logo on the sign-in page. With no logo the name always shows.
Show the product name beside the logo in emails. With no logo the name always shows.
Show the product name beside the logo on payslips and letters. With no logo the name always shows.
Was this page helpful?
curl --request PATCH \
--url https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft \
--header 'Content-Type: application/merge-patch+json' \
--header 'If-Match: <if-match>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmed": true,
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": true,
"documentsUseBrandColour": true,
"appShowsProductName": true,
"signInShowsProductName": true,
"emailsShowProductName": true,
"documentsShowProductName": true
}
'import requests
url = "https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft"
payload = {
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmed": True,
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": True,
"documentsUseBrandColour": True,
"appShowsProductName": True,
"signInShowsProductName": True,
"emailsShowProductName": True,
"documentsShowProductName": True
}
headers = {
"If-Match": "<if-match>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/merge-patch+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'If-Match': '<if-match>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/merge-patch+json'
},
body: JSON.stringify({
productName: '<string>',
primaryColour: '<string>',
primaryForegroundColour: '<string>',
accentColour: '<string>',
fontCuratedKey: '<string>',
fontFamily: '<string>',
fontRegularAssetId: '<string>',
fontMediumAssetId: '<string>',
fontBoldAssetId: '<string>',
fontLicenceConfirmed: true,
logoAssetId: '<string>',
iconAssetId: '<string>',
logoDarkAssetId: '<string>',
iconDarkAssetId: '<string>',
loadingAnimationAssetId: '<string>',
loadingAnimationDarkAssetId: '<string>',
supportEmail: '<string>',
supportUrl: '<string>',
privacyUrl: '<string>',
termsUrl: '<string>',
emailFromName: '<string>',
emailFromAddress: '<string>',
emailSenderOverrides: {},
emailReplyTo: '<string>',
emailFooterText: '<string>',
legalFooter: '<string>',
documentsShowLogo: true,
documentsUseBrandColour: true,
appShowsProductName: true,
signInShowsProductName: true,
emailsShowProductName: true,
documentsShowProductName: true
})
};
fetch('https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft', 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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft",
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([
'productName' => '<string>',
'primaryColour' => '<string>',
'primaryForegroundColour' => '<string>',
'accentColour' => '<string>',
'fontCuratedKey' => '<string>',
'fontFamily' => '<string>',
'fontRegularAssetId' => '<string>',
'fontMediumAssetId' => '<string>',
'fontBoldAssetId' => '<string>',
'fontLicenceConfirmed' => true,
'logoAssetId' => '<string>',
'iconAssetId' => '<string>',
'logoDarkAssetId' => '<string>',
'iconDarkAssetId' => '<string>',
'loadingAnimationAssetId' => '<string>',
'loadingAnimationDarkAssetId' => '<string>',
'supportEmail' => '<string>',
'supportUrl' => '<string>',
'privacyUrl' => '<string>',
'termsUrl' => '<string>',
'emailFromName' => '<string>',
'emailFromAddress' => '<string>',
'emailSenderOverrides' => [
],
'emailReplyTo' => '<string>',
'emailFooterText' => '<string>',
'legalFooter' => '<string>',
'documentsShowLogo' => true,
'documentsUseBrandColour' => true,
'appShowsProductName' => true,
'signInShowsProductName' => true,
'emailsShowProductName' => true,
'documentsShowProductName' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/merge-patch+json",
"If-Match: <if-match>",
"X-Auth-Token: <api-key>"
],
]);
$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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft"
payload := strings.NewReader("{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("If-Match", "<if-match>")
req.Header.Add("X-Auth-Token", "<api-key>")
req.Header.Add("Content-Type", "application/merge-patch+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.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft")
.header("If-Match", "<if-match>")
.header("X-Auth-Token", "<api-key>")
.header("Content-Type", "application/merge-patch+json")
.body("{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.flowpayroll.ai/v1/administration/customer/branding/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["If-Match"] = '<if-match>'
request["X-Auth-Token"] = '<api-key>'
request["Content-Type"] = 'application/merge-patch+json'
request.body = "{\n \"productName\": \"<string>\",\n \"primaryColour\": \"<string>\",\n \"primaryForegroundColour\": \"<string>\",\n \"accentColour\": \"<string>\",\n \"fontCuratedKey\": \"<string>\",\n \"fontFamily\": \"<string>\",\n \"fontRegularAssetId\": \"<string>\",\n \"fontMediumAssetId\": \"<string>\",\n \"fontBoldAssetId\": \"<string>\",\n \"fontLicenceConfirmed\": true,\n \"logoAssetId\": \"<string>\",\n \"iconAssetId\": \"<string>\",\n \"logoDarkAssetId\": \"<string>\",\n \"iconDarkAssetId\": \"<string>\",\n \"loadingAnimationAssetId\": \"<string>\",\n \"loadingAnimationDarkAssetId\": \"<string>\",\n \"supportEmail\": \"<string>\",\n \"supportUrl\": \"<string>\",\n \"privacyUrl\": \"<string>\",\n \"termsUrl\": \"<string>\",\n \"emailFromName\": \"<string>\",\n \"emailFromAddress\": \"<string>\",\n \"emailSenderOverrides\": {},\n \"emailReplyTo\": \"<string>\",\n \"emailFooterText\": \"<string>\",\n \"legalFooter\": \"<string>\",\n \"documentsShowLogo\": true,\n \"documentsUseBrandColour\": true,\n \"appShowsProductName\": true,\n \"signInShowsProductName\": true,\n \"emailsShowProductName\": true,\n \"documentsShowProductName\": true\n}"
response = http.request(request)
puts response.read_body{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": {
"settings": {
"productName": "<string>",
"primaryColour": "<string>",
"primaryForegroundColour": "<string>",
"accentColour": "<string>",
"fontSource": "Curated",
"fontCuratedKey": "<string>",
"fontFamily": "<string>",
"fontRegularAssetId": "<string>",
"fontMediumAssetId": "<string>",
"fontBoldAssetId": "<string>",
"fontLicenceConfirmedBy": "<string>",
"fontLicenceConfirmedDate": "<string>",
"logoAssetId": "<string>",
"iconAssetId": "<string>",
"supportEmail": "<string>",
"supportUrl": "<string>",
"privacyUrl": "<string>",
"termsUrl": "<string>",
"helpLinksFallback": "Hide",
"emailFromName": "<string>",
"emailFromAddress": "<string>",
"emailSenderOverrides": {},
"emailReplyTo": "<string>",
"emailFooterText": "<string>",
"legalFooter": "<string>",
"documentsShowLogo": true,
"documentsUseBrandColour": true,
"appShowsProductName": true,
"signInShowsProductName": true,
"emailsShowProductName": true,
"documentsShowProductName": true,
"logoDarkAssetId": "<string>",
"iconDarkAssetId": "<string>",
"loadingStyle": "Spinner",
"loadingAnimationAssetId": "<string>",
"loadingAnimationDarkAssetId": "<string>",
"emailButtonShape": "Rounded",
"emailHeaderStyle": "Plain"
},
"previews": {
"logoSvgUrl": "<string>",
"iconSvgUrl": "<string>",
"logoDarkSvgUrl": "<string>",
"iconDarkSvgUrl": "<string>",
"loadingAnimationSvgUrl": "<string>",
"loadingAnimationDarkSvgUrl": "<string>"
},
"entitlement": {
"whiteLabelEnabled": true,
"poweredByFlow": true,
"domainAllowance": 123,
"sendingDomainAllowance": 123
},
"version": 123,
"updatedDate": "<string>",
"updatedBy": "<string>",
"canChange": true
},
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}{
"message": {
"text": "<string>",
"token": "<string>",
"tokenArguments": [
{
"name": "<string>",
"value": null
}
]
},
"content": {
"data": null,
"metadata": {
"dateFormat": "<string>",
"dateTimeFormat": "<string>",
"paginationToken": "<string>"
}
},
"validationIssues": [
{
"field": "<string>",
"reason": "<string>",
"reasonToken": "<string>",
"reasonTokenArguments": [
{
"name": "<string>",
"value": null
}
]
}
]
}