Skip to content

Location Config & Overrides

GET /v1/{companyId}/location/{locationId}

Returns the resolved partner integration configuration for a specific company or location.

If locationId is equal to companyId, the endpoint returns the company-level configuration.

GET /v1/12345/location/12345

When locationId differs from companyId, the endpoint returns the location-level configuration.

GET /v1/12345/location/67890
{
"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:

  1. Defaults — system-level baseline config
  2. Company config — overrides applied to all locations under the company
  3. Location config — overrides applied to a specific location (highest priority)
  • variantAssetConfig: location config fully replaces company config values.
  • allowedFields: location config fully replaces company config values for labels, badges, and displayNameOverrides.
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:

  1. BPD (BudSense Product Database) — canonical product data is the base layer
  2. Company variant overrides — company-specific field values applied on top
  3. Company display attributes — display-level overrides from the company scope
  4. 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.

  • A variant’s name and its parentProductName can be overridden. parentProductName resolves location display name, then company display name, then the parent product’s own name; display name overrides apply only when displayNameOverrides is enabled.

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

Each variant’s asset types come from variantAssetConfig, resolved in this order:

  1. Variant type entry — the entry keyed by the variant’s variantType. A variant with no variantType reads the entry keyed by an empty string (""), so typeless variants can be configured there.
  2. System default — Product, ComboProduct, and PrimaryBrand, one asset each. Used when there is no entry; an entry with no asset types is treated as absent.

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:

  • order is a rank starting at 1; lower values should be pulled first. Entries are also returned sorted by order.
  • Ranks are scoped to a variant type and may differ between variant types (for example, ComboProduct may 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 assets map.