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

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

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

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

* URL - https\://[<mark style="color:red;">external-api.</mark>](http://external-api.weasy.pro/)<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 - пароль):

```
echo -n '12345:test' | base64
```

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

```
MTIzNDU6dGVzdA==
```

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

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

```
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).&#x20;
