PRODUCT_STATUS_CHANGE 알림을 구독하여 판매자 센터 계정에서 제품 승인 상태가 변경될 때마다 실시간 알림을 받을 수 있습니다. 예를 들어 제품이 비승인된 시점을 감지하여 잠재적인 데이터 품질 문제를 해결할 수 있습니다.
시작하기 전에 콜백 URI가 알림 하위 API 개요에 설명된 요구사항에 따라 구성되어 있는지 확인하세요.
제품 상태 변경사항 구독
제품 상태 변경사항을 구독하려면 registeredEvent이 PRODUCT_STATUS_CHANGE로 설정된 notificationsubscriptions 리소스에 POST 요청을 보냅니다.
특정 타겟 계정 구독
다음 샘플 요청은 특정 판매자 계정의 제품 상태 변경을 구독합니다.
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
다음을 바꿉니다.
- ACCOUNT_ID: 구독을 소유하고 알림을 수신하는 계정의 식별자입니다.
- TARGETACCOUNT_ID: 알림을 수신하려는 계정의 식별자입니다.
판매자 센터 계정이 연결된 계정이 없는 단독 계정인 경우 두 변수 모두에 자체 계정 ID를 사용하세요.
모든 관리 계정 구독
여러 계정 (예: 하위 계정이 있는 고급 계정)을 관리하는 경우 allManagedAccounts: true를 설정하여 관리되는 모든 계정의 제품 상태 변경을 구독할 수 있습니다.
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
호출이 성공하면 고유한 구독 ID를 포함하여 구독의 name 식별자가 반환됩니다.
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
제품 상태 변경 페이로드 디코딩
제품 상태가 변경되면 콜백 URI가 base64로 인코딩된 메시지를 수신합니다. 디코딩하면 페이로드가 ProductStatusChangeMessage 형식을 따릅니다.
{
"account": "accounts/{TARGETACCOUNT_ID}",
"managingAccount": "accounts/{ACCOUNT_ID}",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}, {
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "JP",
"reportingContext": "SHOPPING_ADS"
},{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "GE",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~1234",
"resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}
페이로드 필드 및 규칙
oldValue및newValue: 이전 상태와 업데이트된 상태를 나타냅니다. 가능한 값은approved,pending,disapproved또는 빈 문자열 ('')입니다.oldValue가 생략되면 제품이 새로 생성됩니다.newValue가 생략되면 제품이 삭제된 것입니다.
expirationTime: 제품 혜택이 만료되는 시점을 나타냅니다. 제품이 삭제되면 이 필드는 생략됩니다.reportingContext: 상태가 변경된 광고 또는 무료 등록정보 표시 경로입니다. 지원되는 값은 ReportingContextEnum의SHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATE,FREE_LISTINGS_UCP_CHECKOUT입니다.eventTime: 이벤트가 생성된 타임스탬프입니다. 이 타임스탬프를 사용하여 이벤트의 순서를 올바르게 지정합니다.
제품 상태 변경 알림 테스트
다음 샘플 요청을 사용하여 콜백 엔드포인트가 제품 상태 변경 메시지를 올바르게 수신, 승인, 디코딩하는지 테스트하세요.
curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'이 호출에 대한 응답으로 콜백 URI는 허용되는 HTTP 상태 코드 (예: 200 OK)를 반환해야 합니다. 디코딩된 메시지에는 다음 콘텐츠가 포함됩니다.
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~000000000000",
"resource": "accounts/1234/products/ONLINE~en~US~000000000000",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}