Авторизация

На данном этапе мы предполагаем, что вы являетесь партнером Bonder, и наша Служба Поддержки предоставила вам имя Пользователя, Пароль и название клиента API.
  • Команда auth
  • Запрос POST
curl -k -X POST \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
-d '{
  "username" : "USERNAME",
  "password" : "PASSWORD",
  "client" : "API_CLIENT_NAME",
  "rpt" : "10000"
}' \
"https:// {{API_URL}} /auth" \
Параметры авторизации
Параметр
Тип
Описание
username
string
имя пользователя API
password
string
пароль API
client
string
название клиента API
rpt
integer
количество операций на token (RPT - Requests Per Token) rpt<1000, 100000>
Успех HTTP/1.1 200 OK
{
  "success" : true,
  "errors" : [],
  "result" : {
    "token" : "access_token",
    "expire" : "1606347761"
  }
}
Ответ
Параметр
Тип
Описание
token
string
ваш token
expire
integer
метка времени, содержащая дату истечения срока действия token expire=time()+3600
Переменные expire и rpt участвуют в гонке. Первый, достигший целевого значения, деактивирует token.
Отказ HTTP/1.1 200 OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль, неверный адрес электронной почты или Аккаунт был удален или не существует
SERVER_OFFLINE_ERROR
Сервер офлайн из-за текущих работ по техническому обслуживанию.
Возможно обновление программного обеспечения
  • Предложения: попробуйте еще раз через 45-60 мин.
AUTH_SERVICE_OFFLINE_ERROR
Авторизация временно недоступна для всех Пользователей.
Возможно обновление программного обеспечения
  • Предложения: попробуйте еще раз через 45-60 мин.
API_SERVICE_OFFLINE_ERROR
Сервис API временно недоступен.
Возможно обновление программного обеспечения
  • Предложения: попробуйте еще раз через 45-60 мин.
ACCOUNT_INACTIVE_ERROR
Аккаунт API приостановлен или предназначен для удаления
  • Предложения: обратитесь в Службу Поддержки
INTERNAL_SERVER_ERROR
Внутренняя ошибка сервера
  • Предложения: попробуйте еще раз
DATABASE_ERROR
Ошибка подключения к базе данных
  • Предложения: попробуйте еще раз

Структура данных

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

Типы данных

типы данных
Тип
Описание
многоязычная
должны быть записаны отдельно на каждом языке
непереводимая
хранятся в отдельной таблице и добавляются в Визитку на каждом языке
Например: Если вы измените значение постоянного типа, такого как email или mobile, все языковые версии Визитки будут обновлены.

Режимы Визиток

Поскольку вашим клиентом может быть не человек, а предприятие, например: «Стоматологические-услуги-без-плача», мы создали переменную верхнего уровня displayName. Если !empty(displayName), визитная карточка будет работать в бизнес-режиме а name lastname position будут пропущены при создании визитной карточки (сервер все равно сохранит значения).
Режимы Визиток
Режим
Условие
бизнес
if (!empty(displayName)) {
businessMode = TRUE
}
личный
if (empty(displayName)) {
businessMode = FALSE
}
В английской версии переменной displayName определено значение, поэтому сервер сохранит отправленные данные, но name lastname position будут игнорироваться при создании Визитки. "en" : {
  "displayName" : "Non-scary-dental-services",
  "name" : "John",
  "lastname" : Kowalski",
  "position" : "CEO"
},
В польской версии имя Jan Kowalski будет отображаться на мобильном устройстве (в должности Директора). "pl" : {
  "displayName" : "",
  "name" : "Jan",
  "lastname" : "Kowalski",
  "position" : "Prezes"
},
Русская версия не будет доступна для скачивания, несмотря на сохранение некоторых данных на сервере. "ru" : {
  "displayName" : "",
  "name" : "",
  "lastname" : "Ковалский",
  "position" : "Директор"
}

Переменные

Каждая переменная должна быть предварительно проверена перед отправкой на сервер. Если значение отправленной переменной не соответствует назначенному ей регулярному выражению, сервер присвоит ему null и тем не менее вернет положительный ответ success=true о сохранении данных.
Переменные
Название
Тип
Многоязычная
Описание
name
string
имя
  • требуется для создания Визитки в личном режиме
  • сохраняется и игнорируется в бизнес режиме
  • /^[a-zA-Z0-9]{2,25}$/
