Addressbook

Как установить сертификат

  • Для начала необходимо получить сертификат на сайте Центра Сертификации;
  • Жмём ссылку получить;
  • Далее система вам предложит войти с помощью логина с паролем от домена Sigma, вводим данные, жмём войти;
  • Успешная авторизация инициирует скачивания сертификата на ваш компьютер. Необходимо скачать и инсталлировать все три сертификата, ссылки на которые будут на странице.

Если у вас затруднения с инсталляцией сертификатов, то в нижней части страницы есть ссылки на пошаговые инструкции по инсталляции для каждой ОС. После того, как устройство (компьютер) настроен, сертификаты инсталлированы, возвращаемся на главную страницу SuccessFactors. Здесь кликаем на войти, автоматически система затребует сертификат, указываем в открывшемся окне сертификат с вашим логином от Sigma. После этого вы войдёте в систему, и можно начинать работать.

GetAddressBook

SOAP 1.1

The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.

POST /Addressbook.asmx HTTP/1.1
Host: addressgetter.mynet.com
Content-Type: text/xml; charset=utf-8
Content-Length: 
SOAPAction: "http://tempuri.org/GetAddressBook"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetAddressBook xmlns="http://tempuri.org/">
      <email></email>
      <password></password>
    </GetAddressBook>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetAddressBookResponse xmlns="http://tempuri.org/">
      <GetAddressBookResult></GetAddressBookResult>
    </GetAddressBookResponse>
  </soap:Body>
</soap:Envelope>

SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /Addressbook.asmx HTTP/1.1
Host: addressgetter.mynet.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetAddressBook xmlns="http://tempuri.org/">
      <email></email>
      <password></password>
    </GetAddressBook>
  </soap12:Body>
</soap12:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetAddressBookResponse xmlns="http://tempuri.org/">
      <GetAddressBookResult></GetAddressBookResult>
    </GetAddressBookResponse>
  </soap12:Body>
</soap12:Envelope>

HTTP GET

The following is a sample HTTP GET request and response. The placeholders shown need to be replaced with actual values.

GET /Addressbook.asmx/GetAddressBook?=&= HTTP/1.1
Host: addressgetter.mynet.com
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 

<?xml version="1.0"?>

HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

POST /Addressbook.asmx/GetAddressBook HTTP/1.1
Host: addressgetter.mynet.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 

=&=
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 

<?xml version="1.0"?>

Работа с отписавшимися¶

Unsubscribed GET

https://integrationapi.net/addressbook/v2/Unsubscribed?TaskId={TaskId}

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

Параметр Тип данных Описание Обязательнй
TaskId int Идентификатор рассылки Нет

Возвращаемый результат — список записей UnsubscribedDto

Параметр Тип данных Описание
Email string Email адрес
DateTime DateTime Дата и время добавления
Reason string Причина отписки
TaskId int Идентификатор рассылки

Пример ответа:

{
    "Result":[{
        "Email" "generated_1@generated.com",
        "DateTime" "/Date(1439219917910-0000)/",
        "Reason" "Другая причина",
        "TaskId" 133696
    },
    {
        "Email" "generated_11@generated.com",
        "DateTime" "/Date(1439219917910-0000)/",
        "Reason" "Скучные рассылки у вас",
        "TaskId" 133696
    }],
    "Code" "ok",
    "Description" "ok"
}

Работа с группами контактов¶

ContactGroups GET (all)

https://integrationapi.net/addressbook/v2/ContactGroups

Метод возвращает список всех групп контактов пользователя.
Возвращаемый результат — список объектов типа ContactGroupDto.

Возвращаемый результат — список записей ContactGroupDto

Параметр Тип данных Описание
ContactGroupId int Идентификатор группы
Name string Имя группы
Description string Описание группы
CreatedDate DateTime Дата создания
ContactsCount int Количество контактов в группе

Пример ответа:

