reseller

PUT /v1/reseller/brand

Set the identity your clients see.

Dukkan reseller wuraren ƙarshe

Dukan takardun mai haɓakawa

Tabbatar da Asali

Aika maɓallin API azaman alamar ɗauka (bearer token). Dole ne maɓallin ya kasance yana da izinin reseller.manage; idan babu shi, za a ƙi amfani da maɓallin tare da lambar 403, ba 404 ba.

Inda ID ɗin kungiyar ku ke zuwa

Wannan mahadar ta na daukar org_id a matsayin sigar tambaya. Bar shi kuma kiran zai shafi daukacin rukunin haya naka; aika shi don takaita kiran zuwa kungiya daya tak.

Ana samun lambar kungiyar ku a kan shafin maɓallan API a cikin madanninku, kusa da maɓallin kansa. Shi ne lambar da ta dace a kowane kiran da kuka yi.

Gwada

May gurbin komai da ke cikin kusurwa da ƙimar ka, kuma may gurbin maballi da maballi daga allon sarrafa ka.

curl -X PUT https://api.zinndigital.com/v1/reseller/brand \
  -H "Authorization: Bearer zdk_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "name": <string> }'

An shiga? Na'urar sarrafa API da ke cikin sashin kulawarka tana cika ainihin lambar ƙungiyarka da maɓallinka naka, sannan tana gudanar da buƙatar a kan ainihin API don haka zaka iya ganin amsar gaske. Buɗe wannan tashar a cikin na'urar kula da API

Bayani

Creates or updates your brand. Requires reseller.manage — reading your brand is a view permission; changing what every one of your clients sees is not. ⛔ This endpoint is why white-label was unreachable until 2026-08-16. The resolver, the entitlement gate, the org-tree walk, the e-mail path and the panel painting were all built and correct, and nothing anywhere could create the row they all read — Brand held zero rows across the estate. ⛔ panel_hostname, sending_domain and sending_domain_verified are refused here, with a sentence saying why, rather than ignored. All three are facts about the outside world this endpoint cannot establish: a hostname nobody serves is a link to nowhere, an unverified sending domain does not deliver, and a verified flag a customer can set is a wish rather than a verification. Refused with 422 when white-label is not on your plan — storing a brand the resolver would decline to serve is configuration that silently does nothing.

Sigogi

SunaNau'iAna buƙataAbin da yake
org_id (query)UuidA'aThe organization this call acts on. Optional for a caller with exactly one direct membership; required for anyone with more than one — which is every reseller and every agency…

Jikin buƙata

SunaNau'iAna buƙataAbin da yake
namestringEhWhat your clients are told they are using. Never blank.
primary_colourstringA'a
support_urlstringA'a
status_urlstringA'a
paletteobjectA'aNamed colour tokens, hex values only. An unrecognised token is a 422 naming it, not a silent drop — a field that is ignored is how somebody comes to believe the platform is…
font_sourcestring<catalogue, google, >A'a
font_keystringA'a
font_google_familystringA'aInstall it with POST /v1/reseller/brand/font first — this field selects a family we already hold, and setting it alone would name a stylesheet with nothing behind it.
nav_positionstring<side, top, >A'a
densitystring<comfortable, compact, >A'a
corner_radiusstring<soft, square, >A'a
colour_schemestring<system, light, dark, >A'a
favicon_sha256stringA'a
email_logo_sha256stringA'a
dns_nameserversstring[]A'aYour own nameservers. At least two, or none — a registrar refuses a single one, and refusing it here with a sentence is better than at the registrar with a code.

Martani

SunaNau'iAna buƙataAbin da yake
configuredbooleanEhWhether a brand row exists yet. False renders an empty form, not a 404.
entitledbooleanEhWhether white-label is on this org's plan at all.
namestringEh
logo_urlstringEh
primary_colourstringEh
support_urlstringEh
status_urlstringEh
panel_hostnamestringEhRead-only here — provisioned on /v1/reseller/brand/panel-hostname, because a hostname you merely typed is a link to nowhere on every client's screen.
panel_hostname_activebooleanEhWhether the edge is actually serving it. ⛔ Measured, not the edge's status word: a custom hostname can be active with a valid certificate and still answer 522, so the engine…
panel_hostname_statusstringEhThe edge's own status word, for display. Never branch on it.
panel_hostname_recordsBrandDnsRecord[]Eh
sending_domainstringEhRead-only here — provisioned on /v1/reseller/brand/sending-domain, because an unverified domain does not deliver.
sending_domain_verifiedbooleanEhRead-only. The mail provider's answer, not a setting.
sending_domain_statusstringEhThe provider's own status word, for display. Never branch on it.
sending_domain_recordsBrandDnsRecord[]Eh
paletteobjectA'aNamed design-system colour tokens, {token: "#rrggbb"}, over the closed set in palette_tokens. ⛔ Hex only, and that is a security boundary rather than a formatting rule: a CSS…
font_sourcestring<catalogue, google, >A'acatalogue for one of font_catalogue, google for a family we self-host.
font_keystringA'aThe catalogue key when font_source is catalogue.
font_google_familystringA'aA Google family NAME, never a URL. ⛔ We fetch the family once, server-side, and serve the woff2 files from our own origin — so your clients never make a request to Google and…
nav_positionstring<side, top, >A'a
densitystring<comfortable, compact, >A'a
corner_radiusstring<soft, square, >A'a
colour_schemestring<system, light, dark, >A'aThe scheme a client's first visit lands on. ⛔ A default, never a lock — the panel's own theme toggle still works, because removing a visitor's dark mode is an accessibility…
favicon_sha256stringA'aA favicon distinct from the panel logo. Upload it with POST /v1/branding/logo and purpose=favicon. Empty falls back to the logo — a 32px render of a wordmark beats somebody…
favicon_urlstringA'a
email_logo_sha256stringA'aThe mark used in transactional mail (purpose=email). Separate because the constraints differ: mail clients render on a light background whatever the reader's theme, block SVG,…
email_logo_urlstringA'a
dns_nameserversstring[]A'aYour own authoritative nameservers, so a client typing them into a registrar never reads ours. Empty means ours. ⛔ At least two, or none — registrars refuse a single…
font_catalogueobject[]A'aThe typefaces you may pick, served with the value so a new one appears in your picker on deploy rather than when somebody remembers to update the app too.
layout_optionsobjectA'aThe allowed values for each layout choice, keyed by field name.
palette_tokensstring[]A'aThe colour tokens palette may name.
accent_contrastBrandAccentContrastA'aHow readable your accent colour is, and the ink we will paint on it. ⚠️ Reported, never enforced. A legitimate corporate colour can be mid-grey, and refusing to save it would…

Kuskuren da wannan matsaya za ta iya maido wa

401 · 403 · 404 · 422 · 429