+7 (495) 995-995-2
Обратная связь Закажите звонок

Байкал Сервис API

Вы можете выбрать формат получаемых ответов, изменив заголовок допустимого формата ресурса:

  • JSON:

    % curl -i -H "Accept:application/json" --user <appKey>: "https://api.baikalsr.ru/v1/affiliate"
    
  • XML:

    % curl -i -H "Accept:application/xml" --user <appKey>: "https://api.baikalsr.ru/v1/affiliate"
    

Чтобы избежать злоупотреблений, в нашем API установлено ограничение частоты запросов для пользователей. Каждый пользователь может посылать не больше двух GET запросов в секунду и одного POST запроса в 30 секунд. Если от пользователя в течение этого периода времени приходит большее количество запросов, будет возвращаться ответ с кодом состояния 429 («слишком много запросов»).

При включенном ограничении частоты запросов каждый ответ возвращается со следующими HTTP-заголовками, содержащими информацию о текущих ограничениях:

  • X-Rate-Limit-Limit: максимальное количество запросов, разрешённое в течение периода времени;
  • X-Rate-Limit-Remaining: оставшееся количество разрешённых запросов в текущем периоде времени;
  • X-Rate-Limit-Reset: количество секунд, которое нужно подождать до получения максимального количества разрешённых запросов.

Публичный API

Все запросы к публичному API должны передаваться с указанием ключа вашего приложения в качестве имени пользователя через HTTP Basic Auth.

Пример:

% curl -i --user <appKey>: "https://api.baikalsr.ru/v1/affiliate"

Справочник типов грузов

  • GET /v1/directory/cargo_types: получение списка типов грузов;

В полученном ответе:

  • id: идентификатор;
  • name: тип груза.

Справочник организационно-правовых форм

  • GET /v1/directory/legal_forms: получение списка организационно-правовых форм;

В полученном ответе:

  • id: идентификатор;
  • name: организационно-правовая форма.

Список филиалов

  • GET /v1/affiliate: получение списка всех филиалов Байкал Сервис;

В полученном ответе:

  • guid: уникальный идентификатор филиала;
  • name: название филиала;
  • code: латинское название для использования в URL;
  • phone: телефон филиала;
  • terminals: список терминалов;
  • timezone: временная зона.

Где терминал:

  • name: наименование терминала;
  • code: код терминала;
  • map: координаты терминала на Яндекс картах;
  • address: адрес терминала (html);
  • phone: телефоны терминала (html);
  • email: email терминала (html);
  • schedule: расписание работы (html);
  • start: С данного терминала производится отправка грузов (true или false);
  • finish: На данный терминал возможно прибытие грузов (true или false).

Где временная зона (timezone):

  • title: наименование временной зоны (например, МСК+1);
  • difference: разница во времени с Москвой в часах (например, 1).

Информация о филиале

  • GET /v1/affiliate/<guid>: получение информации по конкретному филиалу компании с заданным guid;

Структура ответа сервера с пояснениями:

{
	"guid":"a101dd8b-3aee-4bda-9c61-9df106f145ff",	// Уникальный идентификатор филиала
	"code":"astrakhan",				// Символьный код филиала
	"name":"Астрахань",				// Название филиала
	"phone":"+7 (8512) 20-10-50",			// Телефон
	"terminals":[],					// Список терминалов
	"timezone": {					// Временная зона
		"title": "МСК+1",			// Наименование временной зоны
		"difference": 1				// Разница во времени с Москвой в часах
	},
	"contract": "//new.baikalsr.ru/export/doc/teu/a101dd8b-3aee-4bda-9c61-9df106f145ff" // Ссылка на договор транспортно-экспедиционных услуг
	"requisites":{					// Список реквизитов
		"organization":"ООО «Байкал-Сервис Астрахань»",	// Краткое название организации
		"organization_full":"Общество с ограниченной ответственностью «Байкал-Сервис Астрахань»", // Полное название организации
		"inn":"3017043706",				// ИНН
		"kpp":"302501001",				// КПП
		"bik":"41203602",				// БИК
		"ogrn":"1053001164149",				// ОГРН
		"rs":"40 702 810 505 000 031 370",		// Расчетный счет
		"ks":"30 101 810 500 000 000 602",		// Корр. счет
		"bank":"ОТДЕЛЕНИЕ № 8625 СБЕРБАНКА РОССИИ Г.АСТРАХАНЬ", // Банк
		"address_legal":"414045, г.Астрахань, ул.Брестская/ ул.Моздокская/ ул.Ширяева, д.7/49а/6", // Юридический адрес
		"address_actual":"414045, г.Астрахань, ул.Брестская/ ул.Моздокская/ ул.Ширяева, д.7/49а/6", // Фактический адрес
		"head_name":"Иванов Иван Иванович",		// Имя директора
		"head_name_gen":"Иванова Ивана Ивановича",	// Имя директора (род. падеж)
		"head_gender":"1",				// Пол директора
		"head_post":"Генерального директора",		// В лице
		"head_authority":"Устава",			// Действующего на основании
		"updated":"2016-01-11 15:37:18"			// Дата изменения реквизитов
	}
}

Поиск филиала по населенному пункту

  • GET /v1/affiliate/find?guid=<guid>: получение филиала компании в которой обслуживается населенный пункт;

Параметры запроса:

  • guid: идентификатор населенного пункта.

В полученном ответе:

  • guid: уникальный идентификатор филиала;
  • name: название филиала;
  • code: латинское название для использования в URL;
  • phone: телефон филиала;
  • terminals: список терминалов;
  • timezone: временная зона.
  • not_found: флаг означающий, что фактически филиал не был найден, а выдан филиал по умолчанию;

Нахождение филиала НЕ гарантируется, если не найден, то в результате филиал Москва и устанавливается флаг not_found

Поиск филиала по ip

  • GET /v1/affiliate/suggest: получение имени населенного пункта по ip и информации по филиалу компании в которой обслуживается город;

Структура ответа сервера с пояснениями:

