Account-user location list (POST)

Overview

Returns a paginated list of stores accessible to the authenticated user. Each row is joined out to full location, account, and geographic detail (city, then state, then country) plus the active store_plan with its plan features, and a generated connect_page_url. Backs getUserStoreWithLocation.

Prerequisites

  • A bearer token. Callable with Partner and Account tokens.

Base URL

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

Endpoint

POST /api/v1/store/list

Authentication

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

  • Who can call it: Partner and Account tokens.

  • (Partner or Account user) — authentication, role-agnostic store/ group.

  • Default scope is (the caller's own accessible stores).

  • When you supply company_id it scopes for that company. When you supply store_id it narrows to that one store.

  • Both company_id and store_id must sit inside your own account tree. A partner can reach any store under its tree. An account user is confined to its own account's stores.

Rate limit

  • No rate limit.

Request body

  • Query: page (integer, optional) — pagination page.
  • Body:
FieldTypeRequiredDescription
sort_fieldstringoptionalone of store_name, address, zip, city_name, state_code, company_phone, country_name, state_name, storeid, account_name (default store_name)
sort_bystringoptionalasc / ASC / desc / DESC (default ASC)
search_fieldstringoptionalsame column set as sort_field
search_valuestringoptionalterm; validated by NameNoAngleBrackets
active_planint (0|1)optional1 = only stores with an active plan
company_idintoptionalmust exist (bundle_id 1/2/3, not deleted) + an ownership check
store_idintoptionalmust exist:store + an ownership check
limitintoptionalpage size (default 10)
{
  "sort_field": "store_name",
  "sort_by": "ASC",
  "search_field": "store_name",
  "search_value": "Main St",
  "active_plan": 1,
  "company_id": 5,
  "limit": 10
}

Response

  • data.data[].id (integer) — store id.
  • data.data[].account_name (string) — parent account name.
  • data.data[].store_name, store_full_name, storeid, client_location_id (string) — store identity.
  • data.data[].address, address1, address2, zip (string|null) — location address.
  • data.data[].country_id/_name/_code, state_id/_name/_code, city_id/_name — geo joins.
  • data.data[].company_phone (string|null).
  • data.data[].brand_company_id (integer) — parent account company id.
  • data.data[].connect_page_url (string) — generated connect-review-sites URL.
  • data.data[].active_store_plan (object|null) — { id, store_id, plan_id, status, plan_start, plan_end, cancel_subscription_at, plan: { id, plan_name, features: [{ id, plan_id, feature_name, options }] } }.

200 Success · 200

{
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 34,
        "account_name": "HiPages Brand 1",
        "store_name": "Jean Test Location",
        "store_full_name": "Jean Test Location - JEAN-1778215061",
        "storeid": "JEAN-1778215061",
        "client_location_id": "demo-hp-34",
        "address": "1 Test Street",
        "address1": "1 Test Street",
        "address2": null,
        "zip": "2000",
        "country_id": 1,
        "country_name": "Afghanistan",
        "country_code": "AF",
        "state_id": 3901,
        "state_name": "Badakhshan",
        "state_code": "BDS",
        "city_id": 1,
        "city_name": "Ashkāsham",
        "company_phone": null,
        "active_store_plan": {
          "id": 21,
          "store_id": 34,
          "plan_id": 11,
          "status": "active",
          "plan_start": "2026-05-08T04:37:42.000000Z",
          "plan_end": "2026-05-31T23:59:59.000000Z",
          "cancel_subscription_at": null,
          "plan": {
            "id": 11,
            "plan_name": "HiPages Review Management",
            "features": [
              {
                "id": 72,
                "plan_id": 11,
                "feature_name": "ai_response",
                "options": []
              },
              {
                "id": 73,
                "plan_id": 11,
                "feature_name": "review_flag",
                "options": []
              }
            ]
          }
        }
      }
    ],
    "per_page": 10,
    "total": 12
  }
}

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 POST \
  --url "https://production-api.shoutaboutus.com/api/v1/store/list" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"sort_field": "store_name", "sort_by": "ASC", "search_field": "store_name", "search_value": "Main St", "active_plan": 1, "company_id": 5, "limit": 10}'

Did this page help you?