> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/ru/guide/devices-and-settings/connectivity/data-forwarding/navixy-ws.md).

# Navixy Web Service

Позвольте сторонней системе запрашивать исторические GPS-данные из Navixy через SOAP, запрашивая до 100 устройств и данные за один день за вызов.

Navixy Web Service предоставляет сторонней системе SOAP-эндпоинт, к которому она обращается за данными мониторинга. Это вариант, который стоит выбрать, когда принимающая система предпочитает получать данные по своему расписанию или когда она не может принять входящее соединение.

{% hint style="warning" %}
Navixy Web Service работает иначе, чем любой другой протокол в **Ретрансляция** блоке. Остальные отправляют каждое сообщение в адрес назначения по мере поступления. Navixy Web Service ничего не отправляет: Navixy размещает эндпоинт, а принимающая система запрашивает нужные ей данные.

У этого есть два следствия. Navixy никогда не подключается к принимающей системе, поэтому **Адрес** и **Порт** эти поля не используются. А поскольку принимающая система читает сохранённые данные, а не живой поток, запрос может охватывать прошлый период, что не поддерживает ни один другой протокол.
{% endhint %}

Поскольку данные передаются в XML через SOAP и не используется какой-либо специфичный для Navixy формат, этот протокол подходит любому партнёру, который может работать с WSDL.

В Navixy выберите **Navixy Web Service** в **Протокол** раскрывающийся список.

## Что возвращает эндпоинт

Эндпоинт возвращает по одной записи на каждую сохранённую позицию со следующими полями:

| Поле                 | Содержимое                                                                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `deviceId`           | ID устройства, как указан в запросе                                                                                                                                      |
| `dateGps`            | Когда устройство зафиксировало позицию, в UTC                                                                                                                            |
| `широта` и `долгота` | Позиция в градусах                                                                                                                                                       |
| `высота`             | Высота в метрах                                                                                                                                                          |
| `speedGps`           | Скорость в километрах в час                                                                                                                                              |
| `курс`               | Курс в виде направления по компасу, например `N`, `SE`, или `В`                                                                                                          |
| `зажигание`          | Было ли включено зажигание                                                                                                                                               |
| `numSat`             | Количество спутников, которые использовало устройство                                                                                                                    |
| `Одометр`            | Показание одометра, переданное устройством, в километрах                                                                                                                 |
| `unitPlate`          | Регистрационный номер транспортного средства, привязанного к устройству                                                                                                  |
| `eventId`            | Код события, соответствующий [идентификаторам событий Navixy Generic Protocol](/docs/iot-logic-api/technologies/navixy-generic-protocol/predefined-event-identifiers.md) |

Два поля зависят от данных вне устройства. `unitPlate` пусто, если устройство не связано с транспортным средством, а Navixy сокращает регистрационный номер, удаляя пробелы и дефисы и оставляя первые шесть символов. Устройство, которому не разрешено подключаться, не возвращает вообще никаких записей, а не ошибку.

## Ограничения запросов

Каждый запрос должен укладываться в эти ограничения, иначе эндпоинт вернёт ошибку:

* Не более **100 идентификаторов устройств** на запрос.
* Не более **один день** между датой начала и датой окончания. Небольшое превышение допустимо, но запрос, охватывающий несколько дней, завершается с ошибкой `Слишком длинный интервал`.

Чтобы собрать данные за более длительный период, отправляйте один запрос на каждый день.

## Перед началом

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

Выберите логин, который ещё не использует другой ретранслятор в вашей учётной записи, потому что Navixy идентифицирует ретранслятор по паре логин и пароль.

## Настройте эндпоинт

{% stepper %}
{% step %}

### Откройте блок «Ретрансляция»

Перейдите **Управление устройствами**, выберите устройство, затем найдите **Ретрансляция** блок.
{% endstep %}

{% step %}

### Откройте список протоколов

Нажмите **Протоколы**, затем нажмите **+** чтобы добавить конфигурацию.
{% endstep %}

{% step %}

### Укажите настройки Navixy Web Service

Заполните поля следующим образом:

* **Название**: метка, идентифицирующая этот ретранслятор
* **Протокол**: **Navixy Web Service**
* **Адрес**: любой допустимый адрес. Этот протокол его не использует, но поле обязательно.
* **Порт**: любой номер порта. Этот протокол его тоже не использует.
* **Вход**: логин на ваш выбор, который ещё не используется другим ретранслятором
* **Пароль**: пароль на ваш выбор

