Методы API

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 и идентификатор публикации.

Запрос

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`
  });
};

Ответ

В случае успешного запроса формат возврата идентичен формату, используемому для хранения прав с помощью запроса UpdateReaderEntitlements PATCH .

{
  "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"
}

ОбновлениеReaderEntitlements

UpdateReaderEntitlements используется для создания и обновления прав для читателя на основе его PPID.

Этот пример полезных данных предоставляет читателю с PPID 6789 права на три идентификатора продукта для The Daily Bugle: dailybugle.com:basic , dailybugle.com:premium и dailybugle.com:deluxe . Когда читатель 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 позволяет издателю вручную удалить связанную подписку. Используя запрос 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 {} .

{}