{"card": { // карта лояльности пользователя"cardNumber": "", // номер карты в информационной системе партнера"cardState" : "", // состояние карты ("active" / "inactive")"barcode": { // штрихкод карты"barcodeNumber": "", // номер штрихкода"barcodeType": "" // тип штрихкода ("EAN_8" / "EAN_13" / "CODE_128" / "UPC_A" / "QR_CODE")}}}
{"code": "123","description": "Недоступен сервер баз данных"}
GET /v1/card?msisdn=79216668899&email=sample@domain.com&birthDate=1990-01-01
Правила обработки запроса:
Параметры поиска комбинируются по условию логического ИЛИ.
Если переданным условиям поиска соответствует несколько различных карт лояльности, разрешение конфликта происходит на стороне партнера. Допускается вернуть ошибку; в этом случае пользователю будет рекомендовано обратиться в службу поддержки партнера.
Неизвестные партнеру условия поиска должны игнорироваться.
{"code": "123","description": "Недоступен сервер баз данных"}
PUT /v1/card/2337658900/communication
{"allow": [ // разрешенные каналы связи"sms","email"],"deny": [ // запрещенные каналы связи"call"]}
phone
, email
, surname
, firstname
, sex
, birthDate
.
{"code": "123","description": "Недоступен сервер баз данных"}
Дополнительные параметры запроса передаются в виде массива JSON-объектов AdditionalParameter. Этот объект имеет следующие поля:
Поле | Тип | Описание |
| String | Имя параметра |
| Object[] | Значения параметра. Массив объектов вида
|
POST /v1/card/2337658900
{"phone" : "71111111111","email" : "user@domain","surname": "Иванов","firstname": "Иван","sex": "м","birthDate": "1990-01-01"}
Этот запрос следует ожидать:
В ходе сценария выпуска карты — если номер карты был найден в базе данных партнера (см. Поиск карты лояльности по данным профиля пользователя). Если выпуск карты требует передачи каких-либо дополнительных параметров помимо персональных данных, они будут переданы в массиве объектов additionalParameters
(по одному объекту на каждый параметр). Перечень и формат представления таких параметров предварительно согласуется с Cardsmobile.
После выпуска карты — при обновлении пользователем данных своего профиля в «Кошельке» (в запросе будут переданы только измененные персональные данные).
phone
, email
, surname
, firstname
, sex
, birthDate
.
{"code": "123","description": "Недоступен сервер баз данных"}
POST /v1/card/provided/2337658900
{"phone" : "71111111111","email" : "user@domain","surname": "Иванов","firstname": "Иван","sex": "м","birthDate": "1990-01-01"}
Номер карты, использующийся в запросе, сообщается пользователем приложения и никак не проверяется на стороне Cardsmobile. Ожидается, что если такой карты не существует в системе партнера, либо если она не анонимна (т.е. привязана к другому пользователю), то возвращается ошибка.
Если выпуск карты требует передачи каких-либо дополнительных параметров помимо персональных данных, они будут переданы в массиве объектов additionalParameters
(по одному объекту на каждый параметр). Перечень и формат представления таких параметров предварительно согласуется с Cardsmobile.
2337658900
{"code": "123","description": "Недоступен сервер баз данных"}
GET /v1/card/anonymous
Правила обработки запроса:
Реализация системы со стороны партнера должна гарантировать, что выданный номер карты будет оставаться зарезервированным (недоступным для повторного использования) в течение часа.
phone
, email
, surname
, firstname
, sex
, birthDate
.
{"code": "123","description": "Недоступен сервер баз данных"}
POST /v1/card/anonymous/2337658900
{"phone" : "71111111111","email" : "user@domain","surname": "Иванов","firstname": "Иван","sex": "м","birthDate": "1990-01-01"}
Если выпуск карты требует передачи каких-либо дополнительных параметров помимо персональных данных, они будут переданы в массиве объектов additionalParameters
(по одному объекту на каждый параметр). Перечень и формат представления таких параметров предварительно согласуется с Cardsmobile.
Правила обработки запроса:
Информация о балансе карты должна быть доступна сразу же после ее привязки.
{"card": { // карта лояльности пользователя"cardNumber": "", // номер карты"cardState" : "", // состояние карты ("active" / "inactive")"barcode": { // штрихкод карты"barcodeNumber": "", // номер штрихкода"barcodeType": "" // тип штрихкода ("EAN_8" / "EAN_13" / "CODE_128" / "UPC_A" / "QR_CODE")},"status": { // текущий статус карты"discountPercent": "", // процент скидки"cardType": "", // статус карты (золотая, серебряная и т.д.)"totalPurchaseAmount": "", // общая сумма покупок по карте (число)"statusConfirmAmount": "" // оставшаяся сумма покупок по карте до подтверждения текущего статуса (число)},"nextStatus": { // следующий статус карты"discountPercent": "", // процент скидки (число)"cardType": "", // статус карты (золотая, серебряная и т.д.)"totalPurchaseAmount": "" // оставшаяся сумма покупок по карте до получения следующего статуса (число)},"bonus": { // количество бонусов на карте"total": "", // общее кол-во бонусов (число)"available": "", // доступное кол-во бонусов (число)"bonuses": [ // описание бонусов{"description": "", // название бонуса"amount": "", // кол-во бонусов (число)"validUntil": "" // дата, до которой бонусы действительны}]}}}
{"code": "123","description": "Недоступен сервер баз данных"}
GET /v1/card/2337658900
{"card": {"cardNumber": "65046476","cardState": "active","barcode": {"barcodeNumber": "0000660277088","barcodeType": "EAN_13"},"status": {"discountPercent": "10","cardType": "default","totalPurchaseAmount": "200","statusConfirmAmount": "0"},"nextStatus": {"discountPercent": "20","cardType": "next_status","totalPurchaseAmount": "2000"},"bonus": {"total": "0","available": "0","bonuses": [{"description": "Бонус № 1","amount": "100","validUntil": "2018-12-01"},{"description": "Бонус № 2","amount": "10","validUntil": "2018-12-12"},{"description": "Бонус № 3","amount": "1","validUntil": "2018-10-29"}]}}}
Обратите внимание:
В полях, перечисленных ниже, должно содержаться строковое представление числа (допускаются как целые числа, так и с числа дробной частью):
discountPercent
, totalPurchaseAmount
, statusConfirmAmount
(объект status);
discountPercent
, totalPurchaseAmount
(объект nextStatus);
total
, available
, bonuses[].amount
(объект bonus).
[{"date": "", // дата операции YYYY-MM-DD"item": "", // наименование товара"amount": "", // стоимость товара в копейках (Число. Со знаком "-" - возврат покупки)"quantity": "", // кол-во единиц товара (число)"location": "", // место проведения операции"bonuses": "" // начисленные "+" и списанные "-" бонусы за покупку (числа)}]
[]
{"code": "123","description": "Недоступен сервер баз данных"}
GET /v1/card/2337658900/purchases?startDate=2019-01-01
Обратите внимание:
В полях ответа amount
, quantity
и bonuses
должно содержаться строковое представление числа (допускаются как целые числа, так и с числа дробной частью).
Поля ответа date
, item
, amount
и quantity
— обязательные (не допускается пустых значений).
Поля ответа location
и bonuses
могут содержать пустые значения (в частности, если они не предусмотрены программой лояльности).
[{ // информация об акции"id": "", // идентификатор акции"name": "", // название персональной акции - рекомендуемая длина до 40 символов. Название может быть длиннее, но тогда на некоторых экранах будет обрезаться многоточием"startDate": "", // дата начала действия - "ГГГГ-ММ-ДД""endDate": "", // дата окончания действия - "ГГГГ-ММ-ДД""description": "", // описание персональной акции (рекомендуемая длина до 500 символов, разрешены теги HTML)"barcodeNumber": "", // номер штрихкода"barcodeType": "", // тип штрихкода ("EAN_8" / "EAN_13" / "CODE_128" / "UPC_A" / "QR_CODE")"assets": { // внешнее оформление акции"imageUrl": "", // графическое изображение – прямая ссылка на ресурс с изображением формата 600x600px. Обязательно"imageLargeUrl": "" // дополнительное графическое изображение (формат баннера) – прямая ссылка на ресурс с изображением формата 1080х420px. Не обязательно}}// аналогичные объекты {...} в массиве для остальных акций (через запятую)]
[]
{"code": "123","description": "Недоступен сервер баз данных"}
GET /v1/card/2337658900/specials
startDate
, endDate
— на стороне сервера Cardsmobile ожидается, что даты начала и окончания акции будут сформированы партнером, исходя из региона присутствия клиента на момент выпуска карты (передается в поле locality
— см. сценарии выпуска), и соответствующего часового пояса.
description
— в подробном описании акции допускается использование набора тегов HTML-разметки для форматирования описания:
Тег HTML | Формат текста |
| Полужирный |
| Курсивный |
| Подчеркнутый |
| Нижний индекс |
| Верхний индекс |
| Увеличенный размер |
| Уменьшенный размер |
| Моноширинный |
| Заголовок уровня 1 — 6 |
| Изображение |
| Параметры шрифта (семейство, размер, цвет) |
| Блок цитирования |
| Ссылка |
| Параграф |
| Разрыв (перевод) строки |
[{"id": "1","startDate": "2019-09-09","endDate": "2019-09-15","name": "SALE до -50%","description": "Скидка предоставляется по промокоду «SALE50».<br>Акция действует при покупке товара в магазине c 09 до 15 сентября.","barcodeNumber": "123456789","barcodeType": "EAN_13","assets": {"imageUrl": "https://partnerresource/image1.jpg","imageLargeUrl": "https://partnerresource/image2.jpg"}},{"id": "2","startDate": "2019-09-09","endDate": "2019-09-15","name": "SALE до -70%","description": "Скидка предоставляется по промокоду «SALE70».<br>Акция действует при покупке товара в магазине c 09 до 15 сентября.","barcodeNumber": "987654321","barcodeType": "EAN_13","assets": {"imageUrl": "https://partnerresource/image1.jpg","imageLargeUrl": "https://partnerresource/image2.jpg"}}]
Запрос списка специальных акций поддерживает только версия приложения «Кошелёк», предназначенная для устройств, работающих на платформе iOS.