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
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://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/reportgroup. -
The handler hard-gates on
company.bundle_id == 1. -
Store set precedence:
store_id→ single store; elseaccount_id(account); else all partner stores. -
All id params are guarded by an ownership check.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
range_start | string | yes | Y-m-d H:i:s |
range_end | string | yes | Y-m-d H:i:s |
store_id | integer | no | belongs to auth company |
account_id | integer | no | account (bundle_id=3) under this partner |
client_location_id | string | no | resolved to store_id |
client_account_id | string | no | resolved to account_id |
sort_field | string | no | one of location_name,total_reviews,total_responses,avg_resp_time,avg_rating,response_rate (default location_name) |
sort_by | string | no | asc/ASC/desc/DESC (default ASC) |
search_field | string | no | only location_name |
search_value | string | no | search term |
limit | integer | no | per page (default 10) |
page | integer | no | page 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 iddata[].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, andtotal.
200 OK · 200
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
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected 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}'Updated 8 days ago
Did this page help you?
