reseller

PUT /v1/reseller/brand

Set the identity your clients see.

모든 reseller 엔드포인트

인증

Bearer 토큰으로 API 키를 전송하세요. 키는 반드시 reseller.manage 권한을 가지고 있어야 하며, 권한이 없는 키는 404가 아닌 403으로 거부됩니다.

조직 ID가 들어가는 위치

이 엔드포인트는 org_id을(를) 쿼리 매개변수로 사용합니다. 생략하면 테넌트 하위 트리 전체가 호출 대상이 되며, 값을 전달하면 특정 조직으로 호출 범위를 좁힐 수 있습니다.

조직 ID는 대시보드의 API 키 화면에서 키 바로 옆에 있습니다. 이는 실행하는 모든 호출에서 동일한 ID입니다.

무료 체험하기

대괄호 안에 있는 모든 내용을 사용자 지정 값으로 바꾸고, 키 플레이스홀더는 대시보드의 키로 바꾸세요.

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

로그인하셨나요? 대시보드의 API 콘솔이 실제 조직 ID와 본인의 키를 자동으로 채우고 라이브 API를 대상으로 요청을 실행하므로 실제 응답을 확인할 수 있습니다. API 콘솔에서 이 엔드포인트를 여세요

상세 정보

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.

매개변수

이름유형필수설명
org_id (query)Uuid아니요The 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…

요청 본문

이름유형필수설명
namestringWhat your clients are told they are using. Never blank.
primary_colourstring아니요
support_urlstring아니요
status_urlstring아니요
paletteobject아니요Named 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, >아니요
font_keystring아니요
font_google_familystring아니요Install 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, >아니요
densitystring<comfortable, compact, >아니요
corner_radiusstring<soft, square, >아니요
colour_schemestring<system, light, dark, >아니요
favicon_sha256string아니요
email_logo_sha256string아니요
dns_nameserversstring[]아니요Your 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.

응답

이름유형필수설명
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[]
paletteobject아니요Named 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, >아니요`catalogue` for one of `font_catalogue`, `google` for a family we self-host.
font_keystring아니요The catalogue key when `font_source` is `catalogue`.
font_google_familystring아니요A 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, >아니요
densitystring<comfortable, compact, >아니요
corner_radiusstring<soft, square, >아니요
colour_schemestring<system, light, dark, >아니요The 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_sha256string아니요A 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_urlstring아니요
email_logo_sha256string아니요The 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_urlstring아니요
dns_nameserversstring[]아니요Your **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[]아니요The 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_optionsobject아니요The allowed values for each layout choice, keyed by field name.
palette_tokensstring[]아니요The colour tokens `palette` may name.
accent_contrastBrandAccentContrast아니요How 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…

이 엔드포인트가 반환할 수 있는 오류

401 · 403 · 404 · 422 · 429