Edit location
Overview
Update a store and its paired location-account record together (name, storeid, client_location_id, address, zip, city, site_url, phone, company_phone). Self-heals by backfilling any missing store_review_site rows for the store (safe to repeat) and reports how many were created. Rejects duplicates (same name+address+zip+city under another bundle_id=2 row). Cannot move a store between accounts.
Prerequisites
- A bearer token. Callable with Partner tokens.
- The
storeIdof the record you are targeting.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/partner/store/{storeId}/update
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner tokens.
-
Under the
partner/group. -
The endpoint enforces ownership inside the controller, not the form request.
-
It walks, and
canManageStoreconfirms the caller's partner matches. A super admin bypasses this check. Otherwise the request returns 403. -
The form request carries no ownership rule — only field validation.
Rate limit
- No rate limit.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
storeId | integer | Required | Digits only. |
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | max 255; NameNoAngleBrackets |
storeid | string | optional | max 100; NameNoAngleBrackets. Your own reference code for the location (for example NYC01) — not the numeric id. |
client_location_id | string | optional | max 100; NameNoAngleBrackets (defaults to '' if null) |
address | string | required | max 255; NameNoAngleBrackets |
city_id | int | required | must exist:city,id |
postal_code | string | required | min 3, max 12; NameNoAngleBrackets (saved to location zip) |
site_url | string | optional | must be a valid URL |
phone | string | optional | min 9, max 15 digits — secondary line |
company_phone | string | optional | min 9, max 15 digits — primary business phone |
{
"name": "Acme Brand - NYC01",
"storeid": "NYC01",
"client_location_id": "CLI-7755",
"address": "123 Main St",
"city_id": 1,
"postal_code": "10001",
"site_url": "https://acmebrand-nyc.com",
"phone": "9876543210",
"company_phone": "1234567890"
}Response
data.status(string) —success.data.message(string) —Location has been updated successfully!.data.storeId(integer) — the updated store id.data.review_sites_backfilled(integer) — count ofstore_review_siterows created by the self-heal (often 0).
200 OK · 200
200{
"data": {
"status": "success",
"message": "Location has been updated successfully!",
"storeId": 15,
"review_sites_backfilled": 0
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
403 | You do not have access to this store |
404 | The store id does not exist, or its data is incomplete |
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/store/123/update" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"name": "Acme Brand - NYC01", "storeid": "NYC01", "client_location_id": "CLI-7755", "address": "123 Main St", "city_id": 1, "postal_code": "10001", "site_url": "https://acmebrand-nyc.com", "phone": "9876543210", "company_phone": "1234567890"}'Updated 8 days ago
