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 storeId of the record you are targeting.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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 canManageStore confirms 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

ParameterTypeRequiredDescription
storeIdintegerRequiredDigits only.

Request body

  • Body:
FieldTypeRequiredDescription
namestringrequiredmax 255; NameNoAngleBrackets
storeidstringoptionalmax 100; NameNoAngleBrackets. Your own reference code for the location (for example NYC01) — not the numeric id.
client_location_idstringoptionalmax 100; NameNoAngleBrackets (defaults to '' if null)
addressstringrequiredmax 255; NameNoAngleBrackets
city_idintrequiredmust exist:city,id
postal_codestringrequiredmin 3, max 12; NameNoAngleBrackets (saved to location zip)
site_urlstringoptionalmust be a valid URL
phonestringoptionalmin 9, max 15 digits — secondary line
company_phonestringoptionalmin 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 of store_review_site rows created by the self-heal (often 0).

200 OK · 200

{
  "data": {
    "status": "success",
    "message": "Location has been updated successfully!",
    "storeId": 15,
    "review_sites_backfilled": 0
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
403You do not have access to this store
404The store id does not exist, or its data is incomplete
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/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"}'

Did this page help you?