Начало работы
В этом разделе описан Web API платформы, реализованный в виде пакета данных REST-API для обмена в формате json.
Общие положения
- Формат передачи данных Web API реализован в виде пакета данных REST-API для обмена в формате json.
- Порядок аутентификации Аутентификация построена на динамически обновляемом токене, который гарантирует безопасность получаемых данных и исключает утечку токена.
- Формат переменных, содержащих дату и время
Web API возвращает данные типа «дата и время» в кодировке UNIX time или POSIX time в формате
UTC: 1613376963. При переводе Unix time в читаемую дату необходимо указывать часовой пояс. - Постраничная выдача (pagination)
В Web API реализована постраничная выдача для загрузки данных по страницам. Передаётся параметром:
page="page number" (page=1). Количество возвращаемых в запросе записей можно задать параметром per_page, но не более 1000 записей.
Базовый URL
Во всех примерах на этих страницах используется следующий базовый URL:
https://api.vadsro.eu/api/v1Аутентификация
Аутентификация построена на динамически обновляемом токене. На практике это выглядит так:
- Первичная аутентификация выполняется по адресу электронной почты и паролю, существующим в системе; в ответ приходят динамический токен и связанные с ним атрибуты.
- Формирование целевого запроса на получение данных, при котором токен, полученный на предыдущем шаге, добавляется в заголовки HTTP-запроса.
- Отправка запроса на сервер. Если запрос сформирован верно, сервер возвращает данные в теле ответа и новый токен в заголовках ответа, а старый токен становится недействительным. С новым токеном можно повторить предыдущий шаг — и так далее.
- По завершении работы последний токен можно сделать недействительным до истечения срока его действия (SignOut).
Первоначальная аутентификация выполняется по адресу электронной почты и паролю существующего пользователя. Для этого необходимо отправить POST-запрос по адресу:
https://api.vadsro.eu/api/v1/auth/sign_inПример запроса в формате Curl:
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api-user@example.com","password":"Str0ngPas$"}'\
https://api.vadsro.eu/api/v1/auth/sign_inВ ответ мы получим следующее сообщение:
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: application/json; charset=utf-8
access-token: EXAMPLE-ACCESS-TOKEN-1
token-type: Bearer
client: EXAMPLE-CLIENT-ID
expiry: 1615227012
uid: api-user@example.com
ETag: W/"5b9bcc76f7223b72b79d9f2d31ff0fd5"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: c18e06b4-e5bd-40b5-875d-7ac958e2fbb5
X-Runtime: 0.391069
Transfer-Encoding: chunked
{"data":{"id":6,"email":"api-user@example.com","provider":"email","uid":"api-user@example.com","name":"API user"}}В этом ответе нас интересуют следующие заголовки:
| Заголовок | Описание |
|---|---|
access_token | Значение этого заголовка используется как пароль при каждом запросе. Значение меняется с каждым запросом. |
client | Этот заголовок уникален для текущего соединения. Позволяет одновременно вести несколько активных сессий. |
expiry | Время, когда истечёт срок действия этого токена. По умолчанию — 2 недели с момента получения. Либо SignOut для досрочного прекращения его действия. Для следующего запроса не требуется. |
uid | Уникальное значение, идентифицирующее пользователя. В нашем случае — адрес электронной почты. |
token-type | Тип используемого токена. |
Пример запроса с токеном из предыдущего ответа:
curl -i --header "access-token: EXAMPLE-ACCESS-TOKEN-1" \
--header "token-type: Bearer" \
--header "client: EXAMPLE-CLIENT-ID" \
--header "uid: api-user@example.com" \
--request GET \
--header "Content-Type: application/json" \
--data '{"page":"2"}' \
https://api.vadsro.eu/api/v1/stationsВ ответ мы получим следующее сообщение:
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: application/json; charset=utf-8
access-token: EXAMPLE-ACCESS-TOKEN-2
token-type: Bearer
client: EXAMPLE-CLIENT-ID
expiry: 1615311367
uid: api-user@example.com
ETag: W/"ba0df406b647bd92f0bf3a18916714c1"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 35a26441-ae78-48fa-8b2e-e92d2605133b
X-Runtime: 0.167748
Transfer-Encoding: chunked
{"data": [
{"id":1,"name":"860000000000001","equipment_brand_name":"Corrector BK","phone":"","equipment_id":1},...
],
"total_pages":7,
"current_page":2
}Чтобы завершить работу, можно воспользоваться процедурой SignOut либо сохранить нужные заголовки из последнего запроса и, если срок жизни токена не истёк, использовать их в следующий раз.
Завершение сессии:
curl -i --header "access-token: EXAMPLE-ACCESS-TOKEN-2" \
--header "token-type: Bearer" \
--header "client: EXAMPLE-CLIENT-ID" \
--header "uid: api-user@example.com" \
--request DELETE \
https://api.vadsro.eu/api/v1/auth/sign_out
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: application/json; charset=utf-8
ETag: W/"c955e57777ec0d73639dca6748560d00"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: b4b69ac3-5cba-4e6e-b6a0-f6577298c166
X-Runtime: 0.141467
Transfer-Encoding: chunked
{"success":true}Дальнейшие шаги
Теперь, когда аутентификация освоена, изучите основные ресурсы API:
Получение иерархии поставщиков и обслуживаемых ими потребителей.
Получение списка узлов учёта и чтение их физических характеристик.
Получение показаний каналов по типу архива и интервалу времени.
Чтение архивов событий устройств и справочника кодов сообщений.
Эта страница была полезной?
Спасибо за ваш отзыв!