Location Config & Overrides
Location Config Endpoint
Section titled “Location Config Endpoint”GET /v1/{companyId}/location/{locationId}
Returns the resolved partner integration configuration for a specific company or location.
Company-Scoped Requests
Section titled “Company-Scoped Requests”If locationId is equal to companyId, the endpoint returns the company-level configuration.
GET /v1/12345/location/12345Location-Scoped Requests
Section titled “Location-Scoped Requests”When locationId differs from companyId, the endpoint returns the location-level configuration.
GET /v1/12345/location/67890Response Shape
Section titled “Response Shape”{ "companyId": "12345", "locationId": "67890", "clientId": "PARTNER_ID", "variantAssetConfig": { "Flower": [ { "assetType": "Product", "limit": 1, "order": 1 }, { "assetType": "PrimaryBrand", "limit": 1, "order": 2 } ], ... }, "allowedFields": { "labels": true, "badges": false, "displayNameOverrides": false }}| Field | Description |
|---|---|
companyId |
Company identifier as a string |
locationId |
Location identifier as a string. Equals companyId for company-scoped requests |
clientId |
Your partner client identifier |
variantAssetConfig |
Asset configuration keyed by variant type. Controls which asset types and how many are returned per variant, and the order to pull them in. Each entry has assetType, limit, and order (see Asset Priority) |
allowedFields |
Feature flags indicating which optional data fields and overrides are enabled for this scope |
Config Resolution: Default → Company → Location
Section titled “Config Resolution: Default → Company → Location”Partner integration configs are resolved using a layered merge strategy with lowest to highest priority:
- Defaults — system-level baseline config
- Company config — overrides applied to all locations under the company
- Location config — overrides applied to a specific location (highest priority)
How Merging Works
Section titled “How Merging Works”variantAssetConfig: location config fully replaces company config values.allowedFields: location config fully replaces company config values forlabels,badges, anddisplayNameOverrides.
Scope Behavior
Section titled “Scope Behavior”| Request Type | Resolution Layers |
|---|---|
locationId omitted or locationId == companyId |
Default -> Company |
locationId differs from companyId |
Default -> Company -> Location |
Variant Data Overrides (Batch Get Variants, webhook payloads)
Section titled “Variant Data Overrides (Batch Get Variants, webhook payloads)”Variant records returned by POST /v1/{companyId}/variants/batch-get, or through webhooks, follow the same layered override pattern:
- BPD (BudSense Product Database) — canonical product data is the base layer
- Company variant overrides — company-specific field values applied on top
- Company display attributes — display-level overrides from the company scope
- Location display attributes — display-level overrides from the location scope (highest priority)
After overrides are applied, unit-of-measure normalization (CUOM/TUOM) is applied based on the resolved company configuration.
What Can Be Overridden
Section titled “What Can Be Overridden”- A variant’s
nameand itsparentProductNamecan be overridden.parentProductNameresolves location display name, then company display name, then the parent product’s own name; display name overrides apply only whendisplayNameOverridesis enabled.
Catalog Source
Section titled “Catalog Source”Each field in a variant response includes a catalogSource map that indicates where the value came from:
| Value | Meaning |
|---|---|
BPD |
Value from the BudSense Product Database |
Company |
Value from a company-level override |
Location |
Value from a location-level override |
Asset Resolution
Section titled “Asset Resolution”Each variant’s asset types come from variantAssetConfig, resolved in this order:
- Variant type entry — the entry keyed by the variant’s
variantType. A variant with novariantTypereads the entry keyed by an empty string (""), so typeless variants can be configured there. - System default —
Product,ComboProduct, andPrimaryBrand, one asset each. Used when there is no entry; an entry with no asset types is treated as absent.
Asset Priority
Section titled “Asset Priority”Variant assets and brandAssets are returned as maps keyed by asset type, so the variant response itself carries no ordering. Each entry in
variantAssetConfig[variantType] includes an order value that publishes the intended priority for that variant type:
orderis a rank starting at1; lower values should be pulled first. Entries are also returned sorted byorder.- Ranks are scoped to a variant type and may differ between variant types (for example,
ComboProductmay rank first for one variant type and last for another). - The order comes from the retailer’s asset priority configured during partner setup, with any variant-type-specific preference pulled to the front. It is deterministic: the same configuration always returns the same values.
- Applying the sort is the partner’s responsibility. BudSense publishes the order but does not reorder the variant
assetsmap.