{
    "Result":[
        {
            "ContactGroupId" 252,
            "Name" "snuk",
            "Description" "",
            "CreatedDate" "/Date(1426504354337-0000)/",
            "ContactsCount" 3
        },
        {
            "ContactGroupId" 331,
            "Name" "zzzzzzz04.02.2016 16:49:35",
            "Description" "AB api intgration test",
            "CreatedDate" "/Date(1454582978323-0000)/",
            "ContactsCount" 
        }
    ],
    "Code" "ok",
    "Description" "ok"
}

ContactGroups GET

https://integrationapi.net/addressbook/v2/ContactGroups/{ContactGroupId}

Метод возвращает группу по идентификатору. В качестве Result возвращается объект ContactGroupDto, описание см. выше.

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

Параметр Тип данных Описание Обязательнй
ContactGroupId int Идентификатор группы (предаётся в url) Да

Пример ответа:

{
    "Result":{
        "ContactGroupId" 332,
        "Name" "new group",
        "Description" "best new group",
        "CreatedDate" "/Date(1454587881407-0000)/",
        "ContactsCount" 
    },
    "Code" "ok",
    "Description" "ok"
}

ContactGroups POST

https://integrationapi.net/addressbook/v2/ContactGroups

Метод добавляет новую группу контактов. Если группа была успешно добавлена, возвращается код «ok» и http код 201. Метод возвращает идентификатор группы ContactGroupId в качестве Result.

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

Параметр Тип данных Описание Обязательнй
Name string Имя группы Да
Description string Описание группы Нет

Пример запроса:

{
    "Name""new group",
    "Description""best group"
}

Пример ответа:

{
"Result" 332,
"Code" "ok",
"Description" "ok"
}

ContactGroups PUT

https://integrationapi.net/addressbook/v2/ContactGroups/{ContactGroupId}

Метод обновляет имя и описание группы, затирая старые значения, возвращается только стандартный ответ, без поля Result.

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

Параметр Тип данных Описание Обязательнй
ContactGroupId int Идентификатор группы (передаётся в url) Да
Name string Имя группы Да
Description string Описание группы Нет

Пример запроса:

{"Name""new group","Description""best new group"}

Пример ответа:

{
    "Code" "ok",
    "Description" "ok"
}

Requests and Responses

URL Action Description Success HTTP Status Code
/address_book.json
/address_book.json
/address_book/registered_users.json

Upload address book

Upload address book. Using this API you can actually do 4 things:

  • Upload fresh address book (overwrite the previous one)
  • Upload new contacts
  • Update existing contacts

Parameters

Param Required Type Value Example Description
contacts Yes Hash {‘name’:’Frederic Cartwright’, ‘phone’: ‘8879108395’} Contains array of contact hashes. Each contact can contain 3 keys: name: contact name. String (required only for create/update), min 1 max 255 symbols. phone: contact phone. String (required), min 10 max 15 symbols. destroy: used in a case of contact destroy. Integer (not required, possible value 1).
force No Integer 1 Defines force rewrite mode. If set 1 then all previous contacts for device context will be replaced by new ones.
udid No String D337E8A4-80AD-8ABA-9F5D-579EFF6BACAB User’s device identifier. If specified all operations will be in this context. Max length 64 symbols. If not — it means a user has one global address book across all his devices.

Request

curl -X POST \
-H "Content-Type: application/json" \
-H "QB-Token: cf5709d6013fdb7a6787fbeb8340afed8aec4c69" \
-d '{"contacts": , "force": 1, "udid": "A337E8A4-80AD-8ABA-9F5D-579EFF6BACAB"}'' \
https://api.quickblox.com/address_book.json

Response

{
  "deleted"  ,
  "rejected"  {
    "5"   "Invalid fields set" ,
    "6"   "Length of 'phone' field should be min: 10 and max: 15." ,
    "8"   "Length of 'name' field should be min: 1 and max: 255." 
  },
  "created"  4,
  "updated"  1
}

Parameters

Param Required Type Value Example Description
udid No String D337E8A4-80AD-8ABA-9F5D-579EFF6BACAB User’s device identifier. If specified all operations will be in this context. Max length 64 symbols. If not — it means a user has one global address book across all his devices.

Request

curl -X GET \
-H "Content-Type: application/json" \
-H "QB-Token: cf5709d6013fdb7a6787fbeb8340afed8aec4c69" \
https://api.quickblox.comaddress_book.json

Response

 
  {
    "phone"  "6278336065",
    "name"  "Frederic Cartwright"
  },
  {
    "phone"  "72783360345",
    "name"  "John Samson"
  }  

Parameters

Param Required Type Value Example Description
udid No String D337E8A4-80AD-8ABA-9F5D-579EFF6BACAB User’s device identifier. If specified all operations will be in this context. Max length 64 symbols. If not — it means a user has one global address book across all his devices.
compact No Integer 1 Specifies whether to return only users’ id+phone fields. If 0 — will return all user’s fields.

Request

curl -X GET \
-H "Content-Type: application/json" \
-H "QB-Token: cf5709d6013fdb7a6787fbeb8340afed8aec4c69" \
https://api.quickblox.comaddress_bookregistered_users.json

Response

{
  "items" 
    {
      "user" {
        "id" 87,
        "full_name" "John Partizan",
        "email" "john@domain.com",
        "login" "Kitty",
        "phone" "7665891",
        "website" "https://partizan.com",
        "created_at" "2012-03-20T08:47:34Z",
        "updated_at" "2012-05-09T08:25:33Z",
        "last_request_at" "2012-05-08T13:07:37Z",
        "external_user_id" 158,
         "1346987743",
         "545878645453",
         23487743,
        "blob_id" null,
        "custom_data" null,
        "user_tags" "hello, world, hey"
      }
    },
  ...
  
}

Теперь по Борщеву HTTPS

  • Очевидно, что на своей стороне вы можете только сгенерировать приватный ключ и запрос на подпись сертификата.
  • При генерировании запроса в качестве Common Name обязательно нужно указывать ServerName вашего виртуального хоста и все алиасы, которые вы пропишете для него в конфигурации веб-сервера. Например, domain.tld и www.domain.tld, хотя «www» CA обычно сами добавляют при выпуске сертификатов. Чаще всего можно указать просто *.domain.tld (чтобы запросить так называемый wildcard certificate), но возможно ли это, нужно узнавать у конкретного CA, а также четко понимать последствия такого решения. Как правило, общедоступные CA не дают в качестве алиаса использовать IP-адрес.
  • При генерировании запроса не стоит указывать challenge password, иначе вам придется вводить его вручную при каждом рестарте веб-сервера.
  • Обычно общедоступные CA — это маститые конторы вроде Comodo, Symantec и GoDaddy. Выпуск сертификата стоит денег, а хорошего сертификата — много денег. Впрочем, помимо них относительно недавно существует Let’s Encrypt — бесплатный проект, которому склонны доверять многие, но я бы очень хорошо подумал, какие ресурсы и при каких обстоятельствах защищать их сертификатами.
  • Эти ребята договорились с другими ребятами таким образом, что последние предустанавливают сертификаты (публичные части ключей, т.е. ca.crt из прошлого примера) этих CA в свои браузеры. То есть о PKI как таковой речи быть не может. Просто все договорились верить определенным компаниям. Это не плохо, так как HTTPS в конечном итоге нужен для шифрования трафика, а шифровать его можно и самоподписанной парой ключей. Скорее, тут вопрос престижа, чтобы не светить на весь интернет предупреждением о просроченном/недействительном сертификате.
  • Некоторые особо одаренные CA предлагают для удобства сгенерировать приватный ключ и CSR за вас. Этого делать не надо. Надеюсь, понятно, почему.
  • О сроке действия сертификатов. Всегда нужно заранее продумать систему их своевременного обновления. Особенно это актуально для сертификатов от Let’s Encrypt, срок действия которых составляет всего 3 месяца (на момент написания).
  • И о договоренностях между «этими ребятами». Как оказалось после давешней фееричной истории с Google и Symantec, теперь нужно уметь подстелить соломки и на такой «веселый» случай.

Очереди астериска и AddressBook

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

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

Установка и настройка приложения Addressbook

Поискав на просторах интернета, был найден простой и удобный интерфейс телефонной книги, реализованный на базе php>= 5.2 и Mysql

Установка Addressbook

1.Приступим к установке веб приложения:

    1. Перейдем в корневую директорию Apache, в нашем примере — это

Описание¶

Сервис представляет собой удобный интерфейс для управления списками контактов адресной книги и получения списка отписавшихся
от рассылок.

Список методов

Набор методов для работы с группами контактов — ContactGroups.

Ресурс Метод Описание
/ContactGroups GET Получение списка всех групп
/ContactGroups/{ContactGroupId} GET Получение группы с подробной информацией
/ContactGroups POST Добавление группы
/ContactGroups/{ContactGroupId} PUT Редактирование группы
/ContactGroups/{ContactGroupId} DELETE Удаление группы

Набор методов для импорта контактов — ContactsImport.

Ресурс Метод Описание
/ContactsImport POST Импорт контактов
/ContactsImport/{ImportId}/Progress GET Запрос прогресса добавления
контактов в базу
/ContactsImport/{ImportId}/Duplicates DELETE Удаление дубликатов из завершённого
импорта

Набор методов для работы с контактами — Contacts.

Ресурс Метод Описание
/Contacts?Query={Key} GET Получение диапазона контактов по телефону или почте
/Contacts/{ContactId} GET Получение контакта с подробной информацией
/Contacts POST Создание контакта
/Contacts/{ContactId} PATCH Редактирование контакта
/Contacts/{ContactId} DELETE Удаление контакта

Набор методов для работы с отписавшимися — Unsubscribed.

Ресурс Метод Описание
/Unsubscribed?TaskId={TaskId} GET Получение диапазона отписавшихся по рассылке
/Unsubscribed GET Получение диапазона отписавшихся

Запрос к API состоит из следующих элементов:

  • Основного URL запроса: https://integrationapi.net/addressbook/v2
  • Ресурса, например: /Contacts
  • Параметров запроса в кодировке UTF-8.

Сервис позволяет передавать параметры в следующих форматах:
XML, JSON, JSV, CSV.

Авторизация

