RailLocator API

API wrapper для RailLocator API v2

Оглавление

  1. Установка
    1. Использование Rails
    2. Использование Ruby
    3. Debug Logging
    4. Custom logger
  2. Треки
    1. Получение Списка Треков
    2. Постановка На Слежение
    3. Получение Дислокации По Нескольким Трекам
    4. Получение Информации О Маршруте
    5. Получение Дислокации По Одному Треку
  3. Справки
    1. Получение Справок
    2. Постановка На Слежение
    3. Получение Справки
  4. Подходы
    1. Постановка На Слежение
  5. Тех. паспорт вагона
    1. Получение Тех. Паспортов
    2. Получение Тех. Паспорта
  6. Контроль тех. состояния
    1. Получение Тех. Состояния
    2. Постановка На Слежение
  7. Изменение/Снятие треков
    1. Снятие Со Слежения Нескольких Треков
    2. Изменение Информации О Нескольких Треках
    3. Снятие Со Слежения Одного Трека
    4. Изменение Информации О Треке
  8. Группы
    1. Получение Списка Групп
    2. Создание Группы
    3. Удаление Группы
    4. Изменение Группы
    5. Добавление Вагона В Группу
    6. Удаление Вагонов Из Группы
    7. Добавление Вагона В Группу
    8. Удаление Вагона Из Группы
  9. Справочники
    1. Получение Координат Станции
    2. Получение Списка Станций С Краткой Информацией
  10. Рассылки
    1. Создание Рассылки

Установка

Для авторизации по api key необходимо получить его в личном кабинете локатора или в телеграм боте @RailLocatorApiBot

либо использовать другие методы авторизации:

:keycloak, :api_key, :base64

Ruby

$ gem install rail-locator-api

Rails

добавьте в Gemfile:

gem 'rail-locator-api'

и запустите bundle install.

Затем:

rails g rail_locator_api:install

Использование Rails

В файл config/rail_locator_api.yml вставьте ваши данные

Использование Ruby

Сначала создайте экземпляр объекта RailLocatorApi::Request:

locator = RailLocatorApi::Request.new(api_key: "***")
# или
locator = RailLocatorApi::Request.new(api_auth_method: :base64, api_user_email: "[email protected]", api_user_password: "12345678")

Вы можете изменять api_auth_method, api_key, api_user_email, api_user_password, timeout, open_timeout, faraday_adapter, proxy, symbolize_keys, logger, и debug:

RailLocatorApi::Request.timeout = 15
RailLocatorApi::Request.open_timeout = 15
RailLocatorApi::Request.symbolize_keys = true
RailLocatorApi::Request.debug = false

RailLocatorApi::Request.api_key = "your_api_key"
# или
RailLocatorApi::Request.api_auth_method = :base64
RailLocatorApi::Request.api_user_email = "[email protected]"
RailLocatorApi::Request.api_user_password = "12345678"

Либо в файле config/initializers/rail_locator_api.rb для Rails.

Debug Logging

Измените debug: true чтобы включить логирование в STDOUT.

locator = RailLocatorApi::Request.new(api_key: "***", debug: true)

Custom logger

Logger.new используется по умолчанию, но вы можете изменить на свой:

locator = RailLocatorApi::Request.new(api_key: "***", debug: true, logger: MyLogger.new)

Или:

RailLocatorApi::Request.logger = MyLogger.new

Примеры

Дислокация

Получение Списка Треков

request = {
        "limit": 100,
        "offset": 0,
        "filters": [
                {
                        "field": "is_broken",
                        "operand": "in",
                        "value": [
                                null,
                                true
                        ]
                },
                {
                        "field": "track_create_time",
                        "operand": ">=",
                        "value": "2010-10-10 00:00"
                },
                {
                        "field": "track_stop_time",
                        "operand": "between",
                        "value": [
                                "2010-10-10 00:00",
                                "2021-10-10 00:00"
                        ]
                }
        ],
        "sort": [
                {
                        "field": "is_active",
                        "order": "asc"
                }
        ],
        "fulltext_filter": {
                "value": "2010",
                "fields": [
                        "track_create_time",
                        "track_stop_time"
                ],
                "operation": "include"
        }
}
response = RailLocatorApi::Request.tracks.dislocation.retrieve(body: request)
p response.body

