Partner reviews by publisher (lifetime)
Overview
Returns per-publisher lifetime totals (all-time review count + overall rating from the synced per-store review-site connections, hipages spans all connected sites). It also returns the selected-period review count and rating. Results are scoped to the partner.
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-publisher
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner tokens.
-
Mounted under the
partner/reportgroup. -
Store set precedence:
store_id→ single store; elseaccount_id(account); else all partner stores. -
This handler does NOT translate
client_location_id/client_account_idto ids (unlike its by-site sibling) — passstore_id/account_iddirectly. -
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 | validated but NOT resolved by this handler |
client_account_id | string | no | validated but NOT resolved by this handler |
{
"range_start": "2024-01-01 00:00:00",
"range_end": "2024-12-31 23:59:59",
"account_id": 7
}Response
id(int) —review_siteidreview_site(string) — display name (maps.google→Google)review_site_logo(string) — S3 logo URLreview_site_color(string|null)total_reviews(int) — lifetime/all-time totaloverall_rating(float|null) — count-weighted lifetime ratingperiod_reviews(int) — reviews within the date rangeperiod_rating(float|null) — average rating within range
200 OK · 200
200{
"data": [
{
"id": 44,
"review_site": "Google",
"review_site_logo": "https://s3.amazonaws.com/bucket/assets/review-sites/google_ic.png",
"review_site_color": "#4285F4",
"total_reviews": 5459,
"overall_rating": 4.25,
"period_reviews": 84,
"period_rating": 4.61
},
{
"id": 3,
"review_site": "Facebook",
"review_site_logo": "https://s3.amazonaws.com/bucket/assets/review-sites/facebook_ic.png",
"review_site_color": "#1877F2",
"total_reviews": 812,
"overall_rating": 4.1,
"period_reviews": 12,
"period_rating": 4.5
}
]
}422 Validation error · 422
422{
"message": "The range start field is required. (and 1 more error)",
"errors": {
"range_start": ["The range start field is required."],
"range_end": ["The range end does not match the format Y-m-d H:i:s."]
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | Validation error |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/partner/report/review-response/by-publisher" \
--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}'Updated 9 days ago