{
	"suggestion":"Архангельск",	// Город определенный по ip
	"domain":"www.baikalsr.ru",				// Домен филиала
	"affiliate":{
		"guid":"a101dd8b-3aee-4bda-9c61-9df106f145ff",	// Уникальный идентификатор филиала
		"code":"astrakhan",				// Символьный код филиала
		"name":"Астрахань",				// Название филиала
		"phone":"+7 (8512) 20-10-50",			// Телефон
		"terminals":[],			// Список терминалов
		"timezone": {			// Временная зона
			"title": "МСК+1",	// Наименование временной зоны
			"difference": 1		// Разница во времени с Москвой в часах
		}
}

Справочник ФИАС

Поиск населенного пункта

  • GET /v1/fias/cities?text=Мо: Поиск населенного пункта по части слова;
  • GET /v1/fias/cities?guid=06814fb6-0dc3-4bec-ba20-11f894a0faf5: Поиск населенного пункта по идентификатору.

Параметры запроса:

  • text: текст по которому ищем город, например "Мо" выдаст Москву и ряд других населенных пунктов;
  • guid: идентификатор по которому ищем город.

В полученном ответе:

  • guid: идентификатор населенного пункта (например, "06814fb6-0dc3-4bec-ba20-11f894a0faf5");
  • name: название населенного пункта (например, "Архангельск");
  • parents: список вышестоящих объектов (например, "Архангельская область");
  • title: название населенного пункта с типом (например, "Архангельск г");
  • kad: для населенных пунков Москвы, СПБ, Московской области и Ленинградской области выдается кольцо по которому происходит вычисление (возможные значения "moscow", "spb" и пусто).

Поиск улицы

  • GET /v1/fias/streets?guid=<guid>&text=<text>: Поиск улицы в населенном пункте по части слова;
  • GET /v1/fias/streets?streetguid=06814fb6-0dc3-4bec-ba20-11f894a0faf5: Поиск улицы по идентификатору.

Параметры запроса:

  • guid: идентификатор населенного пункта (например, "06814fb6-0dc3-4bec-ba20-11f894a0faf5");
  • text: текст по которому ищем улицу, например "Тр".

В полученном ответе:

  • guid: идентификатор улицы (например, "06814fb6-0dc3-4bec-ba20-11f894a0faf5");
  • name: название улицы (например, "Троицкий");
  • title: название улицы с типом (например, "Троицкий пр-кт").

Поиск дома

  • GET /v1/fias/houses?guid=<guid>&text=<text>: Поиск дома по части слова.

Параметры запроса:

  • guid: идентификатор улицы (например, "b2dacb29-307c-4a7a-a0f7-2f82cb13409a");
  • text: текст по которому ищем дом, например "2".

В полученном ответе:

  • guid: идентификатор улицы (например, "06814fb6-0dc3-4bec-ba20-11f894a0faf5");
  • name: номер дома;
  • title: номер дома.

Проверка адреса

  • GET /v1/fias/house?guid=<guid>&text=<text>: Проверка существует ли указанный адрес.

Параметры запроса:

  • guid: идентификатор улицы (например, "b2dacb29-307c-4a7a-a0f7-2f82cb13409a");
  • text: номер дома, например "2".

Ответ {result: true}, если адрес существует и {result: false}, если не существует.

Список новостей и вакансий

  • GET /v1/news: получение списка новостей Байкал Сервис, сортировка по убыванию даты;
  • GET /v1/vacancy: получение списка вакансий Байкал Сервис, сортировка по убыванию даты.

Дополнительные параметры запроса:

  • page: номер страницы, начиная с 1, по умолчанию 1;
  • page_size: количество новостей/вакансий на странице, по умолчанию 10;
  • subjects[]: идентификаторы тем, можно указывать несколько (subjects[]=1&subjects[]=2);
  • affiliates[]: идентификаторы тем, можно указывать несколько (affiliates[]=1&affiliates[]=2).

Ответ для новости:

  • id: уникальный идентификатор новости;
  • name: заголовок;
  • date: дата;
  • preview: краткий текст;
  • action: акция (true/false);
  • subjects: темы новости;
  • action_from: начало акции;
  • action_to: окончание акции;
  • affiliates: филиалы новости.

Ответ для вакансии:

  • id: уникальный идентификатор вакансии;
  • name: заголовок;
  • date: дата;
  • preview: краткий текст;
  • subjects: темы вакансии;
  • affiliates: филиалы вакансии.

Новость или вакансия детально

  • GET /v1/news/<id>: детальный просмотр новости по идентификатору;
  • GET /v1/vacancy/<id>: детальный просмотр вакансии по идентификатору.

В полученном ответе поля те же что и в списке новостей, плюс поле детального описания text (html).

Список тем новостей и вакансий

  • GET /v1/news/subjects: получение списка новостей Байкал Сервис;
  • GET /v1/vacancy/subjects: получение списка вакансий Байкал Сервис.

В полученном ответе:

  • id: уникальный идентификатор темы;
  • name: тема.

Расчет стоимости перевозки

  • GET /v1/calculator: расчет стоимости перевозки.

Параметры запроса:

  • from[guid]: идентификатор города отправления;
  • from[delivery]: нужна ли доставка по городу отправления (значения 0 - не нужна, 1 - днем, 2 - днем в фиксированное время, 3 - ночью, 4 - ночью в фиксированное время);
  • from[street]: идентификатор улицы в городе отправления (обязательно, если нужна доставка по городу отправления в Москве, Санкт-Петербурге, Московской и Ленинградской области);
  • from[house]: номер дома в городе отправления (обязательно, если нужна доставка по городу отправления в Москве, Санкт-Петербурге, Московской и Ленинградской области);
  • from[loading]: нужна ли погрузка по городу отправления (значения 0 - не нужна, 1 - нужна);
  • from[terminal]: код терминала отправления (если указан, то будет учтена стоимость въезда на терминал);
  • to[guid]: идентификатор города назначения;
  • to[delivery]: нужна ли доставка по городу назначения (значения 0 - не нужна, 1 - днем, 2 - днем в фиксированное время, 3 - ночью, 4 - ночью в фиксированное время);
  • to[street]: идентификатор улицы в городе назначения (обязательно, если нужна доставка по городу назначения в Москве, Санкт-Петербурге, Московской и Ленинградской области);
  • to[house]: номер дома в городе назначения (обязательно, если нужна доставка по городу назначения в Москве, Санкт-Петербурге, Московской и Ленинградской области);
  • to[loading]: нужна ли разгрузка по городу назначения (значения 0 - не нужна, 1 - нужна);
  • to[terminal]: код терминала назначения (если указан, то будет учтена стоимость въезда на терминал);
  • insurance: нужна ли страховка груза (указавается стоимость груза или 0, если страховка не нужна);
  • return_docs: нужен ли возврат документов (значения 0 - не нужен, 1 - нужен);
  • cargo: груз. Груз может быть передан как массив грузов с указанием габаритов каждого груза, либо в виде общей информации по всем грузам;
  • netto: не учитывать стоимость въезда на терминал в общей цене (значения 0 или пусто - учитывать, 1 - не учитывать).

Для передачи индивидуальных параметров каждого груза используется массив грузов (cargo[0], cargo[1], cargo[2] ...), размер массива должен быть равен количеству мест к перевозке. Параметры для указания каждого груза:

  • cargo[][weight]: вес груза;
  • cargo[][volume]: объем груза;
  • cargo[][length]: длина груза;
  • cargo[][width]: ширина груза;
  • cargo[][height]: высота груза;
  • cargo[][units]: количество мест, необязательный параметр, по умолчанию 1. Может заполняться при наличии нескольких одинаковых по размеру и массе грузов.
  • cargo[][oversized]: негабаритный груз (значения 0 - габаритный, 1 - негабаритный). Если параметр отсутствует в запросе, то определение габаритности груза происходит при расчете исходя из параметров груза;
  • cargo[][pack][crate]: упаковка - деревянная обрешетка (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][pallet]: упаковка - паллетирование (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][sealed_pallet]: упаковка - паллетирование под пломбу (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][bubble_wrap]: упаковка - пузырчатая пленка (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][big_bag]: упаковка - большой полипропиленовый мешок под пломбу (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][medium_bag]: упаковка - средний полипропиленовый мешок под пломбу (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна);
  • cargo[][pack][small_bag]: упаковка - малый полипропиленовый мешок под пломбу (нужна ли упаковка данного типа для данного груза: 0 - не нужна, 1 - нужна).

Для передачи данных по всем грузам сразу используются следующие параметры:

  • cargo[weight]: общий вес груза;
  • cargo[volume]: общий объем груза;
  • cargo[units]: количество мест;
  • cargo[oversized]: негабаритный груз (значения 0 - габаритный, 1 - негабаритный). Если параметр отсутствует в запросе, то определение габаритности груза происходит при расчете исходя из параметров груза;
  • cargo[weight_oversized]: вес негабаритного груза в общем весе груза (если не указан, то общий вес груза);
  • cargo[volume_oversized]: объем негабаритного груза в общем объеме груза (если не указан, то общий объем груза);
  • cargo[max][weight]: вес самого тяжелого груза;
  • cargo[max][length]: размер самого длинного груза;
  • cargo[max][width]: размер самого широкого груза;
  • cargo[max][height]: размер самого высокого груза;
  • cargo[pack][crate]: упаковка - деревянная обрешетка (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][pallet]: упаковка - паллетирование (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][sealed_pallet]: упаковка - паллетирование под пломбу (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][bubble_wrap]: упаковка - пузырчатая пленка (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][big_bag]: упаковка - большой полипропиленовый мешок под пломбу (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][medium_bag]: упаковка - средний полипропиленовый мешок под пломбу (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна);
  • cargo[pack][small_bag]: упаковка - малый полипропиленовый мешок под пломбу (нужна ли упаковка данного типа: 0 - не нужна, 1 - нужна).

Ответ для расчитаной стоимости:

{
	"from": { // Пункт отправления
		"guid": "c2deb16a-0330-4f05-821f-1d09c93331e6",
		"title": "Санкт-Петербург",
		"delivery": { // Стоимость забора в пункте отправления
			"int": 500,
			"title": "500"
		},
		"loading": { // Стоимость погрузки в пункте отправления
			"int": 300,
			"title": "300"
		},
		"terminal": { // Стоимость въезда на терминал в пункте отправления
			"int": 100,
			"title": "100",
			"description": "Въезд легкового транспорта — 20 руб."
		}
	},
	"to": { // Пункт прибытия
		"guid": "a101dd8b-3aee-4bda-9c61-9df106f145ff",
		"title": "Астрахань",
		"delivery": { // Стоимость доставки по пункту прибытия
			"int": 7000,
			"title": "7 000"
		},
		"loading": { // Стоимость разгрузки по пункту прибытия
			"int": 300,
			"title": "300"
		},
		"terminal": { // Стоимость въезда на терминал в пункте прибытия
			"int": 100,
			"title": "100",
			"description": "Въезд легкового транспорта — 20 руб."
		}
	},
	"price": { // Стоимость перевозки
		"int": 560,
		"title": "560"
	},
	"transit": { // Время в пути
		"int": 6,
		"day24": "суток",
		"day": "дней"
	}
	"pack": { // Стоимость упаковки
		"int": 300,
		"title": "300"
	},
	"insurance": { // Стоимость страховки
		"int": 12,
		"title": "12"
	},
	"return_docs": { // Стоимость возврата документов
		"int": 400,
		"title": "400"
	},
	"cargo": "Мест 1, вес 50 кг, объем 0.001 м&sup3;",
	"total": { // Стоимость заказа. Может отсутствовать, если возникла ошибка, или нужен индивидуальный расчет
		"int": 9372,
		"title": "9 372"
	},
	"oversized": 1, // Груз негабаритный (параметр отсутствует, если груз габаритный)
	"individual": 1, // Нужен индивидуальный расчет (параметр отсутствует, если индивидуальный расчет не нужен)
	"error": "Стоимость перевозки необходимо уточнить по телефону.", // Сообщение об ошибке
}

Время в пути (расписание)

  • GET /v1/schedule?from=<from>&to=<to>: где from - guid пункта отправления, а to - guid пункта назначения;

Ответ для расчитаного времени перевозки:

{
	"transit": {
		"total": { // Общее время в пути в пути
			"int": 6,
			"day24": "суток",
			"day": "дней"
		},
		"terminal": { // Время межтерминальной перевозки
			"int": 5,
			"day24": "суток",
			"day": "дней"
		},
		"delivery": { // Время доставки (если нужна)
			"from": 1, // Количество дней необходимых для забора груза
			"to": "", // Количество дней необходимых для доставки груза
		}
	}
	"error": "Не найдено расписание для заданных пунктов.", // Сообщение об ошибке
}

Отслеживание груза

  • GET /v1/tracking?number=<number>: где number - номер экспедиторской расписки или номер груза.

В полученном ответе:

{
	"invoice": "Ас-0010977", // Номер экспедиторской расписки
	"cargo": "Ас-0010977", // Номер груза
	"date": 1427868960, // Дата регистрации заказа
	"status": {
		"id": "3", // Статус 0 - оформлен, 1 - отправлен, 2 - прибыл, 3 - получен
		"date": 1428414840, // Дата оформления, отправки, прибытия или получения
		"text": "Груз выдан в пункте назначения 07.04.2015."
	},
	"departure": "Астрахань", // Откуда
	"destination": "Курск" // Куда
	"error": "" // Описание ошибки. При ошибке остальные поля ответа отсутствуют
}
Нашли ошибку? Выделите текст, нажмите Ctrl+Enter и отправьте ее нам.
Екатеринбург 4 терминала
Смоленск
Ваш населенный пунктСмоленск Выбрать другой