RailLocator API
API wrapper для RailLocator API v2
Оглавление
- Установка
- Треки
- Справки
- Подходы
- Тех. паспорт вагона
- Контроль тех. состояния
- Изменение/Снятие треков
- Группы
- Справочники
- Рассылки
Установка
Для авторизации по 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