Keystone Developers
Open Keystone
API reference

Console API

Listing accounts

6 endpoints.

POST/api/v1/admin/businesses/{business_id}/listings/{listing_id}/keystone-invite/retry

Retry accepting the Keystone location-manager invite for a listing

Fire the durable accept worker for a listing whose Keystone manager invite is stuck 'pending'. Idempotent and non-blocking — the worker retries acceptance off-request.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
listing_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_dict_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredobject
metadataResponseMetadata | null
ResponseMetadata fields
FieldTypeDescription
paginationPaginationMetadata | null
PaginationMetadata fields
FieldTypeDescription
limitrequiredinteger
next_cursorstring | null
prev_cursorstring | null
has_morerequiredboolean
has_prevbooleandefault false
total_countinteger | null
status_countsobject | null
object | null fields

Map of string to integer

lifecycle_countsLifecycleCounts | null
LifecycleCounts fields
FieldTypeDescription
leadintegerdefault 0
prospectintegerdefault 0
customerintegerdefault 0
former_customerintegerdefault 0
classification_countsClassificationCounts | null
ClassificationCounts fields
FieldTypeDescription
signalobject
object fields

Nested object (not expanded)

touchobject
object fields

Nested object (not expanded)

stageobject
object fields

Nested object (not expanded)

metaResponseMeta | null
ResponseMeta fields
FieldTypeDescription
totalinteger | null
total_countinteger | null
pageinteger | null
per_pageinteger | null
  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

PATCH/api/v1/admin/businesses/{business_id}/listings/{listing_id}/mapping

Map or unmap a listing to an internal SOR location

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
listing_idrequiredpathstring (uuid)
authorizationheaderstring | null

Request bodyrequired

application/jsonListingInternalMappingBody
FieldTypeDescription
internal_location_idstring (uuid) | null

Responses

200Successful Response
application/jsonSuccessResponse_ListingLocationData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredListingLocationData
ListingLocationData fields
FieldTypeDescription
idrequiredstring (uuid)
business_idrequiredstring (uuid)
listing_account_idrequiredstring (uuid)
providerrequiredListingProvider
provider_listing_idrequiredstring
provider_resource_namerequiredstring
internal_location_idstring (uuid) | null
titlestring | null
store_codestring | null
location_metadataobject | null
overviewobject | null
synced_atstring (date-time) | null
is_managedrequiredboolean
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/listings/accounts

List listing provider accounts

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
providerqueryListingProvider | null
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_list_ListingAccountData__
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredListingAccountData[]
ListingAccountData[] fields
FieldTypeDescription
idrequiredstring (uuid)
business_idrequiredstring (uuid)
connection_idrequiredstring (uuid)
providerrequiredListingProvider
provider_account_idrequiredstring
provider_account_namestring | null
account_metadataobject
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

POST/api/v1/admin/businesses/{business_id}/listings/discovery/import

Discover and import provider accounts + listings for a business

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
connection_idrequiredquerystring (uuid)

OAuth connection used to call the provider API.

providerqueryListingProviderdefault "gbp"
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_ListingDiscoveryImportResponseData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredListingDiscoveryImportResponseData
ListingDiscoveryImportResponseData fields
FieldTypeDescription
accounts_discoveredrequiredinteger
locations_discoveredrequiredinteger
locations_created_or_updatedrequiredinteger
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/listings/locations

List provider listing locations for this business

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
providerqueryListingProvider | null
is_managedqueryboolean | null
internal_location_idquerystring (uuid) | null
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_list_ListingLocationData__
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredListingLocationData[]
ListingLocationData[] fields

ListingLocationData, expanded above.

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

PATCH/api/v1/admin/businesses/{business_id}/listings/selection

Replace which listings are managed for this business

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
authorizationheaderstring | null

Request bodyrequired

application/jsonManagedListingSelectionBody
FieldTypeDescription
managed_listing_idsrequiredstring (uuid)[]
string (uuid)[] fields
auto_accept_keystone_invitationsboolean

GBP: after inviting Keystone as location manager, poll and accept the pending invitation using Keystone agency OAuth (KEYSTONE_GBP_OAUTH_*). Set false to leave the invite pending for manual acceptance.

default true

Responses

200Successful Response
application/jsonSuccessResponse_ManagedListingSelectionResponseData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredManagedListingSelectionResponseData
ManagedListingSelectionResponseData fields
FieldTypeDescription
listingsrequiredListingLocationData[]
ListingLocationData[] fields

ListingLocationData (not expanded)

accept_invite_successrequiredboolean

When ``auto_accept_keystone_invitations`` was true: false if any accept attempt failed (API error or no matching invite after retries). True when auto-accept was false or every newly managed listing accepted successfully.

configure_notification_successrequiredboolean

False if any ``enable_notifications`` (after newly managed) or ``disable_notifications`` (after last unmanaged on an account) raised; errors are logged only.

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.