JSON API производственного календаря РФ: выходные, праздники, предпраздничные и нерабочие дни — одним запросом GET /api/calendar. Доступ по токену, при необходимости с учётом региона (area — код субъекта или название). Подходит для расчёта KPI, дедлайнов, отпусков, смен и нормы рабочего времени без ручной сверки с постановлениями.
<script setup>
import { ref, onMounted } from 'vue'
// API (README): GET /api/calendar?token=...
// Host для токена и HTTPS→HTTP закрыты в браузере — same-origin прокси.
const CALENDAR_API = 'https://studiowest.ru/assets/teme_sw/api/calendar.php'
const TOKEN = 'eyJob3N0IjoiaHR0cHM6Ly9zdHVkaW93ZXN0LnJ1IiwiaXAiOiJodHRwczovL3N0dWRpb3dlc3QucnUiLCJ2YWxpZEZyb20iOiIyMDI2LTA3LTI1VDA5OjE5OjE2LjM3OFoiLCJ2YWxpZFRvIjoiMjAyNy0wNy0yNVQwOToxOToxNi4zNzhaIn0.hGgiCqqCewB_e6KhPO-l4AF7Kva-lJ-kfYjk6I4GT7g'
function pad(n) {
return String(n).padStart(2, '0')
}
function todayFirstDate() {
const d = new Date()
return pad(d.getDate()) + '-' + pad(d.getMonth() + 1) + '-' + d.getFullYear()
}
/** Конец предыдущего месяца — даты ≤ этой блокируются */
function endOfPreviousMonth() {
const d = new Date()
const prev = new Date(d.getFullYear(), d.getMonth(), 0)
return pad(prev.getDate()) + '-' + pad(prev.getMonth() + 1) + '-' + prev.getFullYear()
}
function fmtRu(iso) {
if (!iso) return null
const d = new Date(iso)
if (Number.isNaN(d.getTime())) return null
return pad(d.getDate()) + '-' + pad(d.getMonth() + 1) + '-' + d.getFullYear()
}
function dayAfterIso(iso) {
if (!iso) return null
const d = new Date(iso)
if (Number.isNaN(d.getTime())) return null
d.setDate(d.getDate() + 1)
return pad(d.getDate()) + '-' + pad(d.getMonth() + 1) + '-' + d.getFullYear()
}
const data = ref({
firstDate: todayFirstDate(),
holiday: {
holidays: [],
preholidays: [],
nowork: [],
holiday: []
}
})
const limitation = ref([
{ endDate: endOfPreviousMonth() }
])
onMounted(async () => {
try {
const url = CALENDAR_API + '?token=' + encodeURIComponent(TOKEN)
const res = await fetch(url)
if (!res.ok) {
console.warn('calendar HTTP', res.status)
return
}
const cal = await res.json()
data.value.holiday = {
holidays: cal.holidays || cal.weekend,
preholidays: cal.preholidays || cal.preholiday,
nowork: cal.nowork || [],
holiday: cal.holidays || cal.holiday
}
const limits = [{ endDate: endOfPreviousMonth() }]
const afterToken = dayAfterIso(cal.validTo)
if (afterToken) limits.push({ startDate: afterToken })
limitation.value = limits
} catch (e) {
console.warn('calendar fetch failed', e)
}
})
</script>
<sw-date-picker
:limitation="limitation"
:data="data"
range="range"
></sw-date-picker>
Задачи
Дать разработчикам простой и быстрый API вместо разрозненных таблиц и ручного учёта праздников.
Покрыть федеральный календарь РФ и региональные особенности субъектов.
Связать каждую дату с нормативно-правовым обоснованием.
Сохранить длинный архив и прогнозные периоды для аналитики и планирования.
Решение
Сделали самостоятельный API-сервис с выдачей токена и простым JSON-ответом. Интеграция — один GET-запрос: в ответе сразу списки выходных, праздников, предпраздничных и нерабочих дней, плюс срок действия токена.
GET /api/calendar?token=YOUR_TOKEN
# регион можно передать тремя способами:
GET /api/calendar?token=YOUR_TOKEN&area=23
GET /api/calendar?token=YOUR_TOKEN&area=Краснодарский
GET /api/calendar?token=YOUR_TOKEN&area=Краснодарский%20край
# или через заголовок
Authorization: Bearer YOUR_TOKEN
X-Area: 23
Пример запроссов к API
Список доступных регионов: GET /api/areas. Без area возвращается федеральный календарь.
Параметр area — опциональный код субъекта РФ. Принимает:
номер региона — код субъекта: 23 (Краснодарский край), 16 (Татарстан), 92 (Севастополь);
короткое имя — без «область» / «край» / «Республика», можно без пробелов: Краснодарский, Татарстан, Саха(Якутия);
полное название — как в официальном имени: Краснодарский край, Республика Татарстан, г. Севастополь.
Пример ответа: массивы дат ISO (YYYY-MM-DD) и период действия токена. При указании area в ответ дополнительно попадает поле региона и региональные праздники.
Возможности
Быстрая интеграция. Подключение без лишней обвязки — календарь доступен сразу после получения токена.
Региональные праздники. Календари субъектов РФ с местными и национальными событиями.
Нормативное обоснование. У каждой даты — реквизиты актов, которыми она закреплена.
Архив с 2018 года. Для ретроспективной аналитики и исторических расчётов.
Прогнозы до 2031 года. Планирование вперёд на экспертных календарных данных.
Для кого
API нужен кадровым и расчётным системам, ERP/CRM, сервисам отпусков и смен, внутренним дашбордам и любым продуктам, где важны рабочие дни и переносы. Юридическая база — Трудовой кодекс и акты Правительства, Госдумы и Президента.
Производственный календарь на 2026 год
рабочий выходной праздник предпраздничный * нерабочий
I квартал
Январь
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Февраль
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Март
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Итого
Янв
Фев
Мар
календарных
90
31
28
31
рабочих
55
15
19
21
вых./праздн.
35
16
9
10
40 ч. неделя
440.0
120.0
152.0
168.0
36 ч. неделя
396.0
108.0
136.8
151.2
24 ч. неделя
264.0
72.0
91.2
100.8
II квартал
Апрель
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30*
Май
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8*
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Июнь
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11*
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Итого
Апр
Май
Июн
календарных
91
30
31
30
рабочих
62
22
19
21
вых./праздн.
29
8
12
9
40 ч. неделя
493.0
175.0
151.0
167.0
36 ч. неделя
443.4
157.4
135.8
150.2
24 ч. неделя
294.6
104.6
90.2
99.8
III квартал
Июль
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Август
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Сентябрь
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Итого
Июл
Авг
Сен
календарных
92
31
31
30
рабочих
66
23
21
22
вых./праздн.
26
8
10
8
40 ч. неделя
528.0
184.0
168.0
176.0
36 ч. неделя
475.2
165.6
151.2
158.4
24 ч. неделя
316.8
110.4
100.8
105.6
IV квартал
Октябрь
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Ноябрь
пн
вт
ср
чт
пт
сб
вс
1
2
3*
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Декабрь
пн
вт
ср
чт
пт
сб
вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Итого
Окт
Ноя
Дек
календарных
92
31
30
31
рабочих
64
22
20
22
вых./праздн.
28
9
10
9
40 ч. неделя
511.0
176.0
159.0
176.0
36 ч. неделя
459.8
158.4
143.0
158.4
24 ч. неделя
306.2
105.6
95.0
105.6
Нормы рабочего времени в 2026 году
Кол-во дней за 2026 год календарных — 365 рабочие дни — 247 выходных/праздничных — 118
Рабочее время за 2026 год (в часах) при 40-часовой неделе — 1972.0 при 36-часовой неделе — 1774.4 при 24-часовой неделе — 1181.6
* Предпраздничные дни, в которые продолжительность работы сокращается на один час. Источник — API производственного календаря Studio West (федеральный календарь РФ).