Update the customer portal
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.
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?|Must be https
logoDarkUrl?|The logo on a dark background. Must be https; null, logoUrl on both
accentColor?|nullsupportEmail?|nullemailFromName?|The from-name on mail to your customers
termsUrl?|Must be https
privacyUrl?|Must be https
selfSignup?|Whether a storefront visitor may open an account unasked
allow?array<>|The full new list, replacing any you had. Empty leaves customers read-only
products?array<>|The full new list, replacing any you had. Only lines your own account can order: ticking one here never grants one you do not hold
How your customer portal and storefront look, and what your customers may do there
application/json- response
How your customer portal and storefront look, and what your customers may do there
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
url*stringWhere this side of the account answers to customers. Read-only, and computed from your slug: live and sandbox have their own
publishedAt*|When the builder’s draft was last published to this live document. Null means never, through the builder - set only by POST /account/portal/publish
date-timecurl -X PATCH "https://example.com/v1/account/portal" \ -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, "url": "https://northwind.portal.example", "publishedAt": null}Get the account overview GET
What you hold, what needs you and what renews by itself over the next 30 days, counted across every page. Each part your role cannot see comes back empty.
Update the customer portal draft PATCH
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.