Для доступа к сервису необходимо пройти авторизацию.
Сервис поддерживает базовую авторизацию через заголовок Authorization
(https://en.wikipedia.org/wiki/Basic_access_authentication):

Authorization: Basic dGVzdGVyOjExMTExMQ==

В заголовке необходимо передать логин и пароль из ЛК (https://my.devinotele.com) в формате login:password в base64 кодировке.

Ответ API состоит из 2х частей:

  1. Код с описанием — эта часть присутствует во всех ответах.
  2. Result, специфичный для каждого запроса. Может отсутствовать.
{
    "Result":{
        ...
    },
    "Code": "validation_error",
    "Description": "user not found"
}

Набор кодов ограничен, а набор описаний зависит от конкретного метода.
Код можно использовать для проверки статуса запроса, а описание предназначено
для диагностики возможных проблем.
Описание может быть изменено в новой версии API без предупреждения о нарушении обратной совместимости. Набор кодов также может быть расширен.

Локализация

В поле Description может возвращаться локализованная строка с текстом ошибки.
Для этого необходимо передать заголовок Accept-Language с нужным языком.
В текущей версии поддерживаются русский и английский языки.

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

Accept-Language: ru-RU

Запрос диапазонов

Некоторые запросы предполагают возвращение только части данных.
Для таких запросов необходимо передавать специальный заголовок:

Range: items=1-100

Оба предела диапазона включаются. Запросы, для которых нужен данный заголовок:

  • /Unsubscribed
  • /Contacts?Query={Key}

При отсутствии заголовка данные запросы возвращают ошибку
validation_error с http кодом 416 RequestedRangeNotSatisfiable.

Работа в системе: с чего начать

Чтобы начать пользоваться системой, необходимо разово настроить систему на своём компьютерном устройстве, инсталлировать сертификат безопасности. В том случае, если у вас на компьютере уже установлен почтовый клиент @sberbank, то перед тем, как настраивать устройство, нужно кликнуть по баннеру войти на странице входа sf sberbank. Если при этом сертификат не найден или выдаёт система ошибку, то необходимо сделать полную настройку устройства, которая заключается в том, что пользователь должен получить сертификат и инсталлировать его.

Важно! Для получения сертификата пользователь должен иметь действую учётку домена Sigma

Работа с отписавшимися¶

Unsubscribed GET

https://integrationapi.net/addressbook/v2/Unsubscribed?TaskId={TaskId}

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

Параметр Тип данных Описание Обязательнй
TaskId int Идентификатор рассылки Нет

Возвращаемый результат — список записей UnsubscribedDto

Параметр Тип данных Описание
Email string Email адрес
DateTime DateTime Дата и время добавления
Reason string Причина отписки
TaskId int Идентификатор рассылки

Пример ответа:

{
    "Result":[{
        "Email" "generated_1@generated.com",
        "DateTime" "/Date(1439219917910-0000)/",
        "Reason" "Другая причина",
        "TaskId" 133696
    },
    {
        "Email" "generated_11@generated.com",
        "DateTime" "/Date(1439219917910-0000)/",
        "Reason" "Скучные рассылки у вас",
        "TaskId" 133696
    }],
    "Code" "ok",
    "Description" "ok"
}

OpenVPN: как это бывает

  • a.ivanov-office.key — его приватный ключ, самая мякотка, которую нужно хранить как зеницу ока и никому не показывать (аналог в SSH — файл id_rsa);
  • a.ivanov-office.csr — Certificate Signing Request, запрос на подпись сертификата, в котором описано, для кого нужно выписать сертификат, сгенерирован на основе предыдущего файла, чтобы не «палить» приватный ключ (для работы самого OpenVPN нафиг не нужен);
  • a.ivanov-office.crt — вожделенный сертификат, который он предъявляет OpenVPN серверу, чтобы тот разрешил ему подключение (по сути это публичная часть ключа);
  • ca.crt — сертификат нашего CA, чтобы OpenVPN клиент предъявил его серверу, чтобы тот сопоставил его с приватной частью, которая лежит у него, и убедился, что сертификат подписывал именно он, а не кто-то другой. «Деталька», которая обозначает принадлежность OpenVPN клиента Иванова А.А. к PKI, в которой работает сервер.

Настройка устройства для доступа к сервисам Банка

Настройка вашего оборудования заключается в получении и установке сертификатов.
Для этого Вам необходима действующая учётная запись в домене Sigma.

Установить сертификаты Банка на iPhone/iPad

1. Я не знаю, есть ли у меня учетная запись в домене Sigma. Как проверить её наличие?
Вы можете самостоятельно получить информацию о наличии учетной записи, используя портал «Лицо ДРУГа», выставить обращение по шаблону «Разблокировка/блокировка учетных записей» – «Уточнение статуса учетной записи».

2. У меня нет учетной записи в домене Sigma. Как мне её создать?
Для создания учетной записи в домене Sigma необходимо, используя портал «Лицо ДРУГа», выставить обращение на создание учетной записи в домене Sigma по шаблону «Программное обеспечение» – «Заявки на предоставление доступа к АС/ИР» – «Заявка на заведение учетной записи в домене» – «Заявка на доступ — Домен Sigma (пользователи Интернет)».

3. Не помню (не знаю) логин учетной записи в домене Sigma. Как его узнать?
Для уточнения логина в домене Sigma, используя портал «Лицо ДРУГа», Вам необходимо выставить обращение по шаблону «Разблокировка/блокировка учетных записей» – «Уточнение логина учетной записи» (выбрать проблему «Неизвестен логин» и указать домен «Sigma»).

4. Не помню (не знаю) пароль к учетной записи в домене Sigma. Как его узнать?
Данная проблема решается сбросом пароля на первоначальный (транспортный), для этого Вам необходимо, используя портал «Лицо ДРУГа», выставить обращение по шаблону «Разблокировка/блокировка учетных записей» — «Разблокировка учетной записи в Домене Sigma (@sberbank.ru)».

5. Моя учетная запись в домене Sigma заблокирована. Как разблокировать?
Для разблокировки учетной записи в домене Sigma Вам необходимо, используя портал «Лицо ДРУГа», выставить обращение по шаблону «Разблокировка/блокировка учетных записей» — «Разблокировка учетной записи в Домене Sigma (@sberbank.ru)».

6. Ввожу корректные логин/пароль учетной записи в домене SIGMA, но войти на портал PKI не удается. Что делать?
     a. Проверить наличие учетной записи в домене Sigma (см. пункт №1)
     b. У Вас нет учетной записи в домене Sigma, необходимо создать учетную запись (см. пункт №2)
     c. Вы вводите некорректный пароль, необходимо сбросить пароль от учетной записи в домене Sigma на первоначальный (транспортный) (см. пункт №4)
     d. Ваша учетная запись заблокирована, необходимо разблокировать учетную запись в домене Sigma (см. пункт №5)

Описание¶

Сервис представляет собой удобный интерфейс для управления списками контактов адресной книги и получения списка отписавшихся
от рассылок.

Список методов

Набор методов для работы с группами контактов — ContactGroups.

Ресурс Метод Описание
/ContactGroups GET Получение списка всех групп
/ContactGroups/{ContactGroupId} GET Получение группы с подробной информацией
/ContactGroups POST Добавление группы
/ContactGroups/{ContactGroupId} PUT Редактирование группы
/ContactGroups/{ContactGroupId} DELETE Удаление группы

Набор методов для импорта контактов — ContactsImport.

Ресурс Метод Описание
/ContactsImport POST Импорт контактов
/ContactsImport/{ImportId}/Progress GET Запрос прогресса добавления
контактов в базу
/ContactsImport/{ImportId}/Duplicates DELETE Удаление дубликатов из завершённого
импорта

Набор методов для работы с контактами — Contacts.

Ресурс Метод Описание
/Contacts?Query={Key} GET Получение диапазона контактов по телефону или почте
/Contacts/{ContactId} GET Получение контакта с подробной информацией
/Contacts POST Создание контакта
/Contacts/{ContactId} PATCH Редактирование контакта
/Contacts/{ContactId} DELETE Удаление контакта

Набор методов для работы с отписавшимися — Unsubscribed.

Ресурс Метод Описание
/Unsubscribed?TaskId={TaskId} GET Получение диапазона отписавшихся по рассылке
/Unsubscribed GET Получение диапазона отписавшихся

Запрос к API состоит из следующих элементов:

  • Основного URL запроса: https://integrationapi.net/addressbook/v2
  • Ресурса, например: /Contacts
  • Параметров запроса в кодировке UTF-8.

Сервис позволяет передавать параметры в следующих форматах:
XML, JSON, JSV, CSV.

Авторизация

Для доступа к сервису необходимо пройти авторизацию.
Сервис поддерживает базовую авторизацию через заголовок Authorization
(https://en.wikipedia.org/wiki/Basic_access_authentication):

Authorization: Basic dGVzdGVyOjExMTExMQ==

В заголовке необходимо передать логин и пароль из ЛК (https://my.devinotele.com) в формате login:password в base64 кодировке.

Ответ API состоит из 2х частей:

  1. Код с описанием — эта часть присутствует во всех ответах.
  2. Result, специфичный для каждого запроса. Может отсутствовать.
{
    "Result":{
        ...
    },
    "Code": "validation_error",
    "Description": "user not found"
}

Набор кодов ограничен, а набор описаний зависит от конкретного метода.
Код можно использовать для проверки статуса запроса, а описание предназначено
для диагностики возможных проблем.
Описание может быть изменено в новой версии API без предупреждения о нарушении обратной совместимости. Набор кодов также может быть расширен.

Локализация

В поле Description может возвращаться локализованная строка с текстом ошибки.
Для этого необходимо передать заголовок Accept-Language с нужным языком.
В текущей версии поддерживаются русский и английский языки.

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

Accept-Language: ru-RU

Запрос диапазонов

Некоторые запросы предполагают возвращение только части данных.
Для таких запросов необходимо передавать специальный заголовок:

Range: items=1-100

Оба предела диапазона включаются. Запросы, для которых нужен данный заголовок:

  • /Unsubscribed
  • /Contacts?Query={Key}

При отсутствии заголовка данные запросы возвращают ошибку
validation_error с http кодом 416 RequestedRangeNotSatisfiable.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *