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

Доступ к API сервиса производственного календаря является простым, быстрым и удобным инструментом для использования в Вашем приложении. Чтобы начать использовать сервис, просто отправьте HTTP GET-запрос с необходимыми параметрами (при необходимости) по нужному адресу. Сервис предоставляем доступ к следующим методам.

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

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

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

где:

  • {token} - индивидуальный токен доступа (получить можно тут)
  • {country} – буквенный код страны;
  • {period} – необходимый временной интервал;
  • {format} – формат получаемых данных.

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

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

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

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

Информацию о полноте базы данных для указанных стран можно посмотреть тут.

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

Интервал Шаблон Примеры
Год ГГГГ 2026 / 2025
Квартал QNГГГГ Q12026 / Q42025
Месяц ММГГГГ / ММ.ГГГГ / ММ-ГГГГ 012026 / 06.2025 / 12-2024
Сутки ДДММГГГГ / ДД.ММ.ГГГГ / ДД-ММ-ГГГГ 12122026 / 01.05.2025 / 05-10-2024
Произвольный период (не более года) ДДММГГГГ-ДДММГГГГ / ДД.ММ.ГГГГ-ДД.ММ.ГГГГ / ДД-ММ-ГГГГ- ДД-ММ-ГГГГ 12122026-18122026 / 01.05.2025 -04.06.2025 / 05-10-2024-31-10-2024

Кроме того, в качестве временного интервала {period} возможно передавать зарезервированные динамические переменные:

Переменная Возвращаемое значение
current-year Текущий год
current-quarter Текущий квартал
current-month Текущий месяц
current-week Текущая неделя
today Текущие сутки

При этом динамические переменные поддерживают модификаторы (плюс или минус) позволяющие увеличить или уменьшить соответствующий интервал от текущего. Например, передав значение today+1 можно всегда получать данные за следующие сутки от текущих. Соответственно today+2 на двое суток итд. Модификаторы можно применять ко всем динамическим переменным.

Динамическую переменную today можно применять при задании произвольного интервала. Например, если передать {period} в виде строки today+1-today+8 вы всегда будете получать результат с данными на неделю вперед начиная с завтрашнего дня.


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

  • JSON;
  • XML;
  • CSV.

Примеры:

https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/01.2026/xml
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/kz/01.2026/csv
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/by/03.2026/json

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, то есть подобные выходные не учитываются.
days_as_object bool В ответе от сервера, свойство days будет представлено не виде массива, а в виде объекта, где каждое свойство будет соответствующей датой. По умолчанию равно false.
unescapes bool Если параметр равен false, юникод в ответе будет экранирован (\uXXXX), если true символы будут отображаться как есть. По умолчанию параметр равен true.
encoding string Параметр только для формата csv. Если в параметре передать строку "utf-8", то сервер вернет файл в соответствующей кодировке. По умолчанию (для csv) "windows-1251".
bom bool Параметр только для формата csv. Работает в паре с предыдущем параметром. Для кодировки utf-8 можно получить csv-файл с байтами BOM. Иногда бывает необходимо в некоторых приложениях, например в Power BI или Power Query. По умолчанию равно false.

Примеры:

https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/042026/json?region=26
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/042026/json?region=26&compact=true
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/012026/json?region=26&week_type=6
https://production-calendar.ru/get-period/6914a408120146bcb82ab95c003bc6ad/ru/04.2020/json?wsch=1

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

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

