@hubex/mcp 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.env.example +54 -0
  2. package/CONNECTING.md +260 -0
  3. package/README.md +266 -0
  4. package/dist/auth.js +226 -0
  5. package/dist/config.js +120 -0
  6. package/dist/generated/manifest.js +3643 -0
  7. package/dist/guides/field-notes.json +27 -0
  8. package/dist/guides/loader.js +32 -0
  9. package/dist/guides/service-map.js +6 -0
  10. package/dist/http.js +93 -0
  11. package/dist/index/store.js +134 -0
  12. package/dist/index/types.js +1 -0
  13. package/dist/index.js +20 -0
  14. package/dist/paths.js +20 -0
  15. package/dist/pii/fields.js +100 -0
  16. package/dist/pii/mask.js +50 -0
  17. package/dist/pii/strategies.js +88 -0
  18. package/dist/schema/build-index.js +67 -0
  19. package/dist/schema/deref.js +87 -0
  20. package/dist/schema/describe.js +65 -0
  21. package/dist/server.js +62 -0
  22. package/dist/token-prompt.js +41 -0
  23. package/dist/tools/curated.js +151 -0
  24. package/dist/tools/discovery.js +187 -0
  25. package/dist/tools/guides.js +126 -0
  26. package/dist/tools/registry.js +37 -0
  27. package/dist/tools/request.js +170 -0
  28. package/dist/tools/types.js +1 -0
  29. package/docs/guides/assets.md +334 -0
  30. package/docs/guides/attributes.md +125 -0
  31. package/docs/guides/checklisttemplates.md +154 -0
  32. package/docs/guides/companies.md +57 -0
  33. package/docs/guides/dictionaries.md +64 -0
  34. package/docs/guides/lifecycle.md +263 -0
  35. package/docs/guides/materials.md +135 -0
  36. package/docs/guides/notifications.md +184 -0
  37. package/docs/guides/roles.md +125 -0
  38. package/docs/guides/sla.md +130 -0
  39. package/docs/guides/start.md +67 -0
  40. package/docs/guides/taskchecklists.md +149 -0
  41. package/docs/guides/taskcreate.md +260 -0
  42. package/docs/guides/taskedit.md +277 -0
  43. package/docs/guides/tasktypes.md +156 -0
  44. package/docs/guides/users.md +71 -0
  45. package/generated/index.dev.json +18776 -0
  46. package/generated/index.prod.json +18858 -0
  47. package/package.json +48 -0
  48. package/swagger/dev/ADM.json +27777 -0
  49. package/swagger/dev/AUTH.json +1739 -0
  50. package/swagger/dev/AUTHN.json +1250 -0
  51. package/swagger/dev/AUTHZ.json +1404 -0
  52. package/swagger/dev/CM.json +309 -0
  53. package/swagger/dev/COMMON.json +6543 -0
  54. package/swagger/dev/ES.json +28029 -0
  55. package/swagger/dev/EXPORT.json +4575 -0
  56. package/swagger/dev/IMPORT.json +1479 -0
  57. package/swagger/dev/LIC.json +224 -0
  58. package/swagger/dev/MSG.json +7883 -0
  59. package/swagger/dev/NEWS.json +348 -0
  60. package/swagger/dev/PA.json +5981 -0
  61. package/swagger/dev/PMP.json +3196 -0
  62. package/swagger/dev/PROXY.json +416 -0
  63. package/swagger/dev/REPORT.json +3921 -0
  64. package/swagger/dev/SC.json +3771 -0
  65. package/swagger/dev/SLA.json +2837 -0
  66. package/swagger/dev/TSTG.json +4981 -0
  67. package/swagger/dev/UI.json +4720 -0
  68. package/swagger/dev/WH.json +16796 -0
  69. package/swagger/dev/WORK.json +36024 -0
  70. package/swagger/dev/WSP.json +1612 -0
  71. package/swagger/prod/ADM.json +27777 -0
  72. package/swagger/prod/AUTH.json +1308 -0
  73. package/swagger/prod/AUTHN.json +2710 -0
  74. package/swagger/prod/AUTHZ.json +896 -0
  75. package/swagger/prod/CM.json +162 -0
  76. package/swagger/prod/COMMON.json +4910 -0
  77. package/swagger/prod/ES.json +28029 -0
  78. package/swagger/prod/EXPORT.json +3091 -0
  79. package/swagger/prod/LIC.json +123 -0
  80. package/swagger/prod/MSG.json +6239 -0
  81. package/swagger/prod/NEWS.json +295 -0
  82. package/swagger/prod/PA.json +5123 -0
  83. package/swagger/prod/PMP.json +2978 -0
  84. package/swagger/prod/PROXY.json +250 -0
  85. package/swagger/prod/REPORT.json +3729 -0
  86. package/swagger/prod/SC.json +3771 -0
  87. package/swagger/prod/SLA.json +2201 -0
  88. package/swagger/prod/TSTG.json +4220 -0
  89. package/swagger/prod/UI.json +3879 -0
  90. package/swagger/prod/WH.json +16730 -0
  91. package/swagger/prod/WORK.json +35994 -0
  92. package/swagger/prod/WSP.json +1468 -0
