reseller

PUT /v1/reseller/brand

Set the identity your clients see.

Tất cả các điểm cuối reseller

Xác thực

Gửi khóa API dưới dạng mã thông báo bearer. Khóa này phải có quyền reseller.manage; khóa không có quyền này sẽ bị từ chối với mã lỗi 403, không phải 404.

Nơi điền id tổ chức của bạn

Điểm cuối này nhận org_id làm tham số truy vấn. Hãy bỏ trống để áp dụng cho toàn bộ cây thuê của bạn; hoặc truyền giá trị vào để thu hẹp phạm vi gọi về một tổ chức duy nhất.

Mã tổ chức của bạn nằm ở màn hình khóa API trong bảng điều khiển, ngay bên cạnh khóa đó. Đây là cùng một mã trong mọi lệnh gọi mà bạn thực hiện.

Dùng thử

Thay thế bất kỳ nội dung nào trong ngoعل (angle brackets) bằng giá trị của riêng bạn và trình giữ chỗ key bằng một key từ trang tổng quan của bạn.

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

Đã đăng nhập? Bảng điều khiển API trong trang quản lý của bạn sẽ tự điền ID tổ chức thực tế và khóa của riêng bạn, sau đó chạy yêu cầu đối với API trực tiếp để bạn có thể xem phản hồi thực tế. Mở điểm cuối này trong bảng điều khiển API

Chi tiết

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.

Tham số

TênLoạiBắt buộcNội dung này là gì
org_id (query)UuidKhôngThe 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…

Nội dung yêu cầu

TênLoạiBắt buộcNội dung này là gì
namestringWhat your clients are told they are using. Never blank.
primary_colourstringKhông
support_urlstringKhông
status_urlstringKhông
paletteobjectKhôngNamed 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, >Không
font_keystringKhông
font_google_familystringKhôngInstall 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, >Không
densitystring<comfortable, compact, >Không
corner_radiusstring<soft, square, >Không
colour_schemestring<system, light, dark, >Không
favicon_sha256stringKhông
email_logo_sha256stringKhông
dns_nameserversstring[]KhôngYour 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.

Phản hồi

TênLoạiBắt buộcNội dung này là gì
configuredbooleanWhether a brand row exists yet. False renders an empty form, not a 404.
entitledbooleanWhether white-label is on this org's plan at all.
namestring
logo_urlstring
primary_colourstring
support_urlstring
status_urlstring
panel_hostnamestringRead-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_activebooleanWhether 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_statusstringThe edge's own status word, for display. Never branch on it.
panel_hostname_recordsBrandDnsRecord[]
sending_domainstringRead-only here — provisioned on `/v1/reseller/brand/sending-domain`, because an unverified domain does not deliver.
sending_domain_verifiedbooleanRead-only. The mail provider's answer, not a setting.
sending_domain_statusstringThe provider's own status word, for display. Never branch on it.
sending_domain_recordsBrandDnsRecord[]
paletteobjectKhôngNamed 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, >Không`catalogue` for one of `font_catalogue`, `google` for a family we self-host.
font_keystringKhôngThe catalogue key when `font_source` is `catalogue`.
font_google_familystringKhôngA 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, >Không
densitystring<comfortable, compact, >Không
corner_radiusstring<soft, square, >Không
colour_schemestring<system, light, dark, >KhôngThe 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_sha256stringKhôngA 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_urlstringKhông
email_logo_sha256stringKhôngThe 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_urlstringKhông
dns_nameserversstring[]KhôngYour **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[]KhôngThe 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_optionsobjectKhôngThe allowed values for each layout choice, keyed by field name.
palette_tokensstring[]KhôngThe colour tokens `palette` may name.
accent_contrastBrandAccentContrastKhôngHow 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…

Các lỗi điểm cuối này có thể trả về

401 · 403 · 404 · 422 · 429