reseller

PUT /v1/reseller/brand

Set the identity your clients see.

Bütün reseller nöqtələri

Doğrulama

API açarını bearer token kimi göndərin. Açar reseller.manage icazəsinə malik olmalıdır; bu icazəsi olmayan açar 404 deyil, 403 xətası ilə rədd edilir.

Təşkilatınızın identifikatorunun yerləşdiyi yer

Bu son nöqtə sorğu parametri kimi org_id qəbul edir. Onu buraxın və sorğu bütün kirayə alt ağacınızı əhatə etsin; sorğunu bir təşkilatla məhdudlaşdırmaq üçün onu göndərin.

Təşkilatınızın identifikatoru idarə panelinizdəki API açarları ekranında, açarın özünün yanında yerləşir. Bu, etdiyiniz hər bir sorğuda eyni identifikatordur.

Sınaqdan keçir

Bucaqlı mötərizələrdə olan hór şeyi öz qiymətlərinizlə, açar yertutucusunu isə idarə panelinizdən bir açarla əvəz edin.

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

Sistemə daxil olmusunuz? İdarə panelinizdəki API konsolu real təşkilatınızın identifikatorunu və öz açarınızı avtomatik doldurur, sorğunu canlı API-yə qarşı icra edir ki, siz faktiki cavabı görə biləsiniz. Bu son nöqtəni API konsolunda açın

Təfərrüatlar

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.

Parametrlər

AdTipTələb olunurNədir
org_id (query)UuidXeyrThe 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…

Sorğu gövdəsi

AdTipTələb olunurNədir
namestringBəliWhat your clients are told they are using. Never blank.
primary_colourstringXeyr
support_urlstringXeyr
status_urlstringXeyr
paletteobjectXeyrNamed 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, >Xeyr
font_keystringXeyr
font_google_familystringXeyrInstall 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, >Xeyr
densitystring<comfortable, compact, >Xeyr
corner_radiusstring<soft, square, >Xeyr
colour_schemestring<system, light, dark, >Xeyr
favicon_sha256stringXeyr
email_logo_sha256stringXeyr
dns_nameserversstring[]XeyrYour 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.

Cavab

AdTipTələb olunurNədir
configuredbooleanBəliWhether a brand row exists yet. False renders an empty form, not a 404.
entitledbooleanBəliWhether white-label is on this org's plan at all.
namestringBəli
logo_urlstringBəli
primary_colourstringBəli
support_urlstringBəli
status_urlstringBəli
panel_hostnamestringBəliRead-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_activebooleanBəliWhether 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_statusstringBəliThe edge's own status word, for display. Never branch on it.
panel_hostname_recordsBrandDnsRecord[]Bəli
sending_domainstringBəliRead-only here — provisioned on `/v1/reseller/brand/sending-domain`, because an unverified domain does not deliver.
sending_domain_verifiedbooleanBəliRead-only. The mail provider's answer, not a setting.
sending_domain_statusstringBəliThe provider's own status word, for display. Never branch on it.
sending_domain_recordsBrandDnsRecord[]Bəli
paletteobjectXeyrNamed 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, >Xeyr`catalogue` for one of `font_catalogue`, `google` for a family we self-host.
font_keystringXeyrThe catalogue key when `font_source` is `catalogue`.
font_google_familystringXeyrA 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, >Xeyr
densitystring<comfortable, compact, >Xeyr
corner_radiusstring<soft, square, >Xeyr
colour_schemestring<system, light, dark, >XeyrThe 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_sha256stringXeyrA 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_urlstringXeyr
email_logo_sha256stringXeyrThe 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_urlstringXeyr
dns_nameserversstring[]XeyrYour **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[]XeyrThe 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_optionsobjectXeyrThe allowed values for each layout choice, keyed by field name.
palette_tokensstring[]XeyrThe colour tokens `palette` may name.
accent_contrastBrandAccentContrastXeyrHow 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 son nöqtənin qaytara biləcəyi xətalar

401 · 403 · 404 · 422 · 429