Производственный календарь для разработчиков
Календарь «По нормам» в открытых файлах: подключайте его к сайту, приложению или таблице без ключей и регистрации. Данные те же, что на страницах календаря, и обновляются вместе с ними.
Файлы
- 2026: JSON, ICS. Excel, Word и PDF — на странице 2026 года.
- 2027: JSON, ICS. Excel, Word и PDF — на странице 2027 года.
- Все годы для подписки: https://ponormam.ru/proizvodstvennyj-kalendar/prazdniki.ics
Файлы отдаются с заголовком Access-Control-Allow-Origin: *, поэтому их можно загружать прямо из браузера на другом сайте.
JSON
Один файл на год: все дни с типом и часами и итоги по периодам. Формат версии 1 (поле formatVersion): поля не переименовываются и не удаляются, новые могут добавиться.
Поля года
status- official — переносы утверждены постановлением, draft — проект
verifiedAt- дата, когда данные сверены с документами
sources- документы, по которым составлен календарь
preholidayShorteningHours- на сколько часов сокращается предпраздничный день
days- все дни года
months, quarters, halves, total- итоги по месяцам, кварталам, полугодиям и за год: календарные, рабочие и нерабочие дни, праздники, сокращённые дни, нормы часов
attribution- просьба о ссылке на сайт
Поля дня
date- дата в виде ГГГГ-ММ-ДД
weekday- день недели: 1 — понедельник, 7 — воскресенье
type- тип дня, см. ниже
name- название праздника — только у нерабочих праздничных дней
workingWeekend- true, если суббота или воскресенье стали рабочими по переносу
transferredFrom- у перенесённого выходного — с какого дня он перенесён
basis- основание переноса: decree — постановление Правительства, tk112-p2 — праздник выпал на выходной (ч. 2 ст. 112 ТК)
hours40, hours36, hours24- часы дня при неделе 40, 36 и 24 часа
Типы дней
working— рабочий деньpreholiday— рабочий день, сокращённый перед праздникомweekend— выходнойholiday— нерабочий праздничный день (ст. 112 ТК)transferred-off— выходной по переносу
Пример
const response = await fetch('https://ponormam.ru/proizvodstvennyj-kalendar/2027/proizvodstvennyj-kalendar-2027.json');
const calendar = await response.json();
// Рабочий ли день: и обычный рабочий, и сокращённый предпраздничный.
const isWorkingDay = (date) => {
const day = calendar.days.find((item) => item.date === date);
return day?.type === 'working' || day?.type === 'preholiday';
};import requests
calendar = requests.get("https://ponormam.ru/proizvodstvennyj-kalendar/2027/proizvodstvennyj-kalendar-2027.json", timeout=10).json()
february = next(month for month in calendar["months"] if month["month"] == 2)
print(february["workingDays"], february["hours40"])Чего пока нет
В файлах только федеральный календарь для пятидневной недели: календари регионов и шестидневная неделя есть на страницах сайта, но в JSON и ICS пока не выгружаются. Файлов за прошлые годы тоже пока нет. Это статические файлы, а не API с запросами по дате: скачивайте JSON раз в день или реже и считайте у себя.
Подписка на календарь
В подписке праздники, переносы и сокращённые дни всех лет, которые есть на сайте. Когда появится календарь следующего года, он придёт к подписчикам сам. В Google, Яндекс или Apple Календаре выберите подписку по адресу (URL) и вставьте:
https://ponormam.ru/proizvodstvennyj-kalendar/prazdniki.ics
Условия
Данные: «По нормам», https://ponormam.ru. Если используете их у себя, поставьте, пожалуйста, ссылку на сайт.