Руководство по использованию web-сервиса производственного календаря

API данного сервиса предоставляет простой и удобный интерфейс для получения производственного календаря в форматах JSON, XML и CSV для использования в вашем приложении. Для этого необходимо отправить HTTP GET-запрос с необходимыми параметрами (при необходимости) по заданному адресу. Сервис предоставляем доступ к двум методам.

1. Основной метод get-period

Данный метод возвращает производственный календарь за произвольный период. URI данного метода представляет собой строку типа:

https://production-calendar.ru/get-period/{token}/{country}/{period}/{format}

где:

Простой пример для получения результата для РФ за январь 2024 года в формате JSON (в примере используется гостевой токен рассчитанный на 10 запросов):

https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/01.2024/json

Поддерживаемые страны {country}:

Код Наименование
ru Российская Федерация
kz Республика Казахстан

Поддерживаемые форматы временного интервала {period}:

Интервал Шаблон Примеры
Год ГГГГ 2024 / 2023
Квартал QNГГГГ Q12024 / Q42023
Месяц ММГГГГ / ММ.ГГГГ / ММ-ГГГГ 012024 / 06.2023 / 12-2022
Сутки ДДММГГГГ / ДД.ММ.ГГГГ / ДД-ММ-ГГГГ 12122024 / 01.05.2023 / 05-10-2022
Произвольный период (не более года) ДДММГГГГ-ДДММГГГГ / ДД.ММ.ГГГГ-ДД.ММ.ГГГГ / ДД-ММ-ГГГГ- ДД-ММ-ГГГГ 12122024-18122024 / 01.05.2023-04.06.2023 / 05-10-2022-31-10-2022

Поддерживаемые форматы получения данных от сервера {format}:

Примеры:

https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/05.2023/xml
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/12.06.2023/csv

GET-параметры метода get-period

Для получения дополнительных данных, в URI можно передать ряд get-параметров. Все параметры не являются обязательными.

Параметр Тип Описание
region int Позволяет задать регион РФ (в ряде регионов присутствуют свои региональные праздники, для которых производственный календарь отличается). В качестве номера региона задается однозначные или двузначные коды ГИБДД. Трехзначные не поддерживаются.
compact bool Если задать данному параметру значение true или 1 (истина), то результат будет выдаваться в сокращенном формате, только особые дни, которые отличаются от обычного календаря. По умолчанию этот параметр равен false или 0 и календарь выдает все сутки заданного периода.
week_type int Тип рабочей недели. По умолчанию это 5-и дневная рабочая неделя (значение равное 5), можно задать и 6-и дневную (значение равно 6).
wsch bool Параметр показывает нужно ли учитывать так называемые нерабочие дни с сохранением заработной платы, которые начали практиковать с 2020 года (В период пандемии COVID-19). В народе эти дни прозвали "выходные дни, которые как бы есть и одновременно которых как бы нет". wsch сокращенно от Weekends of the Schrodinger. Так называемая отсылка к всем известному коту Шредингера. По умолчанию параметр равен 0, то есть подобные выходные не учитываются.
unescapes bool Если параметр равен false, юникод в ответе будет экранирован (\uXXXX), если true символы будут отображаться как есть. По умолчанию параметр равен true.

Примеры:

https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/072023/json?region=26
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/052023/json?region=26&compact=true
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/012023/json?region=26&week_type=6
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/05.2020/json?wsch=1

Структура ответа сервера

Разберем структуру на примере ответа в формате JSON:

