Console API
Listings
11 endpoints.
/api/v1/admin/businesses/{business_id}/listingsList managed GBP listings grouped by internal location
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_ManagedListingsData_| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
success | true | default true | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datarequired | ManagedListingsData | ManagedListingsData fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fields
|
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}Get managed listing detail (overview from GBP Business Information)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingDetailData_| Field | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
success | true | default true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datarequired | ListingDetailData | ListingDetailData fields
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/photosList photos linked to a managed GBP listing
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_list_ListingPhotoItem__| Field | Type | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | |||||||||||||||||||||||||||||||
success | true | default true | ||||||||||||||||||||||||||||||
datarequired | ListingPhotoItem[] | ListingPhotoItem[] fields
| ||||||||||||||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | ||||||||||||||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/photosAdd a library photo to a GBP listing (uploads to GBP then links)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonAddListingPhotoBody| Field | Type | Description |
|---|---|---|
photo_idrequired | string (uuid) |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingPhotoItem_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | ListingPhotoItem | ListingPhotoItem fieldsListingPhotoItem, expanded above. |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/photos/{photo_id}Remove a photo from the listing (association soft-delete only)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
photo_idrequired | path | string (uuid) | |
authorization | header | string | null |
Responses
204Successful Response400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/photos/syncEnqueue GBP listing media import for one managed listing
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonListingPhotosSyncBody| Field | Type | Description |
|---|---|---|
sync_type | ListingSyncType | default "backfill" |
max_pages_per_channel | integer | null | Max list API pages per channel (owner ``media.list`` and customer ``media.customers.list``); omit for all pages until exhausted. |
page_size | integer | Items per GBP list request (capped per provider). default 100 · min 1 · max 500 |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingPhotosSyncEnqueuedData_| Field | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | |||||||||||||||||||
success | true | default true | ||||||||||||||||||
datarequired | ListingPhotosSyncEnqueuedData | ListingPhotosSyncEnqueuedData fields
| ||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | ||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/photos/sync-logs/{sync_log_id}/resumeResume or retry a PARTIAL/FAILED GBP listing media sync log (background)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
sync_log_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonListingPhotosSyncResumeBody| Field | Type | Description |
|---|---|---|
max_pages_per_channel | integer | null | Cap GBP list pages **per channel** for this resume segment. |
page_size | integer | Items per GBP list request. default 100 · min 1 · max 500 |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingPhotosSyncResumeEnqueuedData_| Field | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||
success | true | default true | |||||||||||||||
datarequired | ListingPhotosSyncResumeEnqueuedData | ListingPhotosSyncResumeEnqueuedData fields
| |||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | |||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/reviewsList provider reviews stored for a managed listing
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
limit | query | integer | default 20 |
cursor | query | string | null | |
sort_by | query | string | default "updated_desc" |
rating_min | query | integer | null | |
rating_max | query | integer | null | |
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_list_ListingReviewData__| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
success | true | default true | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
datarequired | ListingReviewData[] | ListingReviewData[] fields
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/reviews/syncEnqueue provider review sync for one managed listing
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonListingReviewsSyncBody| Field | Type | Description |
|---|---|---|
sync_type | ListingSyncType | default "incremental" |
max_pages | integer | null | Cap provider list pages for this run (omit for natural stop). |
page_size | integer | Reviews per list page. default 50 · min 1 · max 100 |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingReviewsSyncEnqueuedData_| Field | Type | Description | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | |||||||||||||||||||
success | true | default true | ||||||||||||||||||
datarequired | ListingReviewsSyncEnqueuedData | ListingReviewsSyncEnqueuedData fields
| ||||||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | ||||||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/businesses/{business_id}/listings/{listing_id}/reviews/sync-logs/{sync_log_id}/resumeResume or retry a PARTIAL/FAILED listing review sync log
Parameters
| Name | In | Type | Description |
|---|---|---|---|
business_idrequired | path | string (uuid) | |
listing_idrequired | path | string (uuid) | |
sync_log_idrequired | path | string (uuid) | |
authorization | header | string | null |
Request bodyrequired
application/jsonListingReviewsSyncResumeBody| Field | Type | Description |
|---|---|---|
max_pages | integer | null | |
page_size | integer | default 50 · min 1 · max 100 |
Responses
200Successful Responseapplication/jsonSuccessResponse_ListingReviewsSyncResumeEnqueuedData_| Field | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_idrequired | string | ||||||||||||||||
success | true | default true | |||||||||||||||
datarequired | ListingReviewsSyncResumeEnqueuedData | ListingReviewsSyncResumeEnqueuedData fields
| |||||||||||||||
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. | |||||||||||||||
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.
/api/v1/admin/listings/gbp/refresh-allRe-fetch overview + platform metadata for EVERY GBP listing (all businesses)
Fleet-wide backfill: pull each GBP listing's live overview + ``metadata`` block (``placeId`` / ``mapsUri`` / ``newReviewUri``) and persist it. One call fixes every business whose ``location_metadata`` was frozen stale at discovery time, so the conversational agent's Google-review link resolves per business (KS-866). Returns ``{total, refreshed, failed}``; per-listing failures are isolated (savepoint) and do not abort the run.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
authorization | header | string | null |
Responses
200Successful Responseapplication/jsonSuccessResponse_dict_| Field | Type | Description |
|---|---|---|
request_idrequired | string | |
success | true | default true |
datarequired | object | |
metadata | ResponseMetadata | null | ResponseMetadata fieldsResponseMetadata, expanded above. |
meta | ResponseMeta | null | ResponseMeta fieldsResponseMeta, expanded above. |
400Bad request401Unauthorized403Forbidden404Not found422Validation error500Internal server error503Service unavailable
Error bodies: ErrorResponse. See Errors.