@@ -0,0 +1,1612 @@
1
+ {
2
+ "openapi": "3.0.1",
3
+ "info": {
4
+ "title": "API for work schedule managing for HubEx",
5
+ "description": "Service offers various methods for managing schedule rules and their corresponding attributes.",
6
+ "contact": {
7
+ "name": "SmartService Backend Team",
8
+ "email": "fmbackend@melston.ru"
9
+ },
10
+ "version": "v1.0.0.0"
11
+ },
12
+ "servers": [
13
+ {
14
+ "url": "/WSP"
15
+ }
16
+ ],
17
+ "paths": {
18
+ "/ScheduleRules": {
19
+ "get": {
20
+ "tags": [
21
+ "ScheduleRules"
22
+ ],
23
+ "summary": "Возвращает список доступных графиков рабочего времени.",
24
+ "description": "## Пример запроса:\r\n```text\r\nGET /ScheduleRules\r\nAuthorization: Bearer <access-token>\r\nRange: Offset=0; Fetch=50\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"10\": {\r\n \"name\": \"Стандартный график\",\r\n \"description\": \"График работы с 9:00 до 18:00\",\r\n \"scheduleTypeID\": 1,\r\n \"dataFrom\": \"2024-01-01T00:00:00Z\"\r\n }\r\n}\r\n```\r\n \r\n## Пример успешного ответа (206):\r\nТело ответа имеет тот же формат, что и для `200`, но содержит частичный диапазон.\r\n \r\n## Негативные сценарии:\r\n- 204 No Content — графики не найдены.\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
25
+ "parameters": [
26
+ {
27
+ "name": "X-Application-ID",
28
+ "in": "header",
29
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
30
+ "schema": {
31
+ "enum": [
32
+ 1,
33
+ 2,
34
+ 3,
35
+ 4,
36
+ 5,
37
+ 6
38
+ ],
39
+ "type": "integer",
40
+ "format": "int32",
41
+ "default": 3,
42
+ "x-enumNames": [
43
+ "EngineerMobile",
44
+ "CustomerMobile",
45
+ "MainWeb",
46
+ "AdminWeb",
47
+ "Api",
48
+ "PlateWeb"
49
+ ]
50
+ }
51
+ }
52
+ ],
53
+ "responses": {
54
+ "200": {
55
+ "description": "Список графиков успешно получен.",
56
+ "content": {
57
+ "text/plain": {
58
+ "schema": {
59
+ "type": "object",
60
+ "additionalProperties": {
61
+ "$ref": "#/components/schemas/ListResult"
62
+ }
63
+ }
64
+ },
65
+ "application/json": {
66
+ "schema": {
67
+ "type": "object",
68
+ "additionalProperties": {
69
+ "$ref": "#/components/schemas/ListResult"
70
+ }
71
+ }
72
+ },
73
+ "text/json": {
74
+ "schema": {
75
+ "type": "object",
76
+ "additionalProperties": {
77
+ "$ref": "#/components/schemas/ListResult"
78
+ }
79
+ }
80
+ }
81
+ }
82
+ },
83
+ "206": {
84
+ "description": "Возвращена часть списка в пределах диапазона.",
85
+ "content": {
86
+ "text/plain": {
87
+ "schema": {
88
+ "type": "object",
89
+ "additionalProperties": {
90
+ "$ref": "#/components/schemas/ListResult"
91
+ }
92
+ }
93
+ },
94
+ "application/json": {
95
+ "schema": {
96
+ "type": "object",
97
+ "additionalProperties": {
98
+ "$ref": "#/components/schemas/ListResult"
99
+ }
100
+ }
101
+ },
102
+ "text/json": {
103
+ "schema": {
104
+ "type": "object",
105
+ "additionalProperties": {
106
+ "$ref": "#/components/schemas/ListResult"
107
+ }
108
+ }
109
+ }
110
+ }
111
+ },
112
+ "204": {
113
+ "description": "Графики не найдены."
114
+ },
115
+ "401": {
116
+ "description": "Токен отсутствует или некорректен."
117
+ },
118
+ "403": {
119
+ "description": "Недостаточно прав."
120
+ }
121
+ },
122
+ "security": [
123
+ {
124
+ "Bearer": [ ]
125
+ }
126
+ ]
127
+ },
128
+ "post": {
129
+ "tags": [
130
+ "ScheduleRules"
131
+ ],
132
+ "summary": "Создаёт график рабочего времени.",
133
+ "description": "## Пример запроса:\r\n```json\r\nPOST /ScheduleRules\r\nAuthorization: Bearer <access-token>\r\n \r\n{\r\n \"name\": \"Стандартный график\",\r\n \"description\": \"График работы с 9:00 до 18:00\",\r\n \"isDefault\": false,\r\n \"scheduleTypeID\": 1,\r\n \"from\": \"2024-06-01T00:00:00Z\",\r\n \"till\": \"2024-12-31T23:59:59Z\",\r\n \"considerPublicHolidays\": true,\r\n \"shortageHoursBeforeHoliday\": 1,\r\n \"rules\": [\r\n {\r\n \"cron\": \"0 9 * * 1-5\",\r\n \"occurrenceDuration\": \"08:00:00\"\r\n }\r\n ],\r\n \"overridings\": []\r\n}\r\n```\r\n \r\n## Пример успешного ответа (201):\r\n```json\r\n10\r\n```\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict — некорректные данные модели.\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
134
+ "parameters": [
135
+ {
136
+ "name": "X-Application-ID",
137
+ "in": "header",
138
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
139
+ "schema": {
140
+ "enum": [
141
+ 1,
142
+ 2,
143
+ 3,
144
+ 4,
145
+ 5,
146
+ 6
147
+ ],
148
+ "type": "integer",
149
+ "format": "int32",
150
+ "default": 3,
151
+ "x-enumNames": [
152
+ "EngineerMobile",
153
+ "CustomerMobile",
154
+ "MainWeb",
155
+ "AdminWeb",
156
+ "Api",
157
+ "PlateWeb"
158
+ ]
159
+ }
160
+ }
161
+ ],
162
+ "requestBody": {
163
+ "description": "Данные для создания графика.",
164
+ "content": {
165
+ "application/json-patch+json": {
166
+ "schema": {
167
+ "$ref": "#/components/schemas/ScheduleCreateDto"
168
+ }
169
+ },
170
+ "application/json": {
171
+ "schema": {
172
+ "$ref": "#/components/schemas/ScheduleCreateDto"
173
+ }
174
+ },
175
+ "text/json": {
176
+ "schema": {
177
+ "$ref": "#/components/schemas/ScheduleCreateDto"
178
+ }
179
+ },
180
+ "application/*+json": {
181
+ "schema": {
182
+ "$ref": "#/components/schemas/ScheduleCreateDto"
183
+ }
184
+ }
185
+ }
186
+ },
187
+ "responses": {
188
+ "201": {
189
+ "description": "График успешно создан.",
190
+ "content": {
191
+ "text/plain": {
192
+ "schema": {
193
+ "type": "integer",
194
+ "format": "int32"
195
+ }
196
+ },
197
+ "application/json": {
198
+ "schema": {
199
+ "type": "integer",
200
+ "format": "int32"
201
+ }
202
+ },
203
+ "text/json": {
204
+ "schema": {
205
+ "type": "integer",
206
+ "format": "int32"
207
+ }
208
+ }
209
+ }
210
+ },
211
+ "409": {
212
+ "description": "Некорректные данные."
213
+ },
214
+ "401": {
215
+ "description": "Токен отсутствует или некорректен."
216
+ },
217
+ "403": {
218
+ "description": "Недостаточно прав."
219
+ }
220
+ },
221
+ "security": [
222
+ {
223
+ "Bearer": [ ]
224
+ }
225
+ ]
226
+ }
227
+ },
228
+ "/ScheduleRules/preview": {
229
+ "post": {
230
+ "tags": [
231
+ "ScheduleRules"
232
+ ],
233
+ "summary": "Возвращает предпросмотр графика рабочего времени.",
234
+ "description": "## Пример запроса:\r\n```json\r\nPOST /ScheduleRules/preview\r\nAuthorization: Bearer <access-token>\r\n \r\n{\r\n \"from\": \"2024-06-01T00:00:00Z\",\r\n \"till\": \"2024-06-30T23:59:59Z\",\r\n \"considerPublicHolidays\": true,\r\n \"shortageHoursBeforeHoliday\": 1,\r\n \"rules\": [\r\n {\r\n \"cron\": \"0 9 * * 1-5\",\r\n \"occurrenceDuration\": \"08:00:00\"\r\n }\r\n ],\r\n \"overridings\": []\r\n}\r\n```\r\n \r\n## Пример успешного ответа (201):\r\n```json\r\n[\r\n {\r\n \"scheduleRuleID\": 0,\r\n \"timeFrom\": \"2024-06-03T09:00:00Z\",\r\n \"timeTill\": \"2024-06-03T17:00:00Z\",\r\n \"isPublicHoliday\": false,\r\n \"isNightShift\": false,\r\n \"dateWork\": \"2024-06-03T00:00:00Z\"\r\n }\r\n]\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
235
+ "parameters": [
236
+ {
237
+ "name": "X-Application-ID",
238
+ "in": "header",
239
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
240
+ "schema": {
241
+ "enum": [
242
+ 1,
243
+ 2,
244
+ 3,
245
+ 4,
246
+ 5,
247
+ 6
248
+ ],
249
+ "type": "integer",
250
+ "format": "int32",
251
+ "default": 3,
252
+ "x-enumNames": [
253
+ "EngineerMobile",
254
+ "CustomerMobile",
255
+ "MainWeb",
256
+ "AdminWeb",
257
+ "Api",
258
+ "PlateWeb"
259
+ ]
260
+ }
261
+ }
262
+ ],
263
+ "requestBody": {
264
+ "description": "Данные для генерации предпросмотра.",
265
+ "content": {
266
+ "application/json-patch+json": {
267
+ "schema": {
268
+ "$ref": "#/components/schemas/ScheduleExtendDto"
269
+ }
270
+ },
271
+ "application/json": {
272
+ "schema": {
273
+ "$ref": "#/components/schemas/ScheduleExtendDto"
274
+ }
275
+ },
276
+ "text/json": {
277
+ "schema": {
278
+ "$ref": "#/components/schemas/ScheduleExtendDto"
279
+ }
280
+ },
281
+ "application/*+json": {
282
+ "schema": {
283
+ "$ref": "#/components/schemas/ScheduleExtendDto"
284
+ }
285
+ }
286
+ }
287
+ },
288
+ "responses": {
289
+ "201": {
290
+ "description": "Предпросмотр успешно сгенерирован.",
291
+ "content": {
292
+ "text/plain": {
293
+ "schema": {
294
+ "type": "array",
295
+ "items": {
296
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
297
+ }
298
+ }
299
+ },
300
+ "application/json": {
301
+ "schema": {
302
+ "type": "array",
303
+ "items": {
304
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
305
+ }
306
+ }
307
+ },
308
+ "text/json": {
309
+ "schema": {
310
+ "type": "array",
311
+ "items": {
312
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
313
+ }
314
+ }
315
+ }
316
+ }
317
+ },
318
+ "401": {
319
+ "description": "Токен отсутствует или некорректен."
320
+ },
321
+ "403": {
322
+ "description": "Недостаточно прав."
323
+ }
324
+ },
325
+ "security": [
326
+ {
327
+ "Bearer": [ ]
328
+ }
329
+ ]
330
+ }
331
+ },
332
+ "/ScheduleRules/{id}": {
333
+ "get": {
334
+ "tags": [
335
+ "ScheduleRules"
336
+ ],
337
+ "summary": "Возвращает график рабочего времени по идентификатору.",
338
+ "description": "## Пример запроса:\r\n```text\r\nGET /ScheduleRules/10\r\nAuthorization: Bearer <access-token>\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"name\": \"Стандартный график\",\r\n \"description\": \"График работы с 9:00 до 18:00\",\r\n \"scheduleTypeID\": 1,\r\n \"periods\": [\r\n {\r\n \"from\": \"2024-01-01T00:00:00Z\",\r\n \"till\": \"2024-12-31T23:59:59Z\",\r\n \"holidayCalendarID\": 1,\r\n \"shortageHoursBeforeHoliday\": 1,\r\n \"model\": {\r\n \"rules\": [\r\n {\r\n \"cron\": \"0 9 * * 1-5\",\r\n \"occurrenceDuration\": \"08:00:00\"\r\n }\r\n ],\r\n \"overridings\": []\r\n }\r\n }\r\n ]\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
339
+ "parameters": [
340
+ {
341
+ "name": "id",
342
+ "in": "path",
343
+ "description": "Идентификатор правила графика.",
344
+ "required": true,
345
+ "schema": {
346
+ "type": "integer",
347
+ "format": "int32"
348
+ }
349
+ },
350
+ {
351
+ "name": "X-Application-ID",
352
+ "in": "header",
353
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
354
+ "schema": {
355
+ "enum": [
356
+ 1,
357
+ 2,
358
+ 3,
359
+ 4,
360
+ 5,
361
+ 6
362
+ ],
363
+ "type": "integer",
364
+ "format": "int32",
365
+ "default": 3,
366
+ "x-enumNames": [
367
+ "EngineerMobile",
368
+ "CustomerMobile",
369
+ "MainWeb",
370
+ "AdminWeb",
371
+ "Api",
372
+ "PlateWeb"
373
+ ]
374
+ }
375
+ }
376
+ ],
377
+ "responses": {
378
+ "200": {
379
+ "description": "График успешно получен.",
380
+ "content": {
381
+ "text/plain": {
382
+ "schema": {
383
+ "$ref": "#/components/schemas/ScheduleRuleDto"
384
+ }
385
+ },
386
+ "application/json": {
387
+ "schema": {
388
+ "$ref": "#/components/schemas/ScheduleRuleDto"
389
+ }
390
+ },
391
+ "text/json": {
392
+ "schema": {
393
+ "$ref": "#/components/schemas/ScheduleRuleDto"
394
+ }
395
+ }
396
+ }
397
+ },
398
+ "401": {
399
+ "description": "Токен отсутствует или некорректен."
400
+ },
401
+ "403": {
402
+ "description": "Недостаточно прав."
403
+ }
404
+ },
405
+ "security": [
406
+ {
407
+ "Bearer": [ ]
408
+ }
409
+ ]
410
+ },
411
+ "put": {
412
+ "tags": [
413
+ "ScheduleRules"
414
+ ],
415
+ "summary": "Обновляет график рабочего времени.",
416
+ "description": "Если `rules` не указаны, используются правила последнего периода существующего графика.\r\n \r\n## Пример запроса:\r\n```json\r\nPUT /ScheduleRules/10\r\nAuthorization: Bearer <access-token>\r\n \r\n{\r\n \"name\": \"Обновлённый график\",\r\n \"description\": \"Новое описание\",\r\n \"scheduleTypeID\": 1,\r\n \"from\": \"2024-01-01T00:00:00Z\",\r\n \"till\": \"2024-12-31T23:59:59Z\",\r\n \"considerPublicHolidays\": true,\r\n \"shortageHoursBeforeHoliday\": 1,\r\n \"rules\": [],\r\n \"overridings\": []\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict — некорректные данные модели.\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
417
+ "parameters": [
418
+ {
419
+ "name": "id",
420
+ "in": "path",
421
+ "description": "Идентификатор правила графика.",
422
+ "required": true,
423
+ "schema": {
424
+ "type": "integer",
425
+ "format": "int32"
426
+ }
427
+ },
428
+ {
429
+ "name": "X-Application-ID",
430
+ "in": "header",
431
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
432
+ "schema": {
433
+ "enum": [
434
+ 1,
435
+ 2,
436
+ 3,
437
+ 4,
438
+ 5,
439
+ 6
440
+ ],
441
+ "type": "integer",
442
+ "format": "int32",
443
+ "default": 3,
444
+ "x-enumNames": [
445
+ "EngineerMobile",
446
+ "CustomerMobile",
447
+ "MainWeb",
448
+ "AdminWeb",
449
+ "Api",
450
+ "PlateWeb"
451
+ ]
452
+ }
453
+ }
454
+ ],
455
+ "requestBody": {
456
+ "description": "Данные для обновления графика.",
457
+ "content": {
458
+ "application/json-patch+json": {
459
+ "schema": {
460
+ "$ref": "#/components/schemas/ScheduleUpdateDto"
461
+ }
462
+ },
463
+ "application/json": {
464
+ "schema": {
465
+ "$ref": "#/components/schemas/ScheduleUpdateDto"
466
+ }
467
+ },
468
+ "text/json": {
469
+ "schema": {
470
+ "$ref": "#/components/schemas/ScheduleUpdateDto"
471
+ }
472
+ },
473
+ "application/*+json": {
474
+ "schema": {
475
+ "$ref": "#/components/schemas/ScheduleUpdateDto"
476
+ }
477
+ }
478
+ }
479
+ },
480
+ "responses": {
481
+ "202": {
482
+ "description": "График успешно обновлён."
483
+ },
484
+ "409": {
485
+ "description": "Некорректные данные."
486
+ },
487
+ "401": {
488
+ "description": "Токен отсутствует или некорректен."
489
+ },
490
+ "403": {
491
+ "description": "Недостаточно прав."
492
+ }
493
+ },
494
+ "security": [
495
+ {
496
+ "Bearer": [ ]
497
+ }
498
+ ]
499
+ },
500
+ "delete": {
501
+ "tags": [
502
+ "ScheduleRules"
503
+ ],
504
+ "summary": "Удаляет график рабочего времени.",
505
+ "description": "## Пример запроса:\r\n```text\r\nDELETE /ScheduleRules/10\r\nAuthorization: Bearer <access-token>\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
506
+ "parameters": [
507
+ {
508
+ "name": "id",
509
+ "in": "path",
510
+ "description": "Идентификатор правила графика.",
511
+ "required": true,
512
+ "schema": {
513
+ "type": "integer",
514
+ "format": "int32"
515
+ }
516
+ },
517
+ {
518
+ "name": "X-Application-ID",
519
+ "in": "header",
520
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
521
+ "schema": {
522
+ "enum": [
523
+ 1,
524
+ 2,
525
+ 3,
526
+ 4,
527
+ 5,
528
+ 6
529
+ ],
530
+ "type": "integer",
531
+ "format": "int32",
532
+ "default": 3,
533
+ "x-enumNames": [
534
+ "EngineerMobile",
535
+ "CustomerMobile",
536
+ "MainWeb",
537
+ "AdminWeb",
538
+ "Api",
539
+ "PlateWeb"
540
+ ]
541
+ }
542
+ }
543
+ ],
544
+ "responses": {
545
+ "202": {
546
+ "description": "График успешно удалён."
547
+ },
548
+ "401": {
549
+ "description": "Токен отсутствует или некорректен."
550
+ },
551
+ "403": {
552
+ "description": "Недостаточно прав."
553
+ }
554
+ },
555
+ "security": [
556
+ {
557
+ "Bearer": [ ]
558
+ }
559
+ ]
560
+ }
561
+ },
562
+ "/ScheduleRules/extend/{id}": {
563
+ "put": {
564
+ "tags": [
565
+ "ScheduleRules"
566
+ ],
567
+ "summary": "Расширяет график рабочего времени.",
568
+ "description": "Если `rules` не указаны, используются правила последнего периода существующего графика.\r\n \r\n## Пример запроса:\r\n```json\r\nPUT /ScheduleRules/extend/10\r\nAuthorization: Bearer <access-token>\r\n \r\n{\r\n \"from\": \"2025-01-01T00:00:00Z\",\r\n \"till\": \"2025-12-31T23:59:59Z\",\r\n \"considerPublicHolidays\": true,\r\n \"shortageHoursBeforeHoliday\": 1,\r\n \"rules\": [],\r\n \"overridings\": []\r\n}\r\n```\r\n \r\n## Пример успешного ответа (202):\r\nТело ответа пустое.\r\n \r\n## Негативные сценарии:\r\n- 409 Conflict — некорректные данные модели.\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
569
+ "parameters": [
570
+ {
571
+ "name": "id",
572
+ "in": "path",
573
+ "description": "Идентификатор правила графика.",
574
+ "required": true,
575
+ "schema": {
576
+ "type": "integer",
577
+ "format": "int32"
578
+ }
579
+ },
580
+ {
581
+ "name": "X-Application-ID",
582
+ "in": "header",
583
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
584
+ "schema": {
585
+ "enum": [
586
+ 1,
587
+ 2,
588
+ 3,
589
+ 4,
590
+ 5,
591
+ 6
592
+ ],
593
+ "type": "integer",
594
+ "format": "int32",
595
+ "default": 3,
596
+ "x-enumNames": [
597
+ "EngineerMobile",
598
+ "CustomerMobile",
599
+ "MainWeb",
600
+ "AdminWeb",
601
+ "Api",
602
+ "PlateWeb"
603
+ ]
604
+ }
605
+ }
606
+ ],
607
+ "requestBody": {
608
+ "description": "Данные для расширения графика.",
609
+ "content": {
610
+ "application/json-patch+json": {
611
+ "schema": {
612
+ "$ref": "#/components/schemas/ScheduleExtendDto"
613
+ }
614
+ },
615
+ "application/json": {
616
+ "schema": {
617
+ "$ref": "#/components/schemas/ScheduleExtendDto"
618
+ }
619
+ },
620
+ "text/json": {
621
+ "schema": {
622
+ "$ref": "#/components/schemas/ScheduleExtendDto"
623
+ }
624
+ },
625
+ "application/*+json": {
626
+ "schema": {
627
+ "$ref": "#/components/schemas/ScheduleExtendDto"
628
+ }
629
+ }
630
+ }
631
+ },
632
+ "responses": {
633
+ "202": {
634
+ "description": "График успешно расширен."
635
+ },
636
+ "409": {
637
+ "description": "Некорректные данные."
638
+ },
639
+ "401": {
640
+ "description": "Токен отсутствует или некорректен."
641
+ },
642
+ "403": {
643
+ "description": "Недостаточно прав."
644
+ }
645
+ },
646
+ "security": [
647
+ {
648
+ "Bearer": [ ]
649
+ }
650
+ ]
651
+ }
652
+ },
653
+ "/ScheduleRules/holiday": {
654
+ "get": {
655
+ "tags": [
656
+ "ScheduleRules"
657
+ ],
658
+ "summary": "Возвращает график праздничных дней за указанный год.",
659
+ "description": "## Пример запроса:\r\n```text\r\nGET /ScheduleRules/holiday?year=2024\r\nAuthorization: Bearer <access-token>\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"RU\": [\r\n \"2024-01-01T00:00:00Z\",\r\n \"2024-01-07T00:00:00Z\"\r\n ]\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
660
+ "parameters": [
661
+ {
662
+ "name": "year",
663
+ "in": "query",
664
+ "description": "Год, за который требуется получить график праздничных дней.",
665
+ "schema": {
666
+ "type": "string"
667
+ }
668
+ },
669
+ {
670
+ "name": "X-Application-ID",
671
+ "in": "header",
672
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
673
+ "schema": {
674
+ "enum": [
675
+ 1,
676
+ 2,
677
+ 3,
678
+ 4,
679
+ 5,
680
+ 6
681
+ ],
682
+ "type": "integer",
683
+ "format": "int32",
684
+ "default": 3,
685
+ "x-enumNames": [
686
+ "EngineerMobile",
687
+ "CustomerMobile",
688
+ "MainWeb",
689
+ "AdminWeb",
690
+ "Api",
691
+ "PlateWeb"
692
+ ]
693
+ }
694
+ }
695
+ ],
696
+ "responses": {
697
+ "200": {
698
+ "description": "График праздников успешно получен.",
699
+ "content": {
700
+ "text/plain": {
701
+ "schema": {
702
+ "type": "object",
703
+ "additionalProperties": {
704
+ "type": "array",
705
+ "items": {
706
+ "type": "string",
707
+ "format": "date-time"
708
+ }
709
+ }
710
+ }
711
+ },
712
+ "application/json": {
713
+ "schema": {
714
+ "type": "object",
715
+ "additionalProperties": {
716
+ "type": "array",
717
+ "items": {
718
+ "type": "string",
719
+ "format": "date-time"
720
+ }
721
+ }
722
+ }
723
+ },
724
+ "text/json": {
725
+ "schema": {
726
+ "type": "object",
727
+ "additionalProperties": {
728
+ "type": "array",
729
+ "items": {
730
+ "type": "string",
731
+ "format": "date-time"
732
+ }
733
+ }
734
+ }
735
+ }
736
+ }
737
+ },
738
+ "401": {
739
+ "description": "Токен отсутствует или некорректен."
740
+ },
741
+ "403": {
742
+ "description": "Недостаточно прав."
743
+ }
744
+ },
745
+ "security": [
746
+ {
747
+ "Bearer": [ ]
748
+ }
749
+ ]
750
+ }
751
+ },
752
+ "/WorkSchedules": {
753
+ "get": {
754
+ "tags": [
755
+ "WorkSchedules"
756
+ ],
757
+ "summary": "Возвращает график рабочего времени на заданный период.",
758
+ "description": "## Пример запроса:\r\n```text\r\nGET /WorkSchedules?validFrom=2024-06-01&validTill=2024-06-30&scheduleRuleID=10\r\nAuthorization: Bearer <access-token>\r\nRange: Offset=0; Fetch=50\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"10\": [\r\n {\r\n \"scheduleRuleID\": 10,\r\n \"timeFrom\": \"2024-06-15T09:00:00Z\",\r\n \"timeTill\": \"2024-06-15T18:00:00Z\",\r\n \"isPublicHoliday\": false,\r\n \"isNightShift\": false,\r\n \"dateWork\": \"2024-06-15T00:00:00Z\"\r\n }\r\n ]\r\n}\r\n```\r\n \r\n## Пример успешного ответа (206):\r\nТело ответа имеет тот же формат, что и для `200`, но содержит частичный диапазон.\r\n \r\n## Пример негативного ответа (400):\r\n```json\r\n{\r\n \"traceIdentifier\": \"0HN1234567890\",\r\n \"code\": \"ScheduleRuleNull\",\r\n \"message\": \"Schedule rule is required\"\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 204 No Content — график не найден.\r\n- 400 Bad Request — некорректные query-параметры.\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
759
+ "parameters": [
760
+ {
761
+ "name": "X-Application-ID",
762
+ "in": "header",
763
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
764
+ "schema": {
765
+ "enum": [
766
+ 1,
767
+ 2,
768
+ 3,
769
+ 4,
770
+ 5,
771
+ 6
772
+ ],
773
+ "type": "integer",
774
+ "format": "int32",
775
+ "default": 3,
776
+ "x-enumNames": [
777
+ "EngineerMobile",
778
+ "CustomerMobile",
779
+ "MainWeb",
780
+ "AdminWeb",
781
+ "Api",
782
+ "PlateWeb"
783
+ ]
784
+ }
785
+ }
786
+ ],
787
+ "responses": {
788
+ "200": {
789
+ "description": "График успешно получен.",
790
+ "content": {
791
+ "text/plain": {
792
+ "schema": {
793
+ "type": "object",
794
+ "additionalProperties": {
795
+ "type": "array",
796
+ "items": {
797
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
798
+ }
799
+ }
800
+ }
801
+ },
802
+ "application/json": {
803
+ "schema": {
804
+ "type": "object",
805
+ "additionalProperties": {
806
+ "type": "array",
807
+ "items": {
808
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
809
+ }
810
+ }
811
+ }
812
+ },
813
+ "text/json": {
814
+ "schema": {
815
+ "type": "object",
816
+ "additionalProperties": {
817
+ "type": "array",
818
+ "items": {
819
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
820
+ }
821
+ }
822
+ }
823
+ }
824
+ }
825
+ },
826
+ "206": {
827
+ "description": "Возвращена часть записей в пределах диапазона.",
828
+ "content": {
829
+ "text/plain": {
830
+ "schema": {
831
+ "type": "object",
832
+ "additionalProperties": {
833
+ "type": "array",
834
+ "items": {
835
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
836
+ }
837
+ }
838
+ }
839
+ },
840
+ "application/json": {
841
+ "schema": {
842
+ "type": "object",
843
+ "additionalProperties": {
844
+ "type": "array",
845
+ "items": {
846
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
847
+ }
848
+ }
849
+ }
850
+ },
851
+ "text/json": {
852
+ "schema": {
853
+ "type": "object",
854
+ "additionalProperties": {
855
+ "type": "array",
856
+ "items": {
857
+ "$ref": "#/components/schemas/WorkScheduleDailyItemResult"
858
+ }
859
+ }
860
+ }
861
+ }
862
+ }
863
+ },
864
+ "204": {
865
+ "description": "Записи не найдены."
866
+ },
867
+ "400": {
868
+ "description": "Некорректные параметры запроса.",
869
+ "content": {
870
+ "text/plain": {
871
+ "schema": {
872
+ "$ref": "#/components/schemas/ProblemDetails"
873
+ }
874
+ },
875
+ "application/json": {
876
+ "schema": {
877
+ "$ref": "#/components/schemas/ProblemDetails"
878
+ }
879
+ },
880
+ "text/json": {
881
+ "schema": {
882
+ "$ref": "#/components/schemas/ProblemDetails"
883
+ }
884
+ }
885
+ }
886
+ },
887
+ "401": {
888
+ "description": "Токен отсутствует или некорректен.",
889
+ "content": {
890
+ "text/plain": {
891
+ "schema": {
892
+ "$ref": "#/components/schemas/ProblemDetails"
893
+ }
894
+ },
895
+ "application/json": {
896
+ "schema": {
897
+ "$ref": "#/components/schemas/ProblemDetails"
898
+ }
899
+ },
900
+ "text/json": {
901
+ "schema": {
902
+ "$ref": "#/components/schemas/ProblemDetails"
903
+ }
904
+ }
905
+ }
906
+ },
907
+ "403": {
908
+ "description": "Недостаточно прав.",
909
+ "content": {
910
+ "text/plain": {
911
+ "schema": {
912
+ "$ref": "#/components/schemas/ProblemDetails"
913
+ }
914
+ },
915
+ "application/json": {
916
+ "schema": {
917
+ "$ref": "#/components/schemas/ProblemDetails"
918
+ }
919
+ },
920
+ "text/json": {
921
+ "schema": {
922
+ "$ref": "#/components/schemas/ProblemDetails"
923
+ }
924
+ }
925
+ }
926
+ }
927
+ },
928
+ "security": [
929
+ {
930
+ "Bearer": [ ]
931
+ }
932
+ ]
933
+ }
934
+ },
935
+ "/WorkSchedules/daily": {
936
+ "get": {
937
+ "tags": [
938
+ "WorkSchedules"
939
+ ],
940
+ "summary": "Возвращает график рабочего времени на заданный период, разбитый по суткам.",
941
+ "description": "## Пример запроса:\r\n```text\r\nGET /WorkSchedules/daily?validFrom=2024-06-01&validTill=2024-06-30&scheduleRuleID=10\r\nAuthorization: Bearer <access-token>\r\nRange: Offset=0; Fetch=50\r\n```\r\n \r\n## Пример успешного ответа (200):\r\n```json\r\n{\r\n \"10\": [\r\n {\r\n \"date\": \"2024-06-15T00:00:00Z\",\r\n \"isNightShift\": false,\r\n \"isPublicHoliday\": false,\r\n \"timeFrom\": \"2024-06-15T09:00:00Z\",\r\n \"timeTill\": \"2024-06-15T18:00:00Z\"\r\n }\r\n ]\r\n}\r\n```\r\n \r\n## Пример успешного ответа (206):\r\nТело ответа имеет тот же формат, что и для `200`, но содержит частичный диапазон.\r\n \r\n## Пример негативного ответа (400):\r\n```json\r\n{\r\n \"traceIdentifier\": \"0HN1234567890\",\r\n \"code\": \"ValidityPeriodNull\",\r\n \"message\": \"Validity period is required\"\r\n}\r\n```\r\n \r\n## Негативные сценарии:\r\n- 204 No Content — график не найден.\r\n- 400 Bad Request — некорректные query-параметры (обязательны validFrom и validTill).\r\n- 401 Unauthorized — отсутствует или некорректен Bearer-токен.\r\n- 403 Forbidden — недостаточно прав.",
942
+ "parameters": [
943
+ {
944
+ "name": "X-Application-ID",
945
+ "in": "header",
946
+ "description": "Идентификатор приложения. EngineerMobile - 1, CustomerMobile - 2, MainWeb - 3, AdminWeb - 4, Api - 5, PlateWeb - 6",
947
+ "schema": {
948
+ "enum": [
949
+ 1,
950
+ 2,
951
+ 3,
952
+ 4,
953
+ 5,
954
+ 6
955
+ ],
956
+ "type": "integer",
957
+ "format": "int32",
958
+ "default": 3,
959
+ "x-enumNames": [
960
+ "EngineerMobile",
961
+ "CustomerMobile",
962
+ "MainWeb",
963
+ "AdminWeb",
964
+ "Api",
965
+ "PlateWeb"
966
+ ]
967
+ }
968
+ }
969
+ ],
970
+ "responses": {
971
+ "200": {
972
+ "description": "График по суткам успешно получен.",
973
+ "content": {
974
+ "text/plain": {
975
+ "schema": {
976
+ "type": "object",
977
+ "additionalProperties": {
978
+ "type": "array",
979
+ "items": {
980
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
981
+ }
982
+ }
983
+ }
984
+ },
985
+ "application/json": {
986
+ "schema": {
987
+ "type": "object",
988
+ "additionalProperties": {
989
+ "type": "array",
990
+ "items": {
991
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
992
+ }
993
+ }
994
+ }
995
+ },
996
+ "text/json": {
997
+ "schema": {
998
+ "type": "object",
999
+ "additionalProperties": {
1000
+ "type": "array",
1001
+ "items": {
1002
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
1003
+ }
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ },
1009
+ "206": {
1010
+ "description": "Возвращена часть записей в пределах диапазона.",
1011
+ "content": {
1012
+ "text/plain": {
1013
+ "schema": {
1014
+ "type": "object",
1015
+ "additionalProperties": {
1016
+ "type": "array",
1017
+ "items": {
1018
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
1019
+ }
1020
+ }
1021
+ }
1022
+ },
1023
+ "application/json": {
1024
+ "schema": {
1025
+ "type": "object",
1026
+ "additionalProperties": {
1027
+ "type": "array",
1028
+ "items": {
1029
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
1030
+ }
1031
+ }
1032
+ }
1033
+ },
1034
+ "text/json": {
1035
+ "schema": {
1036
+ "type": "object",
1037
+ "additionalProperties": {
1038
+ "type": "array",
1039
+ "items": {
1040
+ "$ref": "#/components/schemas/WorkScheduleDailyByDayResult"
1041
+ }
1042
+ }
1043
+ }
1044
+ }
1045
+ }
1046
+ },
1047
+ "204": {
1048
+ "description": "Записи не найдены."
1049
+ },
1050
+ "400": {
1051
+ "description": "Некорректные параметры запроса.",
1052
+ "content": {
1053
+ "text/plain": {
1054
+ "schema": {
1055
+ "$ref": "#/components/schemas/ProblemDetails"
1056
+ }
1057
+ },
1058
+ "application/json": {
1059
+ "schema": {
1060
+ "$ref": "#/components/schemas/ProblemDetails"
1061
+ }
1062
+ },
1063
+ "text/json": {
1064
+ "schema": {
1065
+ "$ref": "#/components/schemas/ProblemDetails"
1066
+ }
1067
+ }
1068
+ }
1069
+ },
1070
+ "401": {
1071
+ "description": "Токен отсутствует или некорректен.",
1072
+ "content": {
1073
+ "text/plain": {
1074
+ "schema": {
1075
+ "$ref": "#/components/schemas/ProblemDetails"
1076
+ }
1077
+ },
1078
+ "application/json": {
1079
+ "schema": {
1080
+ "$ref": "#/components/schemas/ProblemDetails"
1081
+ }
1082
+ },
1083
+ "text/json": {
1084
+ "schema": {
1085
+ "$ref": "#/components/schemas/ProblemDetails"
1086
+ }
1087
+ }
1088
+ }
1089
+ },
1090
+ "403": {
1091
+ "description": "Недостаточно прав.",
1092
+ "content": {
1093
+ "text/plain": {
1094
+ "schema": {
1095
+ "$ref": "#/components/schemas/ProblemDetails"
1096
+ }
1097
+ },
1098
+ "application/json": {
1099
+ "schema": {
1100
+ "$ref": "#/components/schemas/ProblemDetails"
1101
+ }
1102
+ },
1103
+ "text/json": {
1104
+ "schema": {
1105
+ "$ref": "#/components/schemas/ProblemDetails"
1106
+ }
1107
+ }
1108
+ }
1109
+ }
1110
+ },
1111
+ "security": [
1112
+ {
1113
+ "Bearer": [ ]
1114
+ }
1115
+ ]
1116
+ }
1117
+ }
1118
+ },
1119
+ "components": {
1120
+ "schemas": {
1121
+ "ListResult": {
1122
+ "type": "object",
1123
+ "properties": {
1124
+ "name": {
1125
+ "type": "string",
1126
+ "description": "Название правила",
1127
+ "nullable": true,
1128
+ "example": "Стандартный график"
1129
+ },
1130
+ "description": {
1131
+ "type": "string",
1132
+ "description": "Описание правила",
1133
+ "nullable": true,
1134
+ "example": "График работы с 9:00 до 18:00"
1135
+ },
1136
+ "scheduleTypeID": {
1137
+ "type": "integer",
1138
+ "description": "Тип графика",
1139
+ "format": "int32",
1140
+ "nullable": true,
1141
+ "example": 1
1142
+ },
1143
+ "dataFrom": {
1144
+ "type": "string",
1145
+ "description": "Дата старта графика",
1146
+ "format": "date-time",
1147
+ "example": "2024-01-01T00:00:00Z"
1148
+ }
1149
+ },
1150
+ "additionalProperties": false,
1151
+ "description": "Правило графика рабочего времени для списка"
1152
+ },
1153
+ "ProblemDetails": {
1154
+ "type": "object",
1155
+ "properties": {
1156
+ "type": {
1157
+ "type": "string",
1158
+ "nullable": true
1159
+ },
1160
+ "title": {
1161
+ "type": "string",
1162
+ "nullable": true
1163
+ },
1164
+ "status": {
1165
+ "type": "integer",
1166
+ "format": "int32",
1167
+ "nullable": true
1168
+ },
1169
+ "detail": {
1170
+ "type": "string",
1171
+ "nullable": true
1172
+ },
1173
+ "instance": {
1174
+ "type": "string",
1175
+ "nullable": true
1176
+ }
1177
+ },
1178
+ "additionalProperties": { }
1179
+ },
1180
+ "ScheduleCreateDto": {
1181
+ "type": "object",
1182
+ "properties": {
1183
+ "from": {
1184
+ "type": "string",
1185
+ "description": "Дата начала периода",
1186
+ "format": "date-time",
1187
+ "example": "2024-01-01T00:00:00Z"
1188
+ },
1189
+ "till": {
1190
+ "type": "string",
1191
+ "description": "Дата окончания периода",
1192
+ "format": "date-time",
1193
+ "example": "2024-12-31T23:59:59Z"
1194
+ },
1195
+ "considerPublicHolidays": {
1196
+ "type": "boolean",
1197
+ "description": "Учитывать праздничные дни",
1198
+ "example": true
1199
+ },
1200
+ "shortageHoursBeforeHoliday": {
1201
+ "type": "integer",
1202
+ "description": "Сокращение часов перед праздником",
1203
+ "format": "int32",
1204
+ "example": 1
1205
+ },
1206
+ "rules": {
1207
+ "type": "array",
1208
+ "items": {
1209
+ "$ref": "#/components/schemas/ScheduleDtoRule"
1210
+ },
1211
+ "description": "Правила расписания",
1212
+ "nullable": true
1213
+ },
1214
+ "overridings": {
1215
+ "type": "array",
1216
+ "items": {
1217
+ "$ref": "#/components/schemas/ScheduleDto"
1218
+ },
1219
+ "description": "Переопределения расписания",
1220
+ "nullable": true
1221
+ },
1222
+ "name": {
1223
+ "type": "string",
1224
+ "description": "Название",
1225
+ "nullable": true,
1226
+ "example": "Стандартный график"
1227
+ },
1228
+ "description": {
1229
+ "type": "string",
1230
+ "description": "Описание",
1231
+ "nullable": true,
1232
+ "example": "График работы с 9:00 до 18:00"
1233
+ },
1234
+ "isDefault": {
1235
+ "type": "boolean",
1236
+ "description": "Признак графика по умолчанию",
1237
+ "example": false
1238
+ },
1239
+ "scheduleTypeID": {
1240
+ "type": "integer",
1241
+ "description": "Тип графика",
1242
+ "format": "int32",
1243
+ "nullable": true,
1244
+ "example": 1
1245
+ }
1246
+ },
1247
+ "additionalProperties": false,
1248
+ "description": "Данные для создания графика рабочего времени"
1249
+ },
1250
+ "ScheduleDto": {
1251
+ "type": "object",
1252
+ "properties": {
1253
+ "rules": {
1254
+ "type": "array",
1255
+ "items": {
1256
+ "$ref": "#/components/schemas/ScheduleDtoRule"
1257
+ },
1258
+ "nullable": true
1259
+ },
1260
+ "isWorking": {
1261
+ "type": "boolean"
1262
+ },
1263
+ "isPublicHoliday": {
1264
+ "type": "boolean"
1265
+ }
1266
+ },
1267
+ "additionalProperties": false
1268
+ },
1269
+ "ScheduleDtoRule": {
1270
+ "type": "object",
1271
+ "properties": {
1272
+ "cron": {
1273
+ "type": "string",
1274
+ "nullable": true
1275
+ },
1276
+ "occurrenceDuration": {
1277
+ "type": "string",
1278
+ "format": "date-span"
1279
+ },
1280
+ "periodicity": {
1281
+ "$ref": "#/components/schemas/ScheduleDtoRulePeriodicityData"
1282
+ }
1283
+ },
1284
+ "additionalProperties": false
1285
+ },
1286
+ "ScheduleDtoRulePeriodicityData": {
1287
+ "type": "object",
1288
+ "properties": {
1289
+ "repeatCnt": {
1290
+ "type": "integer",
1291
+ "format": "int32"
1292
+ },
1293
+ "skip": {
1294
+ "type": "string",
1295
+ "format": "date-span"
1296
+ }
1297
+ },
1298
+ "additionalProperties": false
1299
+ },
1300
+ "ScheduleExtendDto": {
1301
+ "type": "object",
1302
+ "properties": {
1303
+ "from": {
1304
+ "type": "string",
1305
+ "description": "Дата начала периода",
1306
+ "format": "date-time",
1307
+ "example": "2024-01-01T00:00:00Z"
1308
+ },
1309
+ "till": {
1310
+ "type": "string",
1311
+ "description": "Дата окончания периода",
1312
+ "format": "date-time",
1313
+ "example": "2024-12-31T23:59:59Z"
1314
+ },
1315
+ "considerPublicHolidays": {
1316
+ "type": "boolean",
1317
+ "description": "Учитывать праздничные дни",
1318
+ "example": true
1319
+ },
1320
+ "shortageHoursBeforeHoliday": {
1321
+ "type": "integer",
1322
+ "description": "Сокращение часов перед праздником",
1323
+ "format": "int32",
1324
+ "example": 1
1325
+ },
1326
+ "rules": {
1327
+ "type": "array",
1328
+ "items": {
1329
+ "$ref": "#/components/schemas/ScheduleDtoRule"
1330
+ },
1331
+ "description": "Правила расписания",
1332
+ "nullable": true
1333
+ },
1334
+ "overridings": {
1335
+ "type": "array",
1336
+ "items": {
1337
+ "$ref": "#/components/schemas/ScheduleDto"
1338
+ },
1339
+ "description": "Переопределения расписания",
1340
+ "nullable": true
1341
+ }
1342
+ },
1343
+ "additionalProperties": false,
1344
+ "description": "Данные для расширения или предпросмотра графика рабочего времени"
1345
+ },
1346
+ "SchedulePersistDto": {
1347
+ "type": "object",
1348
+ "properties": {
1349
+ "rules": {
1350
+ "type": "array",
1351
+ "items": {
1352
+ "$ref": "#/components/schemas/ScheduleDtoRule"
1353
+ },
1354
+ "description": "Правила расписания",
1355
+ "nullable": true
1356
+ },
1357
+ "overridings": {
1358
+ "type": "array",
1359
+ "items": {
1360
+ "$ref": "#/components/schemas/ScheduleDto"
1361
+ },
1362
+ "description": "Переопределения расписания",
1363
+ "nullable": true
1364
+ }
1365
+ },
1366
+ "additionalProperties": false,
1367
+ "description": "Сохранённая модель правил графика"
1368
+ },
1369
+ "ScheduleRuleDto": {
1370
+ "type": "object",
1371
+ "properties": {
1372
+ "name": {
1373
+ "type": "string",
1374
+ "description": "Название",
1375
+ "nullable": true,
1376
+ "example": "Стандартный график"
1377
+ },
1378
+ "description": {
1379
+ "type": "string",
1380
+ "description": "Описание",
1381
+ "nullable": true,
1382
+ "example": "График работы с 9:00 до 18:00"
1383
+ },
1384
+ "scheduleTypeID": {
1385
+ "type": "integer",
1386
+ "description": "Тип графика",
1387
+ "format": "int32",
1388
+ "nullable": true,
1389
+ "example": 1
1390
+ },
1391
+ "periods": {
1392
+ "type": "array",
1393
+ "items": {
1394
+ "$ref": "#/components/schemas/ScheduleRuleDtoPeriod"
1395
+ },
1396
+ "description": "Периоды действия правил",
1397
+ "nullable": true
1398
+ }
1399
+ },
1400
+ "additionalProperties": false,
1401
+ "description": "График рабочего времени (ГРВ)"
1402
+ },
1403
+ "ScheduleRuleDtoPeriod": {
1404
+ "type": "object",
1405
+ "properties": {
1406
+ "from": {
1407
+ "type": "string",
1408
+ "description": "Дата начала периода",
1409
+ "format": "date-time",
1410
+ "example": "2024-01-01T00:00:00Z"
1411
+ },
1412
+ "till": {
1413
+ "type": "string",
1414
+ "description": "Дата окончания периода",
1415
+ "format": "date-time",
1416
+ "example": "2024-12-31T23:59:59Z"
1417
+ },
1418
+ "holidayCalendarID": {
1419
+ "type": "integer",
1420
+ "description": "Идентификатор календаря праздников",
1421
+ "format": "int32",
1422
+ "example": 1
1423
+ },
1424
+ "shortageHoursBeforeHoliday": {
1425
+ "type": "integer",
1426
+ "description": "Сокращение часов перед праздником",
1427
+ "format": "int32",
1428
+ "example": 1
1429
+ },
1430
+ "model": {
1431
+ "$ref": "#/components/schemas/SchedulePersistDto"
1432
+ }
1433
+ },
1434
+ "additionalProperties": false,
1435
+ "description": "Период действия правила графика"
1436
+ },
1437
+ "ScheduleUpdateDto": {
1438
+ "type": "object",
1439
+ "properties": {
1440
+ "from": {
1441
+ "type": "string",
1442
+ "description": "Дата начала периода",
1443
+ "format": "date-time",
1444
+ "example": "2024-01-01T00:00:00Z"
1445
+ },
1446
+ "till": {
1447
+ "type": "string",
1448
+ "description": "Дата окончания периода",
1449
+ "format": "date-time",
1450
+ "example": "2024-12-31T23:59:59Z"
1451
+ },
1452
+ "considerPublicHolidays": {
1453
+ "type": "boolean",
1454
+ "description": "Учитывать праздничные дни",
1455
+ "example": true
1456
+ },
1457
+ "shortageHoursBeforeHoliday": {
1458
+ "type": "integer",
1459
+ "description": "Сокращение часов перед праздником",
1460
+ "format": "int32",
1461
+ "example": 1
1462
+ },
1463
+ "rules": {
1464
+ "type": "array",
1465
+ "items": {
1466
+ "$ref": "#/components/schemas/ScheduleDtoRule"
1467
+ },
1468
+ "description": "Правила расписания",
1469
+ "nullable": true
1470
+ },
1471
+ "overridings": {
1472
+ "type": "array",
1473
+ "items": {
1474
+ "$ref": "#/components/schemas/ScheduleDto"
1475
+ },
1476
+ "description": "Переопределения расписания",
1477
+ "nullable": true
1478
+ },
1479
+ "name": {
1480
+ "type": "string",
1481
+ "description": "Название",
1482
+ "nullable": true,
1483
+ "example": "Стандартный график"
1484
+ },
1485
+ "description": {
1486
+ "type": "string",
1487
+ "description": "Описание",
1488
+ "nullable": true,
1489
+ "example": "График работы с 9:00 до 18:00"
1490
+ },
1491
+ "scheduleTypeID": {
1492
+ "type": "integer",
1493
+ "description": "Тип графика",
1494
+ "format": "int32",
1495
+ "nullable": true,
1496
+ "example": 1
1497
+ }
1498
+ },
1499
+ "additionalProperties": false,
1500
+ "description": "Данные для обновления графика рабочего времени"
1501
+ },
1502
+ "WorkScheduleDailyByDayResult": {
1503
+ "type": "object",
1504
+ "properties": {
1505
+ "date": {
1506
+ "type": "string",
1507
+ "description": "Дата",
1508
+ "format": "date-time",
1509
+ "example": "2024-06-15T00:00:00Z"
1510
+ },
1511
+ "isNightShift": {
1512
+ "type": "boolean",
1513
+ "description": "Признак ночной смены",
1514
+ "example": false
1515
+ },
1516
+ "isPublicHoliday": {
1517
+ "type": "boolean",
1518
+ "description": "Признак праздничного дня",
1519
+ "nullable": true,
1520
+ "example": false
1521
+ },
1522
+ "timeFrom": {
1523
+ "type": "string",
1524
+ "description": "Начало работы",
1525
+ "format": "date-time",
1526
+ "nullable": true,
1527
+ "example": "2024-06-15T09:00:00Z"
1528
+ },
1529
+ "timeTill": {
1530
+ "type": "string",
1531
+ "description": "Окончание работы",
1532
+ "format": "date-time",
1533
+ "nullable": true,
1534
+ "example": "2024-06-15T18:00:00Z"
1535
+ }
1536
+ },
1537
+ "additionalProperties": false,
1538
+ "description": "Запись графика по суткам"
1539
+ },
1540
+ "WorkScheduleDailyItemResult": {
1541
+ "type": "object",
1542
+ "properties": {
1543
+ "scheduleRuleID": {
1544
+ "type": "integer",
1545
+ "description": "Идентификатор правила графика рабочего времени",
1546
+ "format": "int32",
1547
+ "example": 10
1548
+ },
1549
+ "timeFrom": {
1550
+ "type": "string",
1551
+ "description": "Начало работы",
1552
+ "format": "date-time",
1553
+ "nullable": true,
1554
+ "example": "2024-06-15T09:00:00Z"
1555
+ },
1556
+ "timeTill": {
1557
+ "type": "string",
1558
+ "description": "Окончание работы",
1559
+ "format": "date-time",
1560
+ "nullable": true,
1561
+ "example": "2024-06-15T18:00:00Z"
1562
+ },
1563
+ "isPublicHoliday": {
1564
+ "type": "boolean",
1565
+ "description": "Признак праздничного дня",
1566
+ "nullable": true,
1567
+ "example": false
1568
+ },
1569
+ "isNightShift": {
1570
+ "type": "boolean",
1571
+ "description": "Признак ночной смены",
1572
+ "example": false
1573
+ },
1574
+ "dateWork": {
1575
+ "type": "string",
1576
+ "description": "Дата работы",
1577
+ "format": "date-time",
1578
+ "example": "2024-06-15T00:00:00Z"
1579
+ }
1580
+ },
1581
+ "additionalProperties": false,
1582
+ "description": "Режим работы"
1583
+ }
1584
+ },
1585
+ "securitySchemes": {
1586
+ "Bearer": {
1587
+ "type": "http",
1588
+ "description": "Введите токен для авторизации",
1589
+ "scheme": "Bearer",
1590
+ "bearerFormat": "JWT"
1591
+ }
1592
+ }
1593
+ },
1594
+ "tags": [
1595
+ {
1596
+ "name": "ScheduleRules",
1597
+ "description": "Контроллер управления графиками рабочего времени"
1598
+ },
1599
+ {
1600
+ "name": "WorkSchedules",
1601
+ "description": "Контроллер управления сгенерированным графиком рабочего времени"
1602
+ },
1603
+ {
1604
+ "name": "ScheduleRules",
1605
+ "description": "Контроллер управления графиками рабочего времени"
1606
+ },
1607
+ {
1608
+ "name": "WorkSchedules",
1609
+ "description": "Контроллер управления сгенерированным графиком рабочего времени"
1610
+ }
1611
+ ]
1612
+ }