Постановка На Слежение

request = [
        {
                "is_validate_vehicle": true,
                "cargo_transport_unit_number": "ASVD123",
                "country_code": "01",
                "tracking_type": 1,
                "is_cross_country_tracking": true
        }
]
response = RailLocatorApi::Request.tracks.dislocation.create(body: request)
p response.body

Получение Дислокации По Нескольким Трекам

request = {
        "track_ids": [
                0
        ],
        "operations_count": 10
}
response = RailLocatorApi::Request.tracks.dislocation.history.retrieve(body: request)
p response.body

Получение Информации О Маршруте

track_id = 1
response = RailLocatorApi::Request.tracks.dislocation(track_id).route.retrieve
p response.body

Получение Дислокации По Одному Треку

track_id = 1
response = RailLocatorApi::Request.tracks.dislocation(track_id).history.retrieve
p response.body

Справки

Получение Справок

request = {
        "limit": 100,
        "offset": 0,
        "filters": [
                {
                        "field": "is_broken",
                        "operand": "in",
                        "value": [
                                null,
                                true
                        ]
                },
                {
                        "field": "track_start",
                        "operand": ">=",
                        "value": "2010-10-10 00:00"
                },
                {
                        "field": "track_stop",
                        "operand": "between",
                        "value": [
                                "2010-10-10 00:00",
                                "2021-10-10 00:00"
                        ]
                }
        ],
        "sort": [
                {
                        "field": "is_active",
                        "order": "asc"
                }
        ],
        "fulltext_filter": {
                "value": "2010",
                "fields": [
                        "track_start",
                        "track_stop"
                ],
                "operation": "include"
        }
}
response = RailLocatorApi::Request.tracks.inquiries.retrieve(body: request)
p response.body

Постановка На Слежение

request = [
        {
                "inquiry_type": "2612",
                "cargo_transport_unit_number": "12345678"
        }
]
response = RailLocatorApi::Request.tracks.inquiries.create(body: request)
p response.body

Получение Справки

track_id = 1
response = RailLocatorApi::Request.tracks.inquiries(track_id).retrieve
p response.body

Подходы

Постановка На Слежение

request = [
        {
                "cargo_transport_unit_type": 0,
                "stop_tracking_condition": 0,
                "cargo_transport_unit_load_state": 0,
                "cargo_code": "string",
                "tracking_type": 0,
                "destination_station": "string",
                "which_okpo_to_use": 0,
                "cargo_sender_okpo": "string",
                "cargo_receiver_okpo": "string"
        }
]
response = RailLocatorApi::Request.tracks.approaches.create(body: request)
p response.body

Тех. паспорт вагона

Получение Тех. Паспортов

request = {
        "track_ids": [
                0
        ],
        "count": 1
}
response = RailLocatorApi::Request.tracks.dislocation.tech_passports.retrieve(body: request)
p response.body

Получение Тех. Паспорта

track_id = 1
response = RailLocatorApi::Request.tracks.dislocation(track_id).tech_passports.retrieve
p response.body

Контроль тех. состояния

Получение Тех. Состояния

request = {
        "limit": 100,
        "offset": 0,
        "filters": [
                {
                        "field": "is_broken",
                        "operand": "in",
                        "value": [
                                null,
                                true
                        ]
                },
                {
                        "field": "track_start",
                        "operand": ">=",
                        "value": "2010-10-10 00:00"
                },
                {
                        "field": "track_stop",
                        "operand": "between",
                        "value": [
                                "2010-10-10 00:00",
                                "2021-10-10 00:00"
                        ]
                }
        ],
        "sort": [
                {
                        "field": "active",
                        "order": "asc"
                }
        ],
        "fulltext_filter": {
                "value": "2010",
                "fields": [
                        "track_start",
                        "track_stop"
                ],
                "operation": "include"
        }
}
response = RailLocatorApi::Request.tracks.tech_condition.retrieve(body: request)
p response.body

