Вы можете подписаться на уведомления ACCOUNT_SERVICE_CHANGE, чтобы в реальном времени получать оповещения о создании, изменении или удалении ресурсов AccountService. Это особенно полезно для сторонних поставщиков и компаний, которые управляют несколькими аккаунтами.
Подписка на изменения сервисов аккаунта позволяет сразу узнавать, когда сервис аккаунта предлагается, утверждается, обновляется или удаляется, без опроса API.
Прежде чем начать, убедитесь, что URI обратного вызова настроен в соответствии с требованиями, описанными в обзоре Notifications sub-API.
Подписка на изменения в сервисах аккаунта
Чтобы подписаться на изменения в сервисе аккаунтов, отправьте запрос POST к ресурсу notificationsubscriptions, задав для параметра registeredEvent значение ACCOUNT_SERVICE_CHANGE.
Как подписаться на определенный целевой аккаунт
В следующем примере запроса показано, как подписаться на изменения сервисов аккаунта для определенного аккаунта продавца:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "ACCOUNT_SERVICE_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Замените следующее:
- ACCOUNT_ID – идентификатор аккаунта, которому принадлежит подписка и который получает уведомления.
- TARGETACCOUNT_ID – идентификатор аккаунта, для которого вы хотите получать уведомления.
Подписаться для всех управляемых аккаунтов
Поставщики и компании, управляющие несколькими аккаунтами продавцов, могут подписаться на изменения сервисов аккаунтов во всех управляемых аккаунтах, установив allManagedAccounts: true:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "ACCOUNT_SERVICE_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
При успешном вызове возвращается идентификатор name для вашей подписки, включая уникальный идентификатор подписки:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "ACCOUNT_SERVICE_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Расшифровка полезных нагрузок, связанных с изменением сервиса аккаунтов
Когда в сервисе аккаунтов происходит изменение, ваш URI обратного вызова получает сообщение, закодированное в формате base64. После декодирования полезная нагрузка соответствует формату ResourceChangeMessage:
{
"account": "accounts/{TARGETACCOUNT_ID}",
"managingAccount": "accounts/{ACCOUNT_ID}",
"resourceType": "ACCOUNT_SERVICE",
"resource": "accounts/{TARGETACCOUNT_ID}/services/{SERVICE_ID}",
"operation": "CREATE",
"eventTime": "2026-08-25T10:00:00Z"
}
Поля и правила полезной нагрузки
account– целевой аккаунт, которому принадлежит измененный объект сервиса (accounts/{merchant_id}).managingAccount– аккаунт, который управляет аккаунтом продавца (accounts/{service_provider_id}).resourceType– тип ресурса, который был изменен (ACCOUNT_SERVICE).resource– полное название ресурса сервиса аккаунта (например,accounts/{account}/services/{service}).operation– операция, выполненная с ресурсом:CREATE: создана новая связь между аккаунтом и сервисом.UPDATE– изменена конфигурация или разрешение для существующего сервиса аккаунта.DELETE: связь между аккаунтом и сервисом удалена.
eventTime– временная метка, указывающая, когда было создано событие. Используйте эту временную метку, чтобы обеспечить правильный порядок событий.
Как протестировать уведомления об изменении сервиса в аккаунте
Чтобы проверить, правильно ли конечная точка обратного вызова получает, подтверждает и декодирует сообщения об изменении сервиса аккаунта, используйте следующий пример запроса:
curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJBQ0NPVU5UX1NFUlZJQ0UiLAogICJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3NlcnZpY2VzLzEyMyIsCiAgIm9wZXJhdGlvbiI6ICJDUkVBVEUiLAogICJldmVudFRpbWUiOiAiMjAyNi0wOC0yNVQxMDowMDowMFoiCn0="}}'В ответ на этот вызов ваш URI обратного вызова должен вернуть допустимый код статуса HTTP (например, 200 OK). Расшифрованное сообщение содержит следующие данные:
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "ACCOUNT_SERVICE",
"resource": "accounts/1234/services/123",
"operation": "CREATE",
"eventTime": "2026-08-25T10:00:00Z"
}