Update the customer portal draft
The customer-portal builder’s own draft (design §4): every field PATCH /account/portal accepts, plus the builder’s own appearance, content and access fields. Written only here, never to your live portal - POST /account/portal/publish copies it across when you are ready. Send only what changes; null clears a field, putting it back on its default. Live and sandbox keep their own draft, same as the live portal.
apiKeyAuthorizationBearer <token>An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.
application/json- body
enabled?|Turning this off answers the same 404 as an address no reseller holds
brandName?|nulllogoUrl?|nulllogoDarkUrl?|nullaccentColor?|nullsupportEmail?|nullemailFromName?|nulltermsUrl?|nullprivacyUrl?|nullselfSignup?boolean|nullallow?array<>|nullproducts?array<>|nulltheme?|nullfontPair?|nullheadline?|nullintro?|nullbanner?|nullproductOrder?array<>|nulltermsMode?|nulltermsText?|nullprivacyMode?|nullprivacyText?|nullfaq?array<>|nullpricesBeforeSignIn?boolean|nullrequireEmailVerification?boolean|nullThe portal builder’s own draft: what Publish will copy onto your live portal. Edited by PATCH /account/portal/draft, and only ever reaches customers once you publish it
application/json- response
The portal builder’s own draft: what Publish will copy onto your live portal. Edited by PATCH /account/portal/draft, and only ever reaches customers once you publish it
enabled*booleanWhether the portal and storefront answer at all. On until turned off
brandName*|Shown to customers instead of your account name. Null, your account name
logoUrl*|https only
logoDarkUrl*|The logo on a dark background, https only. Null, logoUrl on both
accentColor*|#rrggbb, rendered as a CSS custom property
supportEmail*|Where customers are told to write. Null, your billing email
emailFromName*|The from-name on mail to your customers. Null, your brand name
termsUrl*string|nullprivacyUrl*string|nullselfSignup*booleanWhether a storefront visitor may open an account unasked. Off until turned on
allow*array<>What your customers may do in the portal. Empty means read-only
products*array<>The product lines your customers may browse. Empty means none
theme*stringauto forces nothing and follows the visitor’s own device, which is what happens with no field at all. light/dark force the portal, next split issue - this field is persisted and shown in the builder’s own preview now
"light""dark""auto"fontPair*stringgeist is today’s faces, unchanged. Default geist
"geist""classic""mono"headline*|The storefront home page’s own heading. Null, the builder’s computed default
intro*|One or two sentences under the headline. Null, the builder’s computed default
banner*|A short announcement above the products. Null means none, same as today
productOrder*array<>The order your product lines are drawn in, filtered to whichever are in products. Default is domains, numbers, licences, filtered the same way - today’s order
termsMode*stringWhether Terms is a link to your own page or a page written here. Default link
"link""write"termsText*|Your own words, shown when termsMode is write. Null until you write some
privacyMode*stringWhether Privacy is a link to your own page or a page written here. Default link
"link""write"privacyText*|Your own words, shown when privacyMode is write. Null until you write some
faq*array<>Questions and answers at the foot of the storefront home page. Empty means none
pricesBeforeSignIn*booleanWhether a visitor sees prices before signing in. Default true, today’s real behaviour with no field at all. Not yet wired into the real pricing gate
requireEmailVerification*booleanWhether a customer must confirm their email before they can sign in. Default true, today’s real behaviour with no field at all. Not yet wired into the real sign-in gate
curl -X PATCH "https://example.com/v1/account/portal/draft" \ -H "Content-Type: application/json" \ -d '{}'{ "enabled": true, "brandName": "Northwind", "logoUrl": "https://northwind.example/logo.svg", "logoDarkUrl": "https://northwind.example/logo-white.svg", "accentColor": "#1d4ed8", "supportEmail": "[email protected]", "emailFromName": "Northwind Support", "termsUrl": "https://northwind.example/terms", "privacyUrl": "https://northwind.example/privacy", "selfSignup": true, "allow": [ "domains.nameservers" ], "products": [ "domains" ], "theme": "light", "fontPair": "geist", "headline": "Find your domain", "intro": "Search a name across every ending we sell.", "banner": "string", "productOrder": [ "domains" ], "termsMode": "link", "termsText": "string", "privacyMode": "link", "privacyText": "string", "faq": [ { "question": "string", "answer": "string" } ], "pricesBeforeSignIn": true, "requireEmailVerification": true}Update the customer portal PATCH
How your customer portal and storefront look, and what your customers may do there. Send only what changes; `null` clears a field, putting it back on its default - your account name for `brandName`, your billing email for `supportEmail`, on for `enabled`, off for `selfSignup`, read-only for `allow`. Live and sandbox keep their own, so you can brand your sandbox and look at it first.
Publish the customer portal draft POST
Copies the customer-portal builder’s draft onto your live portal, whole: every field the draft holds, including the ones it holds at their default, replaces the matching field on the live document. Customers see the result at once. Live and sandbox publish their own draft, independently.