Data model
The API keeps four things visibly separate, so you always know what a number is built on.
| Layer | Answers |
|---|---|
| Evidence | What was observed, from where, and how reliably. |
| Normalised data | The clean, comparable value once the evidence is processed. |
| Derived intelligence | What the value means once it is benchmarked, ranked and turned into signals. |
| Scores | The synthesised judgement: topic scores, the four dimensions and the overall RBSI. |
Entities
The API exposes four entities: brands, malls, operators (the owners and operators of malls) and stores (a brand in a place). A brand trades in malls, a mall belongs to operators, and a store joins a brand to a mall or a street.
From source to score
Source → Evidence → Data point → Benchmark → Rank → Topic → Dimension → RBSI
↘ Signals ↗| Level | What it holds |
|---|---|
| Data | Data points: value, unit, when it was observed. |
| Evidence | How reliable and meaningful a value is: source, confidence, verification status, freshness, benchmark and rank. |
| Intelligence | Signals, topic scores and ranks, the four dimensions, key drivers and trends. |
| RBSI | The overall assessment: score, previous score, change, trend and confidence. |
The four dimensions
Every brand score is built from four dimensions on the same 0 to 10,000 scale: Strength, Momentum, Affinity and Risk. Risk can limit the overall score regardless of the other three. Scoring rules are defined once, in the Retail Brands scoring specification, and the API only returns their result.
Data points
Everything the API returns as an individual item is a data point with a stable register identifier and an api_slug of the form <entity>.<topic>.<name>. The catalogue is available at GET /data-points and every observed value says how it was acquired:
| Method | Meaning |
|---|---|
pulled | Retrieved directly from a source. |
deducted | Calculated or inferred from other observations, and marked as such with a confidence. Signals and scores are always deducted. |
manual | Entered or verified by an analyst. |
Where several sources agree, that shows in confidence rather than in a separate method. Each data point also has a refresh rate (daily, weekly, monthly, quarterly, annual or event-driven), a level (the lowest access level that includes it) and governance fields: sensitivity (normal, sensitive, critical), confirmation_level and verification_mode.
Signals
Signals are interpreted events derived from the data: an expansion, a leadership change, a legal issue. Each has a category, a title, a summary and its sources.
Objects
Brand
A monitored brand.
| Field | Type | Description |
|---|---|---|
id | string | The brand slug, stable and URL-safe. |
slug | string | Same as id. |
name | string | Display name. |
category | string | null | Primary category. |
sub_category | string | null | |
region | string | null | Home region. |
hq | string | null | Country of the headquarters. |
countries | array | ISO country codes with confirmed stores. |
score | object | null | Headline score: rbsi, previous, change, trend. |
updated_at | string | null | When the brand was last evaluated (ISO 8601). |
Score
The Retail Brands Score Index and what it is made of.
| Field | Type | Description |
|---|---|---|
rbsi | integer | Overall score on a 0 to 10,000 scale. |
previous | integer | null | The previous evaluation. |
change | integer | null | rbsi minus previous. |
trend | "up" | "down" | "flat" | Direction since the previous evaluation. |
confidence | "low" | "medium" | "high" | How well the score is supported by evidence. |
dimensions | object | Level 2+. `strength`, `momentum`, `affinity`, `risk`, each on the same scale. |
drivers | array | Level 3. The topics that moved the score, with direction and weight. |
evaluated_at | string | ISO 8601. |
Signal
An interpreted event on a brand, derived from evidence.
| Field | Type | Description |
|---|---|---|
id | string | Signal identifier (UUID). |
brand_id | string | The brand slug. |
brand_name | string | |
category | string | Signal category. |
title | string | Headline. |
summary | string | The short answer: what it means. |
status | string | null | Increasing, Emerging, Stable... |
direction | string | null | Accelerating, Steady or Decelerating. |
importance | string | null | |
markets | array | Countries concerned. |
published_at | string | null | ISO 8601. |
source_names | array | Names of up to two sources. |
source_count | integer | Number of sources behind the signal. |
DataPoint
An entry of the data point catalogue.
| Field | Type | Description |
|---|---|---|
id | string | Register id, for example `B-RDP-412` (entity B, M, O or S; type RDP, REG, SIG…). |
api_slug | string | `<entity>.<topic>.<name>`. |
method | "pulled" | "deducted" | "manual" | How it is acquired (see Data model). |
level | 1 | 2 | 3 | The lowest access level that includes it. |
refresh | string | daily, weekly, monthly, quarterly, annual or event-driven. |
sensitivity | "normal" | "sensitive" | "critical" | Governance field. |
DataPointValue
An observed value with what it is built on.
| Field | Type | Description |
|---|---|---|
data_point | string | The data point api_slug. |
value | any | The value, typed by the data point. |
unit | string | null | Unit of the value. |
method | string | pulled, deducted or manual. |
confidence | string | low, medium or high. |
observed_at | string | When the value was observed. |
verification_status | string | unverified, verified or conflicted. |
evidence | array | Level 3. Sources behind the value. |
Mall
A shopping centre.
| Field | Type | Description |
|---|---|---|
id | string | The mall slug, stable and URL-safe. |
name | string | |
country | string | null | ISO alpha-2. |
region | string | null | |
type | string | null | Shopping mall, Outlet mall or Retail park. |
gla_m2 | number | null | Gross leasable area in square metres. |
operators | array | Owners and operators: id, name. |
brands | object | monitored: number of monitored brands trading there. |
stores | integer | Stores of monitored brands. |
Operator
An owner or operator of malls.
| Field | Type | Description |
|---|---|---|
id | string | The operator slug, stable and URL-safe. |
slug | string | Same as id. |
name | string | |
website | string | null | |
malls | integer | Malls in the published portfolio. |
brands | object | total brands trading in its malls, monitored among them. |
stores | integer | Stores of monitored brands. |
countries | array | ISO country codes of its malls. |
Store
A brand in a place.
| Field | Type | Description |
|---|---|---|
id | string | `sto_…` |
brand_id | string | |
mall_id | string | null | Null for a street store. |
address | string | null | |
country | string | ISO alpha-2. |
status | "open" | "closed" | "unknown" |