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. Получение Списка Станций С Краткой Информацией

Установка

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_user_email: "[email protected]", api_user_password: "12345678")

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

RailLocatorApi::Request.api_key = "your_api_key"
RailLocatorApi::Request.api_user_email = "[email protected]"
RailLocatorApi::Request.api_user_password = "12345678"
RailLocatorApi::Request.timeout = 15
RailLocatorApi::Request.open_timeout = 15
RailLocatorApi::Request.symbolize_keys = true
RailLocatorApi::Request.debug = false

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

Debug Logging

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

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

Custom logger

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

locator = RailLocatorApi::Request.new(api_user_email: "[email protected]", api_user_password: "12345678", 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.batch.retrieve(body: request)
p response.body

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

response = RailLocatorApi::Request.tracks.dislocation.route_info.retrieve(params: {track_id: 1})
p response.body

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

track_id = 1
response = RailLocatorApi::Request.tracks.dislocation(track_id).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.tech_passport.batch.retrieve(body: request)
p response.body

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

track_id = 1
response = RailLocatorApi::Request.tracks.tech_passport(track_id).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