Skip to main content

Provider profile

The provider profile is your consumer-visible general information and general terms: GET /provider/v1/provider-profile. Your app links and your terms and privacy URLs live only in the profile, not on voucher sets. On a consumer’s landing page, end customers first see every provider the link offers; your header shows your logo, name, tagline, App Store and Google Play buttons and your terms, privacy and website links, and each voucher set’s details (with its own voucher terms, termsText) open in a dialog that can repeat those links. The profile changes only through approved change requests (POST /provider/v1/provider-profile/change-requests, manage-provider-profile); PUT and PATCH on the profile answer 405. Before the first approval live is null. The changelog is GET /provider/v1/provider-profile/changelog.

Listing branding

Listing branding is how you look inside consumer catalogs and on their landing pages: GET /provider/v1/listing-branding. It also changes only through approved change requests (…/listing-branding/change-requests).
  • Colours: primaryColor, secondaryColor, backgroundColor, surfaceColor, textColor, accentColor, buttonColor, buttonTextColor, buttonBorderColor, each #rrggbb (field code invalid-color). A text-on-background contrast below 4.5:1 is a warning on the change request, not an error.
  • Images: logoAssetId, logoDarkAssetId, iconAssetId, heroImageAssetId, ids of your own ready brand assets.
  • fontFamily, cornerRadius, and extensions (keys x-* or <consumerSlug>.*).
  • The response adds assets and assetUrls (URL, width and height of each image) for rendering.
Brand assets are uploaded in two steps; files never pass through the API:
  1. POST /provider/v1/brand-assets with kind (logo, logo-dark, icon, hero), contentType (image/png, image/jpeg, image/webp; no SVG), sizeBytes (up to 2 MiB, hero 5 MiB) and sha256. The answer has an uploadTarget.
  2. PUT the image to uploadTarget.url with its headers, then POST /provider/v1/brand-assets/{brandAssetId}:complete.
  3. Poll the asset until status is ready (or rejected with rejectionReason: image-too-large, unsupported-format, dimensions-out-of-range, checksum-mismatch, upload-expired). Images are re-encoded and stripped of metadata; logos and icons up to 2048 × 2048 pixels, hero images up to 4096 × 4096, at least 32 × 32.
A partner can hold 500 assets (ready ones plus uploads younger than an hour). Delete unused assets with DELETE; an asset still in use → 409 brand-asset-in-use with more.references listing where. Voucher sets can override colours, logo and hero image with brandingOverride.

Workspace branding

Workspace branding themes your own dashboards: GET /partner/v1/branding/workspace (readable by any member or API key) and PUT /partner/v1/branding/workspace (manage-workspace-branding, delegable).
  • No approval: a PUT takes effect within 60 seconds. The first save answers 201, later ones 200.
  • Same colour fields as listing branding, plus faviconAssetId and emailLogoAssetId; assets are managed under /partner/v1/brand-assets (kinds also favicon and email-logo).
  • textColor on backgroundColor and buttonTextColor on buttonColor need a contrast of at least 4.5:1, otherwise 422 insufficient-contrast.
  • Texts are checked on save; see Content rules for 422 content-blocked.