Передайте логин и пароль стороне, которая будет обращаться к эндпоинту.
{% endstep %}

{% step %}

### Включите и сохраните

Включите **Включено**, затем нажмите **Сохранить**.
{% endstep %}

{% step %}

### Привяжите ретранслятор к устройствам

В настройках каждого устройства **Ретрансляция** включите переключатель для созданного вами ретранслятора, затем нажмите **Сохранить**. Только привязанные устройства возвращают данные. External ID в этом протоколе не используется.
{% endstep %}
{% endstepper %}

## Выполните запрос к конечной точке

Адрес WSDL зависит от платформы, на которой размещён ваш аккаунт:

| Платформа | WSDL                                                  |
| --------- | ----------------------------------------------------- |
| EU        | <https://soap.navixy.com/LocationDataService?wsdl>    |
| US        | <https://soap.us.navixy.com/LocationDataService?wsdl> |

Отправьте запрос в таком виде, указав логин и пароль в SOAP-заголовке, а идентификаторы устройств и диапазон дат — в теле. Идентификаторы устройств — это значения IMEI устройств:

{% code overflow="wrap" %}

```xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org">
   <soapenv:Header>
      <tem:authentication>
         <login>username</login>
         <password>password</password>
      </tem:authentication>
   </soapenv:Header>
   <soapenv:Body>
      <tem:dataRequest>
         <!--1 to 100 repetitions:-->
         <deviceIds>866258048802349</deviceIds>
         <startDate>2022-08-30T00:00:00Z</startDate>
         <endDate>2022-08-31T00:00:00Z</endDate>
      </tem:dataRequest>
   </soapenv:Body>
</soapenv:Envelope>
```

{% endcode %}

Ответ содержит один `результат` элемент на каждую сохранённую позицию:

{% code overflow="wrap" %}

```xml
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns:getLocationDataResponse xmlns:ns="http://tempuri.org">
            <результат>
                <датаGPS>2019-10-15T08:48:50.000Z</датаGPS>
                <Зажигание>false</Зажигание>
                <широта>75.9270866</широта>
                <долгота>-85.5207616</долгота>
                <скоростьGPS>0.0</скоростьGPS>
                <госномер>JRT1550</госномер>
                <высота>284.0</высота>
                <курс>N</курс>
                <идентификаторУстройства>866258048802349</идентификаторУстройства>
                <numSat>15</numSat>
                <Одометр>59845</Одометр>
                <eventId>401</eventId>
            </result>
        </ns:getLocationDataResponse>
    </S:Body>
</S:Envelope>
```

{% endcode %}

## Управление конечной точкой

Чтобы изменить или отозвать доступ:

* Выключите переключатель в разделе устройства **Ретрансляция** заблокируйте, чтобы исключить это устройство из результатов запроса и оставить остальные доступными.
* Нажмите **Протоколы**, выберите строку и отредактируйте её, чтобы изменить логин или пароль. Запросы с использованием старых учётных данных перестанут работать немедленно, поэтому предупредите сторону, выполняющую запросы, перед изменением.
* Удалите конфигурацию из **Протоколы** список, чтобы полностью отозвать доступ. Подтвердите в диалоговом окне.

## Устранение неполадок

Если запрос не возвращает данных, проверьте следующее по порядку:

1. Ретранслятор включён, и его переключатель активирован для устройств, по которым вы выполняете запрос.
2. Логин и пароль в SOAP-заголовке совпадают с настройками ретранслятора.
3. ID устройств в запросе — это значения IMEI устройств в вашей учётной записи.
4. Диапазон дат охватывает период, когда эти устройства передавали данные.
5. Диапазон дат охватывает не более одного дня, а в запросе указано не более 100 ID устройств.

Чтобы протестировать запрос перед написанием интеграционного кода, используйте [SoapUI](https://www.soapui.org/downloads/soapui/):

1. Установите SoapUI.
2. Из **Файл** меню, выберите **New SOAP Project**.
3. Вставьте адрес WSDL для вашей платформы в **WSDL** поле.
4. Выберите **Create sample requests for all operations**, затем заполните учётные данные и ID устройств.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://navixy.com/docs/user/ru/guide/devices-and-settings/connectivity/data-forwarding/navixy-ws.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
