---
title: "Get Brands With Platforms"
method: GET
path: "/api/integrazu/data/brands-platforms"
tags: ["Integrazu Data"]
---

# Get Brands With Platforms

`GET /api/integrazu/data/brands-platforms`

Get brand + PV configuration with available Integrazu platforms.

**pv_id is REQUIRED** - filters by specific Point of Sale.

Returns exactly ONE entry per brand of the company, carrying that brand's
Integrazu export state FOR THE REQUESTED PV.

`export_state` is the discriminator the Export tab keys its layout off:

  "brand_unprovisioned"   no Integrazu_Creds row for (brand, company).
                          platforms=[]. Rendered in the grouped
                          "Marcas nao configuradas" card.
  "location_unconfigured" creds exist, but this PV has no usable
                          Z_PortalExportTokens row (idportal=13). The brand
                          HAS an Integrazu account; the point of sale was
                          never wired to an Integrazu location. Rendered as
                          the "localizacao nao configurada" banner.
  "configured"            ready to publish from this PV; `platforms` carries
                          the brand account's real per-portal `enabled`.

⛔ In the "location_unconfigured" state `platforms` still carries the whole
global catalog force-flagged `enabled: false`. That is a DELIBERATE
compatibility shim for the deploy window, not the state's meaning — the
new FE ignores it. See the inline comment on that branch before changing it.

⛔ `pv_id` in the response is always the REQUESTED pv. The matched token
row's own id_pv is `token_pv_id` (None when a brand-wide row was used), and
`token_scope` says which tier matched ("pv" | "brand" | None).

Args:
    pv_id: PontosDeVenda.ID (required). NOTE: not ownership-checked here —
           it is only ever used as a filter, and `pv_name` is resolved with
           an `IDempresa = b.idcompany` predicate so a foreign pv_id yields
           pv_name=None rather than leaking another tenant's PV name.

Returns:
    [
        {
            "brand_id": 1,
            "brand_name": "Stand ABC",
            "provisioned": true,
            "export_state": "configured",
            "location_configured": true,
            "token_scope": "pv",
            "pv_id": 10,
            "token_pv_id": 10,
            "pv_name": "Lisboa Centro",
            "integrazu_location_id": "539",
            "website_id": 5,
            "website_domain": "standabc.pt",
            "platforms": [
                {"id": 1, "slug": "standvirtual", "designation": "StandVirtual", "enabled": true},
                {"id": 2, "slug": "olx", "designation": "OLX", "enabled": true},
                ...
            ]
        }
    ]

## Query parameters

- `pv_id` integer, required — Point of Sale ID (required)

## Headers

- `x-api-token` string, nullable

## Response `200`

Successful Response

- object[]

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/multigest/apis/multigest-protected-api.md) · [All operations](https://skmtc.dev/multigest/apis/multigest-protected-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/multigest/multigest-protected-api/revisions/4b44eb76b3ee/schema)