{
    "country_code": "ru",
    "country_text": "Российская Федерация",
    "region_id": 26,
    "region_text": "Ставропольский край",
    "dt_start": "01.01.2023",
    "dt_end": "15.01.2023",
    "work_week_type": "5-и дневная рабочая неделя",
    "period": "Произвольный период",
    "days": [
        {
            "date": "01.01.2023",
            "type_id": 3,
            "type_text": "Государственный праздник",
            "note": "Новогодние каникулы",
            "week_day": "вс",
            "working_hours": 0
        },
        …
        {
            "date": "08.01.2023",
            "type_id": 2,
            "type_text": "Выходной день",
            "week_day": "вс",
            "working_hours": 0
        },
         …
        {
            "date": "15.01.2023",
            "type_id": 2,
            "type_text": "Выходной день",
            "week_day": "вс",
            "working_hours": 0
        }
    ],
    "statistic":
        {
            "calendar_days": 15,
            "calendar_days_without_holidays": 7,
            "work_days": 5,
            "weekends": 2,
            "holidays": 8,
            "working_hours": 40
        }
    }
}

Основные свойства главного объекта (country_code, country_text, region_id, region_text, dt_start, dt_end, work_week_type) интуитивно понятны и не требуют отдельного описания.

Свойство days представляет из себя массив объектов, которые описывают календарные сутки. Каждый элемент массива содержит объект со следующими свойствами:

id Описание
1 Рабочий день
2 Выходной день
3 Государственный праздник
4 Региональный праздник
5 Предпраздничный сокращенный рабочий день
6 Дополнительный / перенесенный выходной день

Свойство statistic отображает ряд статистических данных для задаваемого периода:

Формат XML имеет идентичную структуру и наименование параметров с форматом JSON и не требует отдельного описания.

Формат CSV адаптирован под русскоязычный MS Excel (кодировка windows-1251, разделитель точка с запятой (;)). Полученные данные с легкостью открываются в MS Excel без дополнительных преобразований. Строки, которые описывают производственный календарь начинаются с ключевого слова «Сутки», после идут значения, соответствующие параметрам date, type_id, type_text, week_day, working_hours описанные выше.

Глобальные переменные;Код страны;ru
Глобальные переменные;Страна;Российская Федерация
Глобальные переменные;Начало периода;01.01.2023
Глобальные переменные;Конец периода;31.12.2023
Глобальные переменные;Тип рабочей недели;5-и дневная рабочая неделя
Глобальные переменные;Период;год
Сутки;01.01.2023;3;Государственный праздник;вс;0;Новогодние каникулы
Сутки;02.01.2023;3;Государственный праздник;пн;0;Новогодние каникулы
Сутки;03.01.2023;3;Государственный праздник;вт;0;Новогодние каникулы
Сутки;04.01.2023;3;Государственный праздник;ср;0;Новогодние каникулы
Сутки;05.01.2023;3;Государственный праздник;чт;0;Новогодние каникулы
Сутки;06.01.2023;3;Государственный праздник;пт;0;Новогодние каникулы
Сутки;07.01.2023;3;Государственный праздник;сб;0;Рождество Христово
Сутки;08.01.2023;3;Государственный праздник;вс;0;Новогодние каникулы
Сутки;09.01.2023;1;Рабочий день;пн;8;
Сутки;10.01.2023;1;Рабочий день;вт;8;
...
Сутки;30.12.2023;2;Выходной день;сб;0;
Сутки;31.12.2023;2;Выходной день;вс;0;
Статистика;Календарных дней;365
Статистика;Календарных дней без праздничных;350
Статистика;Рабочих дней;246
Статистика;Выходных без праздничных;104
Статистика;Праздничные;15
Статистика;Рабочего времени;1964

2. Метод get-work-week

Данный метод возвращает даты начало и окончания рабочей недели по заданным суткам. URI данного метода представляет собой строку типа:

https://production-calendar.ru/get-work-week/{token}/{country}/{day}/{format}

где:

Простой пример для получения результата для РФ для суток 06.03.2023 год в формате JSON:

https://production-calendar.ru/get-work-week/6914a408120146bcb82ab95c003bc6ad/ru/06.03.2023/json

Данный метод поддерживает только один get-параметр - week_type (подробности смотри в разделе 1 данного руководства)

Библиотеки от сообщества

При желании можно использовать SDK от разработчиков сообщества. На текущий момент доступны следующие библиотеки: