# [`\Shef\InSync\Api`] API

> Обращение к внешнему API по HTTP — наследник \Shef\InSync\Api\AConnector.

Обращение к внешнему API по HTTP — наследник `\Shef\InSync\Api\AConnector`.

> Пример смотреть в модуле **[shef.demosync](https://marketplace.1c-bitrix.ru/solutions/shef.demosync/)**

| класс | что делает |
|---|---|
| AConnector | запрос через `HttpClient` ядра, разбор ответа, логирование ошибок в shef.problems |
| Headers | маска секретных заголовков для лога |

Что пишете вы:

* `getPath()` — адрес по имени функции API;
* `getModuleId()` — модуль, от имени которого пишутся проблемы;
* при необходимости `processSuccess()`, `processError()`, `processError50x()` —
  разбор ответа. Помните, что 200 — ещё не успех бизнес-логики.

`\Shef\InSync\Api\AConnector::sendRequest()` отправляет запрос (`GET` —
параметры в адрес, остальные методы — телом) и возвращает `Result` с
отправленным и полученным. Таймауты — из опций объекта: `socketTimeout` (30),
`streamTimeout` (60), `waitResponse` (да). Значения приводятся к типам ядра: секунды — целым, `waitResponse` — флагом.

При ошибке запрос пишется в лог проблем. Заголовки с `auth`, `token`, `key`,
`secret`, `pass`, `cookie`, `session`, `sign`, `access` в имени уходят туда маской
(`\Shef\InSync\Api\Headers::mask()`); параметры — как есть, секреты в них не
кладите. Ответ не 200 без ошибок соединения даёт ошибку `status: <код>`, а не
пустую строку, как до 2.0.0.

---

[← Импорт](/modules/insync/import) | [↑ Содержание](/modules/insync) | [Парсинг XML →](/modules/insync/xml)

::note
Источник: [insync/docs/3_api.md](https://github.com/bx-shef/insync/blob/main/docs/3_api.md) — правки туда, сайт пересобирается сам.
::
