reseller

PUT /v1/reseller/brand

Set the identity your clients see.

Barcha reseller yakuniy nuqtalari

Autentifikatsiya

API kalitini bearer token sifatida yuboring. Kalit reseller.manage ruxsatiga ega boʻlishi shart; ruxsatsiz kalit 404 emas, balki 403 xatosi bilan rad etiladi.

Tashkilotingiz identifikatori kiritiladigan joy

Bu soʻrovnoma oxiri org_id parametrini soʻrov parametri sifatida qabul qiladi. Uni kiritmasangiz, chaqiruv butun ijarachi quyi daraxtingizni qamrab oladi; uni bitta tashkilotga cheklash uchun yuboring.

Tashkilotingiz identifikatori boshqaruv panelingizdagi API kalitlari ekranida, kalitning o'z yonida joylashgan. Bu siz amalga oshiradigan har bir so'rovda bir xil identifikator hisoblanadi.

Sinab ko'rish

Qavslardagi har qanday narsani o'z qiymatlaringiz bilan, kalit pleysxolderini эsa boshqaruv panelingizdagi kalit bilan almashtiring.

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

Tizimga kirganmisiz? Boshqaruv panelingizdagi API konsoli haqiqiy tashkilot ID raqamingiz va shaxsiy kalitingizni avtomatik to'ldiradi hamda haqiqiy javobni ko'rishingiz uchun so'rovni jonli API orqali bajaradi. Ushbu yakuniy nuqtani API konsolida oching

Tafsilotlar

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.

Parametrlar

NomiTuriMajburiyNima bu
org_id (query)UuidYo'qThe 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…

Soʻrov tanasi

NomiTuriMajburiyNima bu
namestringHaWhat your clients are told they are using. Never blank.
primary_colourstringYo'q
support_urlstringYo'q
status_urlstringYo'q
paletteobjectYo'qNamed 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, >Yo'q
font_keystringYo'q
font_google_familystringYo'qInstall 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, >Yo'q
densitystring<comfortable, compact, >Yo'q
corner_radiusstring<soft, square, >Yo'q
colour_schemestring<system, light, dark, >Yo'q
favicon_sha256stringYo'q
email_logo_sha256stringYo'q
dns_nameserversstring[]Yo'qYour 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.

Javob

NomiTuriMajburiyNima bu
configuredbooleanHaWhether a brand row exists yet. False renders an empty form, not a 404.
entitledbooleanHaWhether white-label is on this org's plan at all.
namestringHa
logo_urlstringHa
primary_colourstringHa
support_urlstringHa
status_urlstringHa
panel_hostnamestringHaRead-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_activebooleanHaWhether 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_statusstringHaThe edge's own status word, for display. Never branch on it.
panel_hostname_recordsBrandDnsRecord[]Ha
sending_domainstringHaRead-only here — provisioned on `/v1/reseller/brand/sending-domain`, because an unverified domain does not deliver.
sending_domain_verifiedbooleanHaRead-only. The mail provider's answer, not a setting.
sending_domain_statusstringHaThe provider's own status word, for display. Never branch on it.
sending_domain_recordsBrandDnsRecord[]Ha
paletteobjectYo'qNamed 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, >Yo'q`catalogue` for one of `font_catalogue`, `google` for a family we self-host.
font_keystringYo'qThe catalogue key when `font_source` is `catalogue`.
font_google_familystringYo'qA 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, >Yo'q
densitystring<comfortable, compact, >Yo'q
corner_radiusstring<soft, square, >Yo'q
colour_schemestring<system, light, dark, >Yo'qThe 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_sha256stringYo'qA 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_urlstringYo'q
email_logo_sha256stringYo'qThe 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_urlstringYo'q
dns_nameserversstring[]Yo'qYour **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[]Yo'qThe 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_optionsobjectYo'qThe allowed values for each layout choice, keyed by field name.
palette_tokensstring[]Yo'qThe colour tokens `palette` may name.
accent_contrastBrandAccentContrastYo'qHow 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…

Ushbu yakuniy nuqta qaytarishi mumkin bo'lgan xatolar

401 · 403 · 404 · 422 · 429