.. _JSONata: https://jsonata.org/

Регистрация коннектора в платформе
----------------------------------
Для того, чтобы платформа могла работать с коннектором,
он должен быть в ней зарегистрирован.

Регистрация коннектора в платформе выполняется POST-запросом
``https://<server_name>/v1/connectors``:

.. http:example::
    :request: requests/addConnectorIn.txt
    :response: requests/addConnectorOut.txt

**Запрос:**

* **attributes** (dict) - словарь с параметрами для создания коннектора.
  Обязательный параметр.

  * **cn** (str) - имя коннектора. Необязательный атрибут. По умолчанию = ``id`` вновь созданного коннектора.
  * **description** (str) - описание коннектора. Необязательный атрибут.
  * **prsEntityTypeCode** (int) - Необязательный атрибут,
    может использоваться разработчиками коннекторов по своему усмотрению.
  * **prsIndex** (int) - Если у узлов одного уровня иерархии проставлены индексы, то
    перед отдачей клиенту списка экземпляров они сортируются
    в соответствии с их индексами. Необязательный атрибут.
  * **prsActive** (bool) - Определяет, активен ли коннектор. Необязательный атрибут. По умолчанию = ``true``.
  * **prsJsonConfigString** (str) - Конфигурация коннектора.
    Имеет вид:

    .. code-block:: json

       {
           "source": {},
           "log": {
               "level": "INFO",
               "fileName": "logs/prs_connector.log",
               "maxBytes": 10485760,
               "backupCount": 10
           }
       }

    где:

        * **source** (json) - информация для коннектора о том, как подключаться к источнику данных;

          Формат этого ключа целиком зависит от конкретной реализации коннектора и
          должен быть описан в его документации.
        * **log** (json) - настройки логирования.


* **linkTags** (list[json]) - список тегов, для которых коннектор должен поставлять данные.
  Необязательный атрибут.

  Каждый элемент списка - json, описывающий один привязанный к коннектору тег.

  Элемент имеет вид:

  .. code-block:: json

     {
        "tagId": "<tag_id>",
        "attributes": {
            "prsJsonConfigString": {
                "source": {},
                "maxDev": 0.5,
                "JSONata": "<some jsonata expression>"
            }
        }
     }

  где:

  * **tagId** (str) - id прикрепляемого тега. Обязательный атрибут.
  * **attributes** (json) - json с параметрами для прилинкованного тега. Json имеет один ключ -
    **prsJsonConfigString**, который, в свою очередь, содержит три ключа:

    * **source** (dict) - информация для коннектора о том, каким образом получать данные тега из источника.

      Формат этого ключа целиком зависит от конкретной реализации коннектора и должен быть описан в его
      документации.
    * **maxDev** (float) - максимально значимое отклонение значения тега. Если вновь прочитанное коннектором
      значение тега отличается от последнего, отправленного в платформу значения меньше, чем на указанную
      в **maxDev** величину, то новое значение тега просто игнорируется. Таким образом, с помощью этого ключа
      коннектор отсеивает незначащие отклонения параметров.

      Если в теге хранятся значения типов ``str`` или ``json``, то если ``maxDev = 0``, то в платформу будет отсылаться
      каждое новое прочитанное значение тега. Если же ``maxDev != 0``,
      то в платформу будет отсылаться новое прочитанное значение в том случае, если оно отличается от предыдущего.
    * **JSONata** (str) - выражение на языке JSONata_, которое будет применяться к каждому прочитанному
      из источника значению тега.

      Если отсутствует, значение будет браться как есть.


**Ответ:**

    * **id** (uuid) - id созданного коннектора.
    * **detail** (str) - пояснения к ошибке.

.. note::

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