Locations table (partner)

Overview

Returns a paginated, per-location (per-store) review-response table for the partner — reviews, responses, average response time, average rating, and response rate per store.

Prerequisites

  • A bearer token. Callable with Partner tokens.

Base URL

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

Endpoint

POST /api/v1/partner/report/review-response/by-location

Authentication

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

  • Who can call it: Partner tokens.

  • Mounted under the partner/report group.

  • The handler hard-gates on company.bundle_id == 1.

  • Store set precedence: store_id → single store; else account_id (account); else all partner stores.

  • All id params are guarded by an ownership check.

Rate limit

  • No rate limit.

Request body

  • Body:
FieldTypeRequiredDescription
range_startstringyesY-m-d H:i:s
range_endstringyesY-m-d H:i:s
store_idintegernobelongs to auth company
account_idintegernoaccount (bundle_id=3) under this partner
client_location_idstringnoresolved to store_id
client_account_idstringnoresolved to account_id
sort_fieldstringnoone of location_name,total_reviews,total_responses,avg_resp_time,avg_rating,response_rate (default location_name)
sort_bystringnoasc/ASC/desc/DESC (default ASC)
search_fieldstringnoonly location_name
search_valuestringnosearch term
limitintegernoper page (default 10)
pageintegernopage number
{
  "range_start": "2024-01-01 00:00:00",
  "range_end": "2024-12-31 23:59:59",
  "account_id": 7,
  "sort_field": "total_reviews",
  "sort_by": "desc",
  "limit": 10,
  "page": 1
}

Response

  • data[].id (int) — store id
  • data[].location_name (string) — name - storeid (or the name alone)
  • data[].total_reviews (int) / data[].total_responses (int)
  • data[].avg_resp_time (float) — days (minutes/(24*60), rounded 2dp)
  • data[].avg_rating (float) / data[].response_rate (float, percentage)
  • Pagination fields appear at the top level: current_page, last_page, per_page, and total.

200 OK · 200

{
  "data": [
    {
      "id": 15,
      "location_name": "Downtown Location - LOC-001",
      "total_reviews": 120,
      "total_responses": 108,
      "avg_resp_time": 1.5,
      "avg_rating": 4.44,
      "response_rate": 90.0
    }
  ],
  "current_page": 1,
  "last_page": 4,
  "per_page": 10,
  "total": 38
}

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/partner/report/review-response/by-location" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"range_start": "2024-01-01 00:00:00", "range_end": "2024-12-31 23:59:59", "account_id": 7, "sort_field": "total_reviews", "sort_by": "desc", "limit": 10, "page": 1}'

Did this page help you?