.. role:: raw-html-m2r(raw)
   :format: html


Взаимодействие с сервисом
=========================

Структура запроса
^^^^^^^^^^^^^^^^^

Взаимодействие с сервисом осуществляется через REST API с помощью стандартных HTTP-запросов.

**Структура запроса**\ :


* URL - https://\ `\ :raw-html-m2r:`<mark style="color:red;">external-api.</mark>` <http://external-api.weasy.pro/>`_\ :raw-html-m2r:`<mark style="color:red;">weasy.pro</mark>`\ /<вызываeмое действие>;
* тип запроса - POST;
* Content-Type - application/json;
* авторизация - HTTP Basic;
* кодировка символов - UTF-8.

Авторизация
^^^^^^^^^^^

В API используется аутентификация на основе базовой схемы. При `подключении  <https://app.gitbook.com/o/-MO2Cxuf7eFR5LrAsrNf/s/NeYDqaDV1qVacezvfC8J/>`_\ каждый клиент получает ID ноды (идентификатор подключения) и пароль. Для авторизации нужно перекодировать эти параметры, разделённые двоеточием, в формат base64. Пример для ОС семейства Linux (39999 - ID ноды, 123654 - пароль):

.. code-block::

   echo -n '12345:test' | base64

Результат выполненной команды выглядит так:

.. code-block::

   MTIzNDU6dGVzdA==

Эту строку нужно передавать во всех запросах в заголовке Authorization.

Пример запроса к HTTP API с помощью утилиты cURL:

.. code-block::

   curl -X POST
   -H "Content-Type: application/json"
   -H "Authorization: Basic MTIzNDU6dGVzdA=="
   -d '<содержимое запроса>'
   https://external-api.weasy.pro/<вызываeмое действие>

Особенности формирования запроса
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Все временные метки в API передаются в формате Unixtime с учетом миллисекунд. Это отличается от наиболее распространенной реализации, где в основном используются секунды.

Номер телефона указывается в международном формате MSISDN, состоящем из кода страны, DEF-кода оператора и номера абонента. Например, российский номер выглядит так: 79001234567, где 7 - код страны (Россия). Если клиент по той или иной причине использует другой формат номеров (со скобками, с дополнительными символами и т.п.), можно настроить автоматическую конвертацию номеров в MSISDN. Правила конвертации оговариваются с каждым клиентом индивидуально.

В API предусмотрена отправка одиночных сообщений методом /message или пачки сообщений, методом /pack. Подробное описание методов взаимодействия с API представлено в разделе `Отправка сообщений <https://app.gitbook.com/o/-MO2Cxuf7eFR5LrAsrNf/s/NeYDqaDV1qVacezvfC8J/~/changes/xhJfQ8usf4vuADNC1Y0s/vzaimodeistvie-s-servisom/otpravka-soobshenii>`_. 
 
.. toctree::
   :hidden:

   otpravka-soobshenii.md
   poluchenie-uvedomlenii.md