lastname
string
фамилия
  • сохраняется и игнорируется в бизнес режиме
  • сохраняется и игнорируется в бизнес режиме
  • /^[a-zA-Z0-9]{32,128}$/
displayName
string
отображаемое имя
  • требуется для создания Визитки в бизнес режиме
  • /^[a-zA-Z0-9]{32,128}$/
company
string
название компании
  • /^[a-zA-Z0-9]{32,128}$/
position
string
должность
  • сохраняется и игнорируется в бизнес режиме
  • /^[a-zA-Z0-9]{32,128}$/
keywords
string
ключевые слова, которые лучше всего описывают человека или компанию
  • запятая как разделитель
  • /^[a-zA-Z0-9]{1,150}$/
thumbnail
string
аватарка или логотип, отображаемый на мобильном устройстве
  • кодирование изображения в base64
  • фиксированный размер 300px x 300px
  • максимальный размер файла 50кБ
phoneA
string
номер телефона
  • начальные нули и нечисловые символы будут обрезаны
  • клиент должен ввести код страны
  • мы добавим "+" в начале
  • /^[a-zA-Z0-9]{32,128}$/
phoneB
string
как выше
mobileA
string
номер мобильного телефона
  • начальные нули и нечисловые символы будут обрезаны
  • клиент должен ввести код страны
  • мы добавим "+" в начале
  • /^[a-zA-Z0-9]{32,128}$/
mobileB
string
как выше
skypeA
string
имя пользователя Скайп
  • /^[a-zA-Z0-9]{32,128}$/
skypeB
string
как выше
faxA
string
номер факса
  • начальные нули и нечисловые символы будут обрезаны
  • клиент должен ввести код страны
  • мы добавим "+" в начале
  • /^[a-zA-Z0-9]{32,128}$/
faxB
string
как выше
emailA
string
e-mail
emailB
string
как выше
webA
string
URL
  • /^[a-zA-Z0-9]{32,128}$/
webB
string
как выше
webC
string
как выше
addrStreet
string
адрес - улица
  • /^[a-zA-Z0-9]{32,128}$/
addrCity
string
адрес - город
  • /^[a-zA-Z0-9]{32,128}$/
addrState
string
адрес - область
  • /^[a-zA-Z0-9]{32,128}$/
addrZip
string
адрес - почтовый индекс
  • /^[a-zA-Z0-9]{32,128}$/
addrCountry
string
адрес - страна
  • /^[a-zA-Z0-9]{32,128}$/

параметры

Параметры
Переменная
Тип
Описание
langStatus
integer
0 = off, 1 = on
Включить / выключить языковую версию без удаления данных
  • default = 0
usePhoto
integer
0 = off, 1 = on
Включить / выключить аватарку, не удаляя ее
  • default = 1
cardStatus
integer
0 = off, 1 = on
Включить / выключить Визитку, не удаляя ее
  • default = 1

Языковая поддержка

Bonder позволяет своим Пользователям создавать Визитки на более чем 60 языках, и эта основная функциональность также доступна Пользователям API. Для вашего удобства мы подготовили репозитории, содержащие переведенные языковые коды, поддерживаемые Bonder, которые вы можете использовать при создании собственного приложения. Мы используем переменную lang для управления языковыми версиями. Вы будете использовать его для добавления, редактирования и удаления языковых версий.
  • Команда repositories
  • Запрос GET
curl -k -X GET \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
"https:// {{API_URL}} /repositories \
Успех HTTP/1.1 200 OK
{
  "success": true,
  "errors" : [],
  "result" : {
    "langList" : [local, lang]
  }
}
langList
значение
Тип
Описание
lang
string
код языка в соответствии с ISO 639-1: 2002
local
string
список названий местных языков, например en => English, ru => Русский
Образец ответа Сервер возвращает список доступных ресурсов: local, английский, русский, польский, китайский HTTP/1.1 200 OK
{
  "success": true,
  "errors" : [],
  "result" : {
    "langList" : ["local", "en", "ru", "pl", "zh"]
  }
}
Используйте значение из langList для загрузки необходимых вам ресурсов. Ответ всегда будет в виде пары ключ: значение.

Скачать список названий языков

  • Команда repositories
  • Запрос GET
curl -k -X GET \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
"https:// {{API_URL}} /repositories/local" \
Успех HTTP/1.1 200 OK
{
  "success": true,
  "errors" : [],
  "result" : {
    "pl" : "Polski",
    "en" : "English",
    "ru" : "Русский",
    ...,
    "ключ" : "значение"
 }
}

Скачать переведенные названия языков

  • Команда repositories
  • Запрос GET
Измените приведенный выше запрос в соответствии с примером ниже: "https:// {{API_URL}} /repositories/ru" \
"https:// {{API_URL}} /repositories/en" \
Если у вас нет ресурса, который вы ищете в репозиториях, пожалуйста, сообщите об этом в Службу Поддержки. Мы восполним пробелы как можно скорее. Если вы не можете дождаться нашего ответа, мы предлагаем вам загрузить доступные языковые коды и сделать свои собственные переводы.
Отказ HTTP/1.1 200OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль или адрес электронной почты или недействительный token
  • Предложения: повторить авторизацию
RESOURCE_NOT_FOUND_ERROR
Ресурс, который вы ищете, не существует
  • Предложения: проверьте ваш запрос
остальные
см. КОД-ОШИБКИ в разделе Авторизация

Создание нового Профиля

  • Команда users
  • Запрос post
curl -k -X POST \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Accept : application/json" \
"https:// {{API_URL}} /users" \
Успех HTTP/1.1 200 OK
{
  "success": true,
  "errors" : [],
  "result" : {
    "cardId" : string,
    "cardQrc" : string,
    "cardAddr" : string (url)
  }
}
РЕЗУЛЬТАТ ЗАПРОСА
Переменная
Тип
Описание
cardId
string
номер Визитки созданного Профиля
  • принимает во внимание заглавные и прописные буквы
  • /^[a-zA-Z0-9]{32,128}$/
cardAddr
string
адрес созданной Визитки
cardQrc
string
адрес Визитки – QR-код закодированный в base64
Значения cardId cardQrc cardAddr должны храниться локально на вашем сервере и назначаться Профилю. Переменная cardId необходима для правильной связи с API.
Отказ HTTP/1.1 200 OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль или адрес электронной почты или недействительный token
  • Предложения: повторить авторизацию
PROFILE_LIMIT_REACHED_ERROR
Лимит Профилей исчерпан
  • Предложения: обратитесь в Службу Поддержки, чтобы изменить Настройки Аккаунта
остальные
см. КОД-ОШИБКИ в разделе Авторизация

Сохранение данных

  • Мы не используем жесткие шаблоны запросов. Отправляйте только те данные, которые нуждаются в обновлении.
  • Используйте команду PUT, чтобы создать новый Профиль.
  • Добавьте язык с помощью ключей lang в секции translatable.
  • Если клиент не хочет указывать языковую версию, установите lang=un, что означает универсальный.
  • Изменитe до пяти языков в одном запросе (обновление, дополнение). Языковые версии более 5 будут игнорироваться.
  • Команда users
  • Запрос put
curl -k -X PUT \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
-d ' {
Когда cardStatus=0, Визитка будет отключена, и вы не сможете ее загрузить.   "settings" : {
    "cardStatus" : "0",
    "usePhoto" : "1"
  },
  "translatable" : {
Используйте langStatus для включения или отключения языков.     "pl" : {
      "name" : "John",
      "lastname" : "Connor",
      "position" : "Dyrektor Zarządzający"
    },
При добавлении нового языка мы устанавливаем langStatus=0 по умолчанию. Вы можете обойти эту настройку, назначив langStatus=1 при добавлении языка.     "en" : {
      "name" : "John",
      "lastname" : "Connor",
      "position" : "Managing Director",
      "displayName" : "The Great John Connor",
      "keywords" : "steel, steel pipe, tubular products"
    },
Несмотря на настройку langStatus=1, язык не будет готов к загрузке, пока не будет выполнено условие (name!=null && lastname!=null) || displayName!=null     "es" : {
      "langStatus" : "1",
      "name" : "John",
      "position" : "Director Ejecutivo"
    },
    "pt" : {
      "langStatus" : "1",
      "name" : "John",
      "lastname" : "Connor",
    },
    "ru" : {
      "langStatus" : "1",
      "name" : "",
      "lastname" : "Коннор",
    },
    "zh" : {
      "position" : "首席执行官"
    }
  },
  "non-translatable" : {
    "thumbnail" : "base64_encoded_image",
    "mobileA" : "123456789",
    "emailB" : "[email protected]"
  }
}
' \
"https:// {{API_URL}} /users/{{card_id}} \
Успех HTTP/1.1 200 OK
{
  "success": true,
  "errors" : [код-ошибки],
  "result" : {}
}
Несмотря на возвращение success=true, сервер может сообщить об ошибке, когда вы прикрепите аватарку к вашему запросу.
код-ошибки
Ошибка
Описание
THUMBNAIL_REJECTED_ERROR
Данные были сохранены, но загруженное изображение было отклонено сервером
  • Предложения: проверьте ваш генератор изображений
Отказ HTTP/1.1 200 OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль или адрес электронной почты или недействительный token
  • Предложения: повторить авторизацию
CARD_ID_NOT_FOUND_ERROR
Визитка cardId не существует, или у вас нет прав на изменение этого ресурса.
  • Предложения: проверьте ваш запрос
остальные
см. КОД-ОШИБКИ в разделе Авторизация

Изменение настроек

Параметры
Параметр
Тип
Описание
status
string
<enable, disable>

Изменение статуса Визитки

  • Команда users
  • Запрос put
curl -k -X PUT \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
https:// {{API_URL}} /users/{{card_id}}/cardStatus/{{status}}

Изменение статуса аватарки

  • Команда users
  • Запрос put
curl -k -X PUT \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
https:// {{API_URL}} /users/{{card_id}}/usePhoto/{{status}}

Изменение статуса языка

  • Команда users
  • Запрос put
curl -k -X PUT \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
https:// {{API_URL}} /users/{{card_id}}/langStatus/{{lang}}/{{status}}
Успех HTTP/1.1 200 OK
{
  "success" : true,
  "errors" : [],
  "result" : {}
}
Отказ HTTP/1.1 200 OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
все
см. КОД-ОШИБКИ в разделе Сохранение данных

Загрузка данных

  • Команда users
  • Запрос get
curl -k -X GET \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
"https:// {{API_URL}} /users/{{card_id}}" \
Успех HTTP/1.1 200 OK
{
"success": true,
"errors" : [],
"result" : {
  "translatable" : {
    "lang" : {
      "langStatus" : "1",
      "ключ" : "значение"
    },
    "lang" : {
      "langStatus" : "0",
      "ключ" : "значение"
    }
  },
  "non-translatable" : {
    "thumbnail" : "base64_encoded_image",
    "ключ" : "значение"
  },
  "settings" : {
    "cardStatus" : "1",
    "usePhoto" : "1",
    "cardQrc" : "base64_encoded_image",
    "cardAddr" : "URL",
    "usePhoto" : "1"
  }

}
Отказ HTTP/1.1 200 OK
{
  "success" : false,
  "errors" : [код-ошибки],
  "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль или адрес электронной почты или недействительный token
  • Предложения: повторить авторизацию
CARD_ID_NOT_FOUND_ERROR
Визитка cardId не существует, или у вас нет прав на изменение этого ресурса.
  • Предложения: проверьте ваш запрос
остальные
см. КОД-ОШИБКИ в разделе Авторизация

Удаление данных

Удаление языка

  • Команда users
  • Запрос delete
curl -k -X DELETE \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
"https:// {{API_URL}} /users/{{card_id}}/{{lang}}" \

Удаление Профиля

  • Команда users
  • Запрос delete
curl -k -X DELETE \
-H "X-Auth-Key : {{access_token}}" \
-H "X-Auth-Email : {{username}}" \
-H "Content-Type : application/json" \
-H "Accept : application/json" \
"https:// {{API_URL}} /users/{{card_id}}" \
Успех HTTP/1.1 200 OK
{
  "success" : true,
  "errors" : [],
  "result" : {}
}
Отказ HTTP/1.1 200 OK
{
 "success" : false,
 "errors" : [код-ошибки],
 "result" : {}
}
код-ошибки
Ошибка
Описание
INVALID_CREDENTIALS_ERROR
Неверный Пароль или адрес электронной почты или недействительный token
  • Предложения: повторить авторизацию
CARD_ID_NOT_FOUND_ERROR
Визитка cardId не существует, или у вас нет прав на изменение этого ресурса.
  • Предложения: проверьте ваш запрос
остальные
см. КОД-ОШИБКИ в разделе Авторизация