Upload a customer portal logo
Stores an uploaded PNG, JPEG or WebP logo (at most 256 KB) and writes its own address onto the customer-portal builder’s draft logoUrl field (logoDarkUrl with variant: "dark"), seeding the rest of the draft from your live portal the first time it is ever written, same as PATCH /account/portal/draft. Paste a URL instead through that route for an SVG logo - there is no sanitizer here for one. POST /account/portal/publish copies the result onto your live portal, same as any other draft field.
apiKeyAuthorizationBearer <token>An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.
application/json- body
dataUrl*stringA data: URL, such as FileReader.readAsDataURL() produces in a browser. The declared mime type in it is ignored - the real type is read from the file’s own bytes
variant?stringdark for the logo drawn on a dark background
"light""light""dark"Success
application/json- response
Success
portalDraft*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
curl -X POST "https://example.com/v1/account/portal/logo" \ -H "Content-Type: application/json" \ -d '{ "dataUrl": "string" }'{ "portalDraft": { "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 }}Discard the customer portal draft POST
Overwrites the customer-portal builder’s draft with your live portal’s own values, exactly - restoring the last published state. Your live portal is untouched either way.
Get the tax rules GET
Your own tax rules (issue #341): the first rule whose country, region and business all match a customer decides what a new invoice bills them. Rules are tried in this order. Empty is a valid, intentional configuration: every invoice carries no tax until you add one.