{
    "status": "ok"
    "country_code": "ru",
    "country_text": "Российская Федерация",
    "region_id": 26,
    "region_text": "Ставропольский край",
    "dt_start": "01.01.2026",
    "dt_end": "31.12.2026",
    "work_week_type": "5-и дневная рабочая неделя",
    "period": "Год",
    "statistic":
        {
            "calendar_days": 15,
            "calendar_days_without_holidays": 7,
            "work_days": 5,
            "weekends": 2,
            "holidays": 8,
            "shortened_working_days": 0,
            "working_hours": 40
        }
    },
    "days": [
        {
            "date": "01.01.2026",
            "type_id": 3,
            "type_text": "Государственный праздник",
            "note": "Новогодние каникулы",
            "documents": [
              {
                "details_number": "197-ФЗ",
                "details_date": "30.12.2001",
                "details_amending_number": "35-Ф3",
                "details_amending_date": "23.04.2012",
                "effective_date": "24.04.2012",
                "to_revoke_number": null,
                "to_revoke_date": null,
                "name": "Трудовой кодекс Российской Федерации",
                "title": null,
                "city": "Москва",
                "signer_title": "Президент Российской Федерации",
                "signer_name": "В. Путин",
                "sections": [
                  "...\nСтатья 112. Нерабочие праздничные дни\nНерабочими праздничными днями в Российской Федерации являются:\n1, 2, 3, 4, 5, 6 и 8 января - Новогодние каникулы;\n7 января - Рождество Христово;\n23 февраля - День защитника Отечества;\n8 марта - Международный женский день;\n1 мая - Праздник Весны и Труда;\n9 мая - День Победы;\n12 июня - День России;\n4 ноября - День народного единства.\n..."
                ]
              }
            "week_day": "вс",
            "working_hours": 0
        },
        ...
        ...
        {
          "date": "09.01.2026",
          "type_id": 6,
          "type_text": "Дополнительный / перенесенный выходной день",
          "note": "Перенос с субботы 3 января",
          "documents": [
            {
              "details_number": "1466",
              "details_date": "24.09.2025",
              "details_amending_number": null,
              "details_amending_date": null,
              "effective_date": null,
              "to_revoke_number": null,
              "to_revoke_date": null,
              "name": "Постановление Правительства РФ",
              "title": "О переносе выходных дней в 2026 году",
              "city": "Москва",
              "signer_title": "Председатель Правительства Российской Федерации",
              "signer_name": "М. Мишустин",
              "sections": [
                "В целях рационального использования работниками выходных и нерабочих праздничных дней Правительство Российской Федерации постановляет:\nПеренести в 2026 году следующие выходные дни:\nс субботы 3 января на пятницу 9 января;\nс воскресенья 4 января на четверг 31 декабря."
              ]
            }
          ],
          "week_day": "пт",
          "working_hours": 0
        },
        ...
        ...
        {
            "date": "15.01.2026",
            "type_id": 2,
            "type_text": "Выходной день",
            "week_day": "вс",
            "working_hours": 0
        },
        ...
        {
          "date": "09.03.2026",
          "type_id": 6,
          "type_text": "Дополнительный / перенесенный выходной день",
          "note": "Перенос с воскресенья 8 марта",
          "documents": [
            {
              "details_number": "197-ФЗ",
              "details_date": "30.12.2001",
              "details_amending_number": "35-Ф3",
              "details_amending_date": "23.04.2012",
              "effective_date": "24.04.2012",
              "to_revoke_number": null,
              "to_revoke_date": null,
              "name": "Трудовой кодекс Российской Федерации",
              "title": null,
              "city": "Москва",
              "signer_title": "Президент Российской Федерации",
              "signer_name": "В. Путин",
              "sections": [
                "...\nСтатья 112. Нерабочие праздничные дни\n...\nПри совпадении выходного и нерабочего праздничного дней выходной день переносится на следующий после праздничного рабочий день, за исключением выходных дней, совпадающих с нерабочими праздничными днями, указанными в абзацах втором (прим. 1, 2, 3, 4, 5, 6 и 8 января - Новогодние каникулы;) и третьем (прим.7 января - Рождество Христово;) части первой настоящей статьи. Правительство Российской Федерации переносит два выходных дня из числа выходных дней, совпадающих с нерабочими праздничными днями, указанными в абзацах втором (прим. 1, 2, 3, 4, 5, 6 и 8 января - Новогодние каникулы;) и третьем (прим.7 января - Рождество Христово;) части первой настоящей статьи, на другие дни в очередном календарном году в порядке, установленном частью пятой настоящей статьи.\n..."
              ]
            }
          ],
          "week_day": "пн",
          "working_hours": 0
        },
        ...
        ...
        {
          "date": "21.04.2026",
          "type_id": 4,
          "type_text": "Региональный праздник",
          "note": "День поминовения усопших (Радоница)",
          "documents": [
            {
              "details_number": "60-кз",
              "details_date": "23.06.2016",
              "details_amending_number": "19-К3",
              "details_amending_date": "04.03.2022",
              "effective_date": null,
              "to_revoke_number": null,
              "to_revoke_date": null,
              "name": "Закон Ставропольского края",
              "title": "Об объявлении в Ставропольском крае нерабочим (праздничным) днем Дня поминовения усопших (Радоницы)",
              "city": "Ставрополь",
              "signer_title": "Губернатор Ставропольского края",
              "signer_name": "В.В. Владимиров",
              "sections": [
                "Статья 1\nВ целях содействия сохранению традиций духовной культуры граждан и в соответствии с пунктом 7 статьи 4 Федерального закона от 26 сентября 1997 года N 125-ФЗ \"О свободе совести и о религиозных объединениях\" объявить в Ставропольском крае нерабочим (праздничным) днем День поминовения усопших (Радоницу) согласно приложению к настоящему Закону.\nПри совпадении выходного дня и Дня поминовения усопших (Радоницы) выходной день не переносится.\nСтатья 2\nНастоящий Закон вступает в силу с 1 января 2017 года.",
                "Приложение к Закону Ставропольского края \"Об объявлении в Ставропольском крае нерабочим (праздничным) днем Дня поминовения усопших (Радоницы)\"",
                "Дни поминовения усопших (Радоница), объявленные в Ставропольском крае нерабочими (праздничными) днями\n2017 - 25 апреля\n2018 - 17 апреля\n2019 - 7 мая\n2020 - 28 апреля\n2021 - 11 мая\n2022 - 3 мая\n2023 - 25 апреля\n2024 - 14 мая\n2025 - 29 апреля\n2026 - 21 апреля\n2027 - 11 мая\n2028 - 25 апреля\n2029 - 17 апреля\n2030 - 7 мая\n2031 - 22 апреля\n2032 - 11 мая\n2033 - 3 мая\n2034 - 18 апреля\n2035 - 8 мая\n2036 - 29 апреля\n2037 - 14 апреля\n2038 - 4 мая\n2039 - 26 апреля\n2040 - 15 мая\n2041 - 30 апреля\n2042 - 22 апреля\n2043 - 12 мая\n2044 - 3 мая\n2045 - 18 апреля\n2046 - 8 мая\n2047 - 30 апреля\n2048 - 14 апреля\n2049 - 4 мая"
              ]
            }
          ],
          "week_day": "вт",
          "working_hours": 0
        },
    ]
}

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

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

  • type_id и type_text определяют тип суток:
id Описание
1 Рабочий день
2 Выходной день
3 Государственный праздник
4 Региональный праздник
5 Предпраздничный сокращенный рабочий день
6 Дополнительный / перенесенный выходной день
  • week_day – сокращенное наименование дня недели;
  • working_hours – количество рабочих часов в данных сутках для 40-й часовой рабочей недели;
  • is_project – наличие данного свойства равным 1 (true) означает что указанные сутки в производственном календаре находится в проект закона и еще не утверждена правительством;
  • is_wsch - наличие свойства равным 1, означает что день является так называемый выходным днем с сохранением заработной платы. Смотри описание GET-параметра wsch.
  • documents – массив объектов с информацией о документах (или разделы документа), на основании которых предоставляются праздничные/выходные и прочие особые дни в календаре.

В массиве documents каждый объект содержит в себе следующие свойства:

  • details_number и details_date – Номер и дата основного нормативно-правового акта (НПА);
  • details_amending_number и details_amending_date – Номер и дата документа, вносящего поправки в основной НПА (если отсутствует значит основной НПА без правок, или правки не имеют отношения к производственному календарю).;
  • effective_date – Дата вступления в силу основной НПА (если отсутствует значит дата вступления равна дате утверждения).;
  • to_revoke_number и to_revoke_date – Номер и дата документа, на основании которого основной НПА утратил силу (если отсутствует основной НПА - действующий).;
  • name – Название основного НПА.;
  • title – Заголовок основного НПА.;
  • city – Место издания документа — населённый пункт, указанный в реквизитах основного НПА.;
  • signer_title и signer_name – Должность и ФИО лица, подписавшего нормативный правовой акт.;
  • sections – Массив строк которые содержит оригинальный текст документа, или необходимые разделы документа.

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

  • calendar_days – количество календарных дней в периоде;
  • calendar_days_without_holidays - количество календарных дней в периоде без учета праздничных дней (полезный показатель для расчета продолжительности отпуска работника);
  • work_days – количество рабочих дней в периоде;
  • weekends – количество выходных дней в периоде (без учета праздничных);
  • holidays – количество праздничных дней в периоде;
  • shortened_working_days – количество сокращенных рабочих дней в периоде;
  • working_hours – количество рабочего времени за период.

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

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

Глобальные переменные;Статус;ok
Глобальные переменные;Код страны;ru
Глобальные переменные;Страна;Российская Федерация
Глобальные переменные;Начало периода;01.01.2023
Глобальные переменные;Конец периода;31.12.2023
Глобальные переменные;Тип рабочей недели;5-и дневная рабочая неделя
Глобальные переменные;Период;год
Сутки;01.01.2026;3;Государственный праздник;вс;0;Новогодние каникулы
Сутки;02.01.2026;3;Государственный праздник;пн;0;Новогодние каникулы
Сутки;03.01.2026;3;Государственный праздник;вт;0;Новогодние каникулы
Сутки;04.01.2026;3;Государственный праздник;ср;0;Новогодние каникулы
Сутки;05.01.2026;3;Государственный праздник;чт;0;Новогодние каникулы
Сутки;06.01.2026;3;Государственный праздник;пт;0;Новогодние каникулы
Сутки;07.01.2026;3;Государственный праздник;сб;0;Рождество Христово
Сутки;08.01.2026;3;Государственный праздник;вс;0;Новогодние каникулы
Сутки;09.01.2026;1;Рабочий день;пн;8;
Сутки;10.01.2026;1;Рабочий день;вт;8;
...
Сутки;30.12.2026;2;Выходной день;сб;0;
Сутки;31.12.2026;2;Выходной день;вс;0;
Статистика;Календарных дней;365
Статистика;Календарных дней без праздничных;350
Статистика;Рабочих дней;246
Статистика;Выходных без праздничных;104
Статистика;Праздничные;15
Статистика;Рабочего времени;1964

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

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

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

где:

  • {token} - индивидуальный токен доступа (получить можно тут)
  • {country} – буквенный код страны;
  • {day} – исходные сутки;
  • {format} – формат получаемых данных.

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

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

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

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

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