reseller

PUT /v1/reseller/brand

Set the identity your clients see.

Tüm reseller uç noktaları

Kimlik Doğrulama

Bearer token olarak bir API anahtarı gönderin. Anahtar reseller.manage iznine sahip olmalıdır; bu izne sahip olmayan bir anahtar 404 ile değil, 403 ile reddedilir.

Kurum kimliğinizin yazılacağı yer

Bu uç nokta, org_id parametresini bir sorgu parametresi olarak alır. Bu parametreyi dışarıda bırakırsanız çağrı tüm kiracı alt ağacınızı kapsar; çağrıyı tek bir kuruluşa daraltmak için gönderin.

Kuruluş kimliğiniz (id), kontrol panelinizdeki API anahtarları ekranında, anahtarın hemen yanında yer alır. Yaptığınız her çağrıda aynı kimlik kullanılır.

Dene

Köşeli parantez içindeki her şeyi kendi değerlerinizle ve anahtar yer tutucusunu panonuzdan bir anahtarla değiştirin.

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

Oturum açtınız mı? Panonuzdaki API konsolu, gerçek organizasyon kimliğinizi ve kendi anahtarınızı otomatik olarak doldurur ve isteği canlı API üzerinde çalıştırarak gerçek yanıtı görmenizi sağlar. Bu uç noktayı API konsolunda açın

Ayrıntılar

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.

Parametreler

AdTürZorunluNe olduğu
org_id (query)UuidHayırThe 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 agen…

İstek gövdesi

AdTürZorunluNe olduğu
namestringEvetWhat your clients are told they are using. Never blank.
primary_colourstringHayır
support_urlstringHayır
status_urlstringHayır
paletteobjectHayırNamed 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, >Hayır
font_keystringHayır
font_google_familystringHayırInstall 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, >Hayır
densitystring<comfortable, compact, >Hayır
corner_radiusstring<soft, square, >Hayır
colour_schemestring<system, light, dark, >Hayır
favicon_sha256stringHayır
email_logo_sha256stringHayır
dns_nameserversstring[]HayırYour 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.

Yanıt

AdTürZorunluNe olduğu
configuredbooleanEvetWhether a brand row exists yet. False renders an empty form, not a 404.
entitledbooleanEvetWhether white-label is on this org's plan at all.
namestringEvet
logo_urlstringEvet
primary_colourstringEvet
support_urlstringEvet
status_urlstringEvet
panel_hostnamestringEvetRead-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_activebooleanEvetWhether 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 engi…
panel_hostname_statusstringEvetThe edge's own status word, for display. Never branch on it.
panel_hostname_recordsBrandDnsRecord[]Evet
sending_domainstringEvetRead-only here — provisioned on `/v1/reseller/brand/sending-domain`, because an unverified domain does not deliver.
sending_domain_verifiedbooleanEvetRead-only. The mail provider's answer, not a setting.
sending_domain_statusstringEvetThe provider's own status word, for display. Never branch on it.
sending_domain_recordsBrandDnsRecord[]Evet
paletteobjectHayırNamed 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 CS…
font_sourcestring<catalogue, google, >Hayır`catalogue` for one of `font_catalogue`, `google` for a family we self-host.
font_keystringHayırThe catalogue key when `font_source` is `catalogue`.
font_google_familystringHayırA 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 th…
nav_positionstring<side, top, >Hayır
densitystring<comfortable, compact, >Hayır
corner_radiusstring<soft, square, >Hayır
colour_schemestring<system, light, dark, >HayırThe 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_sha256stringHayırA 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_urlstringHayır
email_logo_sha256stringHayırThe 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_urlstringHayır
dns_nameserversstring[]HayırYour **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 nameser…
font_catalogueobject[]HayırThe 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_optionsobjectHayırThe allowed values for each layout choice, keyed by field name.
palette_tokensstring[]HayırThe colour tokens `palette` may name.
accent_contrastBrandAccentContrastHayırHow 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 woul…

Bu uç noktanın dönderebileceği hatalar

401 · 403 · 404 · 422 · 429