For providers

Передача идентификатора сессии

Для каждого пользователя, для которого необходимо определить телефон, вызывается пиксель провайдера в который передаются данные о сессии (случайным образом генерируемый идентификатор показа). В GET параметрах пикселя передается идентификатор сессии.

https://{SYNC_PROVIDER_URL}/?sid={SESSION_ID}

Таким образом провайдер должен предоставить:

  • SYNC_PROVIDER_URL, адрес на который будут отправляться идентификаторы.
  • В ответ провайдер должен вернуть gif 1x1.
  • Обязательна поддержка SSL

Проверка наличия данных

Для каждого пользователя, для которого отправлен идентификатор сессии, за следующие 3 секунды будет отправлен запрос на наличие данных.

https://{DATA_PROVIDER_URL}/checkData/?sid={SESSION_ID}

Провайдер должен вернуть факт наличия данных по идентификатору сессии и время последней модификации данных.
Если данные отсутствуют то провайдер должен вернуть 204 код ответа без самого тела ответа.

{
	"id": "{SESSION_ID}",
	"items": [{
		"userID": "6RuW-EfmK-3tvP-PPqc",
		"availableData": ["phoneNumber", "email"],
		"lastModified": 1572498684
	}]
}

Получение данных

Для каждого пользователя, для которого отправлен идентификатор сессии, за следующие 10 секунд может быть отправлен запрос на получение данных.

https://{DATA_PROVIDER_URL}/getData/?sid={SESSION_ID}

Провайдер должен вернуть данные по идентификатору сессии.

Если какое то из полей не известно провайдеру, например "email", то этот ключ должен отсутствовать в возвращаемых данных.

Если провайдер предоставляет данные из разных источников, коды источников должны быть указаны в поле "source", что бы можно было оценивать качество данных не в целом по провайдеру а по отдельному источнику внутри провайдера.

{
	"id": "{SESSION_ID}",
	"items": [{
		"userID": "6RuW-EfmK-3tvP-PPqc",
		"phoneNumber": "+79031231001",
		"email": "[email protected]",
		"lastModified": 1572498684
		"source": "15a"
	}]
}

Тестовые идентификаторы

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

email: [email protected], (не должно быть XXX@XXX)
phone: +79011234567 / 89011234567 / 9011234567 (не должно быть XXXXXXXXXX или 0000000000)

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

Check list

Вы можете воспользоваться списком проверки для того, что бы самостоятельно оценить реализацию сервиса.

  1. Вы предоставили 3 ссылки для работы с системой? Для полноценной реализации интеграции должно быть 3 ссылки, которые позволяют: инициировать синхронизацию идентификаторов, проверить факт наличия данных, получить сами данные.

  2. Пиксель синхронизации возвращает gif 1x1 с кодом ответа 200? Данный вызов должен вернуть корректное изображение с соответствующими заголовками и кодом ответа.

  3. Все ссылки поддерживают SSL?

  4. При вызове проверки наличия данных с несуществующим идентификатором возвращается код 204 с пустым телом ответа ? Если проверка данных вызвана с не существующим идентификатором, или данных по этому идентификатору нет, следует вернуть 204 код ответа, данный код не предполагает наличия тела ответа.

  5. Возвращаемый JSON для всех методов валиден? Проверялось ли валидность возвращаемого JSON ответа на валидность. Как пример для проверки можно использовать сервис https://jsonlint.com/.

  6. Возвращаемый JSON для всех методов является одной строкой? JSON не должен содержать перевода строк.

  7. Все ли данные представляют реальные значения? Например TS не может быть отрицательным, или телефон не может быть вида XXX.

  8. Соответствуют ли типы данных? Например TS должен передаваться как число, а не строка.