Partner-wide location list

Overview

Get a paginated list of all store locations under the authenticated partner (aggregated across every account the partner owns). Each row is joined to its account name, address, and active-plan name + dates. When you set call_for it instead returns a flat label/value list for dropdowns (with an All option prepended when more than one store).

Prerequisites

  • A bearer token. Callable with Partner tokens.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/partner/store/list

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Who can call it: Partner tokens.

  • Under the partner/ group.

  • Scope is baked into (the caller's partner company id).

  • Filter params (account_id, client_account_id, location_id, client_location_id) are all additionally validated by an ownership check (a check that the record sits inside your own hierarchy). Values outside the partner's tree yield an empty page.

Rate limit

  • No rate limit.

Query parameters

  • Query: limit (integer, optional) — page size, default 10.
  • Query: page (integer, optional) — page number.
  • Query: plan_subscription (string, optional) — one of all (default), active, inactive.
  • Query: active_plan (integer, optional) — accepted but ignored by this endpoint; use plan_subscription to filter by plan state.
  • Query: account_id (integer, optional) — account filter; must be an existing account inside your own account tree.
  • Query: client_account_id (string, optional, max 255) — external account id, resolved to account_id; an ownership check.
  • Query: location_id (integer, optional) — single store filter; must be an existing location.
  • Query: client_location_id (string, optional, max 255) — external location id, resolved to a store; an ownership check.
  • Query: call_for (string, optional) — any value returns a flat label/value dropdown list instead of the paginated table.
  • Query: sort_field (string, optional) — default store_name.
  • Query: sort_by (string, optional) — ASC (default) or DESC.
  • Query: search_field / search_value (string, optional) — column + term to filter on.

Response

  • data[].id (integer) — store id.
  • data[].name (string) — store name.
  • data[].storeid (string) — store external id.
  • data[].client_location_id (string) — partner-supplied location id.
  • data[].account_name (string) — parent account name.
  • data[].store_name (string) — name - storeid composite.
  • data[].full_address, address1, address2, zip (string) — location address fields.
  • data[].plan_name (string) — active plan name.
  • data[].activation_date, expiry_date, cancellation_date (string|null) — plan window.
  • data[].sub_partner_name (string|null) — owning sub-partner's name when the store belongs to one, else null.

200 Success · 200

{
  "data": [
    {
      "id": 2,
      "name": "Demo Brew",
      "storeid": "Alameda County",
      "client_location_id": "",
      "account_name": "Shout About Us",
      "store_name": "Demo Brew - Alameda County",
      "full_address": "123 Main St",
      "address1": "123 Main St",
      "address2": null,
      "zip": "92014",
      "plan_name": "Gold",
      "activation_date": "2026-06-16 09:48:56",
      "expiry_date": "2026-06-30 23:59:59",
      "cancellation_date": null,
      "sub_partner_name": null
    }
  ],
  "links": {
    "first": "...?page=1",
    "last": "...?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "per_page": 10,
    "total": 1
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/store/list?limit=10&page=1&plan_subscription=active" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?