GetReader
GetReader позволяет издателю проверить, связал ли один из его читателей с известным PPID свою подписку с Google. Используя GET запрос, издатель запрашивает PPID, принадлежащий определенному идентификатору публикации.
Запрос
REST API: GET запрос
https://readerrevenuesubscriptionlinking.googleapis.com/v1/publications/publicationId/readers/ppid
Клиентская библиотека (Node.js)
async function getReader(ppid) {
const publicationId = process.env.PUBLICATION_ID;
return await client.publications.readers.get({
name: `publications/${publicationId}/readers/${ppid}`,
});
};
Ответ
В ответ на запрос будет возвращен либо код 200 с телом в формате JSON, содержащим время created_time связанной подписки, либо ошибка, если для публикации не найден PPID. Дополнительную информацию см. в разделе ошибок .
{
"name": "publications/CAowqfCKCw/readers/22553",
"createTime": "2025-07-30T18:26:58.050224Z",
"publicationId": "CAowqfCKCw",
"ppid": "22553",
"originatingPublicationId": "CAowqfCKCw"
}
GetReaderEntitlements
GetReaderEntitlements позволяет издателю запрашивать права доступа для PPID, который он ранее предоставил. Используя GET-запрос, издатель запрашивает права доступа, указывая PPID и Publication ID.
Запрос
REST API: GET запрос
https://readerrevenuesubscriptionlinking.googleapis.com/v1/publications/publicationId/readers/ppid/entitlements
Клиентская библиотека (Node.js)
async function getReaderEntitlements(ppid) {
const publicationId = process.env.PUBLICATION_ID;
return await client.publications.readers.getEntitlements({
name: `publications/${publicationId}/readers/${ppid}/entitlements`
});
};
Ответ
В случае успешного выполнения запроса формат возвращаемого значения идентичен формату, используемому для хранения прав доступа в запросе PATCH UpdateReaderEntitlements .
{
"name": "publications/dailybugle.com/readers/6789/entitlements",
"entitlements": [
{
"product_id": "dailybugle.com:basic",
"subscription_token": "dnabhdufbwinkjanvejskenfw",
"detail": "This is our basic plan",
"expire_time": "2022-08-19T04:53:40+00:00"
},
{
"product_id": "dailybugle.com:premium",
"subscription_token": "wfwhddgdgnkhngfw",
"detail": "This is our premium plan",
"expire_time": "2022-07-19T04:53:40+00:00"
},
{
"product_id": "dailybugle.com:deluxe",
"subscription_token": "fefcbwinkjanvejfefw",
"detail": "This is our deluxe plan",
"expire_time": "2022-08-20T04:53:40+00:00"
}
]
}
Для пользователей, у которых нет прав доступа, но есть связанный PPID (например, право доступа, срок действия которого истек и которое было удалено), запрос на получение прав доступа вернет пустой массив прав доступа в составе стандартного объекта прав доступа.
{
"name": "publications/dailybugle.com/readers/6789/entitlements"
}
UpdateReaderEntitlements
UpdateReaderEntitlements используется для создания и обновления прав доступа для читателя на основе его PPID.
Этот пример полезной нагрузки предоставляет читателю с PPID 6789 доступ к трем идентификаторам продуктов для The Daily Bugle: dailybugle.com:basic , dailybugle.com:premium и dailybugle.com:deluxe . Когда читатель с PPID 6789 впоследствии воспользуется поиском Google для поиска и обнаружения контента, в списке «Из ваших подписок» будут отображаться все релевантные результаты из статей dailybugle.com, помеченных любым из этих идентификаторов продуктов.
Запрос
REST API: Запрос PATCH
https://readerrevenuesubscriptionlinking.googleapis.com/v1/publications/publicationId/readers/ppid/entitlements
Текст запроса: Для получения дополнительной информации об объекте entitlements см. страницу глоссария .
{
entitlements : [{
product_id: `${publicationId}:basic`,
subscription_token: 'abc1234',
detail: 'This is our basic plan',
expire_time: '2025-10-21T03:05:08.200564Z'
}]
}
Клиентская библиотека (Node.js)
async function updateReaderEntitlements(ppid) {
const publicationId = process.env.PUBLICATION_ID;
const requestBody = {
entitlements : [{
product_id: `${publicationId}:basic`,
subscription_token: 'abc1234',
detail: 'This is our basic plan',
expire_time: '2025-10-21T03:05:08.200564Z'
}]
};
return await client.publications.readers.updateEntitlements({
name: `publications/${publicationId}/readers/${ppid}/entitlements`,
requestBody
});
}
Ответ
После успешного выполнения операции PATCH будет возвращен сохраненный объект entitlements в том же формате, что и GetReaderEntitlements .
DeleteReader
DeleteReader позволяет издателю вручную удалить связанную подписку. Используя запрос DELETE , издатель отправляет PPID для идентификатора публикации, которую необходимо удалить.
Перед вызовом DeleteReader необходимо либо сначала удалить права доступа с помощью UpdateReaderEntitlements с пустым массивом ( { "entitlements": [] } ), либо установить необязательный параметр force в true , если вам нужно удалить читателя, имеющего права доступа. Параметр force по умолчанию имеет значение false .
Запрос
REST API: запрос DELETE
https://readerrevenuesubscriptionlinking.googleapis.com/v1/publications/publicationId/readers/ppid?force={boolean}
Клиентская библиотека (Node.js)
async function deleteReader(ppid, forceDelete = false) {
const publicationId = process.env.PUBLICATION_ID;
return await client.publications.readers.delete({
name: `publications/${publicationId}/readers/${ppid}`,
force: forceDelete
});
}
Ответ
Успешное удаление возвращает код 200 с пустым JSON-объектом {} .
{}