Перейти к основному содержимому

Обработка и добавление подписки

При получении push токена приложение должно передать его в Altcraft Platform для формирования подписки. Для этого используется API запрос.

С помощью этого запроса можно:

  • Добавить новые подписки.
  • Поменять статус уже существующих подписок.

Режим поиска профиля можно задавать с помощью поля matching в запросе (см. спецификацию ниже). Если профиль не будет найден, то будет создан новый.

При этом, если в ресурсе указано несколько баз данных, то все они будут обрабатываться по отдельности. Запрос к такому ресурсу будет создавать и обновлять профили сразу в нескольких базах. Пример такого случая можно посмотреть ниже.

Если в ресурсе нет ни одной базы, то будет возвращена ошибка.

URL-адрес

Метод: POST

https://<cookiesaver_host>/push_subscribe

Параметры запроса

ПараметрТипПримерОбязательныйОписание
idstring"abcdefghijklmnqrstuvwxyz"НетИдентификатор профиля
resource_tokenstring"abcdefghijklmnqrstuvwxyz"ДаУникальный идентификатор ресурса
db_ids[ ] int[ 2,3 ]НетФильтр баз данных ресурса.
matchingstring"custom"НетРежим поиска подписчика.
Если поле не передано или пустое, то будет использован поиск профиля по id или, если id тоже не передано, по пуш подпискам.

Для push_subscribe метода это поле может принимать только следующие значения:
  • custom
  • profile_id
subscriptionsJSON array
SubscriptionObject
[{
"provider" : "android-firebase",
"subscription_id" : "%subscriptionid%"
}]
ДаПодписки на push, которые нужно добавить в профиль или обновить.
"subscription_id" - уникален для каждого устройства.

SubscriptionObject

ПараметрТипПримерОбязательныйОписание
providerstring"android-firebase"ДаИдентификатор провайдера в Altcraft MP.
Возможны следующие значения:
  • android-firebase
  • ios-firebase
  • ios-apns
  • yandex-Appmetrica-device-id-ios
  • yandex-Appmetrica-device-id-android
  • yandex-Appmetrica-ios-ifa
  • yandex-Appmetrica-google-aid
  • yandex-Appmetrica-android-token
  • yandex-Appmetrica-ios-token
  • android-huawei
  • ios-huawei

Каждому типу токена в AppMetrica соответствует свой id провайдера.
subscription_idstring"abcdef-ghijklmn-qrstuvwxyz"ДаТокен push подписки
unsubscribeboolfalseНетФлаг отписки. Отменяет подписку, если true.

Возвращаемые параметры

ПараметрТипОписание
dataJSON array
DataObject
Информация о созданных подписках.

В массиве может быть несколько объектов в следующих случаях:
  • В запросе было передано несколько SubscriptionObject
  • В ресурсе Altcraft MP используется несколько баз данных. В этом случае для каждой базы из ресурса добавится новый профиль с подписками.
errorintКод ошибки
error_textstringТекст ошибки

DataObject

ПараметрТипОписание
subscription_idstring"abcdef-ghijklmn-qrstuvwxyz"Токен push подписки
unsubscribeboolfalseФлаг, была ли подписка добавлена или наоборот отменена
profile_idstring"5fb62e815ae47a4aa04dfadd"id профиля (переданный или вновь созданный), для которого добавлена подписка.
providerstring"android-firebase"Идентификатор провайдера в Altcraft MP.
Возможны следующие значения:
  • android-firebase
  • ios-firebase
  • ios-apns
  • yandex-Appmetrica-device-id-ios
  • yandex-Appmetrica-device-id-android
  • yandex-Appmetrica-ios-ifa
  • yandex-Appmetrica-google-aid
  • yandex-Appmetrica-android-token
  • yandex-Appmetrica-ios-token
  • android-huawei
  • ios-huawei

Каждому типу токена в AppMetrica соответствует свой id провайдера
db_idint2id базы данных в Altcraft MP, в которой находится профиль
resource_idint1id ресурса в Altcraft MP
subscription_hash_idstring"92807e89"Хеш подписки
statusstring"error"Статус операции
  • ok
  • error
descriptionstring"Duplicate push subscription"Описание ошибки

Примеры

Запрос с матчингом по системному id профиля

Запрос

{
"id": "59db33d269d426509e9c4bf9",
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bf9",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}

Запрос с матчингом по дополнительному полю профиля.

Запрос

{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 123,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bfс",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}

Запрос с матчингом по пуш подпискам

Запрос

{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"data": [
{
"subscription_id": "%subscriptionid%",
"unsubscribe": false,
"profile_id": "59db33d269d426509e9c4bfa",
"provider": "android-firebase",
"db_id": 17,
"resource_id": 5,
"subscription_hash_id": "adsfdfdffdf",
"status": "ok",
"description": ""
}
],
"error": 0,
"error_text": "Successful operation"
}

Запрос к ресурсу с несколькими базами данных

Запрос

{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 12345,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"error": 200,
"error_text": "Successful operation",
"data": [
{
"db_id": 34,
"description": "",
"profile_id": "6156ed18eb7fec10a206e916",
"provider": "android-firebase",
"resource_id": 22,
"status": "ok",
"subscription_hash_id": "340ca49c",
"subscription_id": "%subscriptionid%",
"unsubscribe": false
},
{
"db_id": 2,
"description": "matching error: unknown field",
"resource_id": 22,
"status": "error"
}
]
}

Запрос с матчингом по дополнительному полю профиля в определенной базе

Запрос

{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"db_ids": [1],
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 123,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"error": 0,
"error_text": "Successful operation",
"data": [
{
"db_id": 1,
"description": "",
"profile_id": "637f1a284fda7c5c08be62f",
"provider": "android-firebase",
"resource_id": 31,
"status": "ok",
"subscription_hash_id": "f8af057de",
"subscription_id": "%subscriptionid%",
"unsubscribe": false
}
]
}

Запрос не обновил и не добавил ни одной подписки профиля

Запрос

{
"resource_token": "3LXP2FRcRxJ-7b14db88ec937f14",
"matching": "custom",
"field_name": "CustomNumber1",
"field_value": 12345,
"subscriptions": [
{
"provider": "android-firebase",
"subscription_id": "%subscriptionid%"
}
]
}

Ответ

{
"error": 200,
"error_text": "Successful operation",
"data": [
{
"db_id": 34,
"description": "",
"profile_id": "6156ed18eb7fec10a206e916",
"resource_id": 22,
"status": "ok"
}
]
}