Постановка На Слежение

request = [
        {
                "cargo_transport_unit_number": "12345678"
        }
]
response = RailLocatorApi::Request.tracks.tech_condition.create(body: request)
p response.body

Изменение/Снятие треков

Снятие Со Слежения Нескольких Треков

request = {
        "track_ids": [
                123,
                1234
        ]
}
response = RailLocatorApi::Request.tracks.batch.delete(body: request)
p response.body

Изменение Информации О Нескольких Треках

request = [
        {
                "track_id": 123456,
                "comment": "Примечание трека"
        }
]
response = RailLocatorApi::Request.tracks.batch.update(body: request)
p response.body

Снятие Со Слежения Одного Трека

track_id = 1
response = RailLocatorApi::Request.tracks(track_id).delete
p response.body

Изменение Информации О Треке

track_id = 1
request = {
        "comment": "Примечание трека"
}
response = RailLocatorApi::Request.tracks(track_id).update(body: request)
p response.body

Группы

Получение Списка Групп

response = RailLocatorApi::Request.groups.retrieve
p response.body

Создание Группы

request = {
        "group_name": "Название новой группы"
}
response = RailLocatorApi::Request.groups.create(body: request)
p response.body

Удаление Группы

group_id = 1
response = RailLocatorApi::Request.groups(group_id).delete
p response.body

Изменение Группы

group_id = 1
request = {
        "group_name": "Переименованная группа"
}
response = RailLocatorApi::Request.groups(group_id).update(body: request)
p response.body

Добавление Вагона В Группу

group_id = 1
request = {
        "cargo_transport_unit_numbers": [
                "ASD1234",
                "F0123454D"
        ]
}
response = RailLocatorApi::Request.groups(group_id).cargo_transport_unit_number.batch.update(body: request)
p response.body

Удаление Вагонов Из Группы

group_id = 1
request = {
        "cargo_transport_unit_numbers": [
                "ASD1234",
                "F0123454D"
        ]
}
response = RailLocatorApi::Request.groups(group_id).cargo_transport_unit_number.batch.delete(body: request)
p response.body

Добавление Вагона В Группу

group_id = 1
cargo_transport_unit_number = "11111"
response = RailLocatorApi::Request.groups(group_id).cargo_transport_unit_number(cargo_transport_unit_number).update
p response.body

Удаление Вагона Из Группы

group_id = 1
cargo_transport_unit_number = "11111"
response = RailLocatorApi::Request.groups(group_id).cargo_transport_unit_number(cargo_transport_unit_number).delete
p response.body

Справочники

Получение Координат Станции

response = RailLocatorApi::Request.references.station.retrieve(params: {disloc_id: 1})
p response.body

Получение Списка Станций С Краткой Информацией

response = RailLocatorApi::Request.references.stations.retrieve(params: {station_code: "111"})
p response.body

Рассылки

Создание Рассылки

request = {
        "title": "Название рассылки",
        "data_source": "groups",
        "data_ids": [
                "1234",
                "12345"
        ],
        "recipients": [
                "[email protected]"
        ],
        "sending_days": [
                "Sun",
                "Mon",
                "Tue",
                "Wed",
                "Thu",
                "Fri",
                "Sat"
        ],
        "sending_times": [
                "08:00:00",
                "17:00:00"
        ],
        "template_title": "Тема письма",
        "template_content": "Текст письма",
        "active_objects": true,
        "language": "ru",
        "user_note": "Примечание"
}
response = RailLocatorApi::Request.emailings.create(body: request)
p response.body