Servers (OpenAPI)

The published OpenAPI spec includes:
ServerUse case
Productionhttps://api.hofj.com — live traffic only for integrations you have approved.
Staginghttps://staging.api.hofj.com — partner integration and QA.
Localhttp://localhost:8080 — run npm run dev from the monorepo with apps/bff/.env pointed at your upstream CMS.
In Mintlify’s API Reference tab, pick the server dropdown before Try it.

BFF environment (local)

Copy apps/bff/.env.example to apps/bff/.env and set at minimum:
  • CONTENT_BASE_URL — content CMS base URL (no /api suffix).
  • Offset / checkout routes (e.g. v2-products): CONTENT_PRODUCTS_V2_RESOURCE, CONTENT_PAGINATION_STYLE=offset, CONTENT_CHECKOUT_HEADER=1, CONTENT_DEFAULT_CHANNEL_DOMAIN, CONTENT_DEFAULT_LOCALE, and CONTENT_TENANT_ROUTING_HEADER when your upstream uses a tenant header.
  • Recommendations: set RECOMMENDER_API_BASE_URL and RECOMMENDER_API_KEY server-side. The key is never sent to API clients.
For staging, use:
CONTENT_BASE_URL=https://backoffice.staging.weebora.com
CONTENT_DEFAULT_CHANNEL_DOMAIN=staging.weebora.com
CHECKOUT_PROXY_ALLOWED_BRANDS=staging.weebora.com,staging.tennis.weebora.com,staging.hofj.com
RECOMMENDER_API_BASE_URL=https://staging.recommender-api.hofj.com
The staging CMS currently returns these channel domains from /v1/distribution-channels: staging.weebora.com, staging.tennis.weebora.com, and staging.hofj.com. You can still pass the channel name, for example brand=Weebora, and the API resolves it to the staging domain. See the main repository README for the full table.

Versioning

  • URL versioning: /v1, /v2, …
  • Additive changes stay in the same major version; breaking changes require a new major path and a migration note.
See Deprecation policy in the repo.

CORS

If you call the API from a browser (web app or Mintlify Try it with playground.proxy: false), the BFF must allow your docs/app origin via CORS (DOCS_SITE_URL / CORS_ALLOWED_ORIGINS). Server-to-server integrations do not use CORS.