zou 0.20.82__py3-none-any.whl → 0.20.83__py3-none-any.whl

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.
@@ -32,6 +32,7 @@ class AssetTasksResource(Resource):
32
32
  schema:
33
33
  type: string
34
34
  format: uuid
35
+ description: Asset unique identifier
35
36
  example: a24a6ea4-ce75-4665-a070-57453082c25
36
37
  responses:
37
38
  200:
@@ -42,8 +43,48 @@ class AssetTasksResource(Resource):
42
43
  type: array
43
44
  items:
44
45
  type: object
45
- 404:
46
- description: Asset not found
46
+ properties:
47
+ id:
48
+ type: string
49
+ format: uuid
50
+ description: Task unique identifier
51
+ example: b35b7fb5-df86-5776-b181-68564193d36
52
+ name:
53
+ type: string
54
+ description: Task name
55
+ example: "Modeling"
56
+ task_type_id:
57
+ type: string
58
+ format: uuid
59
+ description: Task type identifier
60
+ example: c46c8gc6-eg97-6887-c292-79675204e47
61
+ task_status_id:
62
+ type: string
63
+ format: uuid
64
+ description: Task status identifier
65
+ example: d57d9hd7-fh08-7998-d403-80786315f58
66
+ assigner_id:
67
+ type: string
68
+ format: uuid
69
+ description: Person who assigned the task
70
+ example: e68e0ie8-gi19-8009-e514-91897426g69
71
+ assignees:
72
+ type: array
73
+ items:
74
+ type: string
75
+ format: uuid
76
+ description: List of assigned person identifiers
77
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
78
+ created_at:
79
+ type: string
80
+ format: date-time
81
+ description: Creation timestamp
82
+ example: "2023-01-01T12:00:00Z"
83
+ updated_at:
84
+ type: string
85
+ format: date-time
86
+ description: Last update timestamp
87
+ example: "2023-01-01T12:30:00Z"
47
88
  """
48
89
  assets_service.get_asset(asset_id)
49
90
  return user_service.get_tasks_for_entity(asset_id)
@@ -55,9 +96,10 @@ class AssetTaskTypesResource(Resource):
55
96
  """
56
97
  Get asset task types
57
98
  ---
99
+ description: Retrieve task types related to a specific asset for the
100
+ current user. Returns all task types available for the given asset.
58
101
  tags:
59
102
  - User
60
- description: Return task types related to given asset for current user.
61
103
  parameters:
62
104
  - in: path
63
105
  name: asset_id
@@ -65,6 +107,7 @@ class AssetTaskTypesResource(Resource):
65
107
  schema:
66
108
  type: string
67
109
  format: uuid
110
+ description: Asset unique identifier
68
111
  example: a24a6ea4-ce75-4665-a070-57453082c25
69
112
  responses:
70
113
  200:
@@ -75,8 +118,42 @@ class AssetTaskTypesResource(Resource):
75
118
  type: array
76
119
  items:
77
120
  type: object
78
- 404:
79
- description: Asset not found
121
+ properties:
122
+ id:
123
+ type: string
124
+ format: uuid
125
+ description: Task type unique identifier
126
+ example: b35b7fb5-df86-5776-b181-68564193d36
127
+ name:
128
+ type: string
129
+ description: Task type name
130
+ example: "Modeling"
131
+ short_name:
132
+ type: string
133
+ description: Task type short name
134
+ example: "MOD"
135
+ color:
136
+ type: string
137
+ description: Task type color
138
+ example: "#FF0000"
139
+ priority:
140
+ type: integer
141
+ description: Task type priority
142
+ example: 1
143
+ for_entity:
144
+ type: string
145
+ description: Entity type this task type applies to
146
+ example: "Asset"
147
+ created_at:
148
+ type: string
149
+ format: date-time
150
+ description: Creation timestamp
151
+ example: "2023-01-01T12:00:00Z"
152
+ updated_at:
153
+ type: string
154
+ format: date-time
155
+ description: Last update timestamp
156
+ example: "2023-01-01T12:30:00Z"
80
157
  """
81
158
  assets_service.get_asset(asset_id)
82
159
  return user_service.get_task_types_for_entity(asset_id)
@@ -86,11 +163,12 @@ class ShotTaskTypesResource(Resource):
86
163
 
87
164
  def get(self, shot_id):
88
165
  """
89
- Get shot tasks
166
+ Get shot task types
90
167
  ---
168
+ description: Retrieve task types related to a specific shot for the
169
+ current user. Returns all task types available for the given shot.
91
170
  tags:
92
171
  - User
93
- description: Return tasks related to given shot for current user.
94
172
  parameters:
95
173
  - in: path
96
174
  name: shot_id
@@ -98,18 +176,53 @@ class ShotTaskTypesResource(Resource):
98
176
  schema:
99
177
  type: string
100
178
  format: uuid
179
+ description: Shot unique identifier
101
180
  example: a24a6ea4-ce75-4665-a070-57453082c25
102
181
  responses:
103
182
  200:
104
- description: Tasks related to given shot for current user
183
+ description: Task types related to given shot for current user
105
184
  content:
106
185
  application/json:
107
186
  schema:
108
187
  type: array
109
188
  items:
110
189
  type: object
111
- 404:
112
- description: Shot not found
190
+ properties:
191
+ id:
192
+ type: string
193
+ format: uuid
194
+ description: Task type unique identifier
195
+ example: b35b7fb5-df86-5776-b181-68564193d36
196
+ name:
197
+ type: string
198
+ description: Task type name
199
+ example: "Animation"
200
+ short_name:
201
+ type: string
202
+ description: Task type short name
203
+ example: "ANIM"
204
+ color:
205
+ type: string
206
+ description: Task type color
207
+ example: "#00FF00"
208
+ priority:
209
+ type: integer
210
+ description: Task type priority
211
+ example: 2
212
+ for_entity:
213
+ type: string
214
+ description: Entity type this task type applies to
215
+ example: "Shot"
216
+ created_at:
217
+ type: string
218
+ format: date-time
219
+ description: Creation timestamp
220
+ example: "2023-01-01T12:00:00Z"
221
+ updated_at:
222
+ type: string
223
+ format: date-time
224
+ description: Last update timestamp
225
+ example: "2023-01-01T12:30:00Z"
113
226
  """
114
227
  shots_service.get_shot(shot_id)
115
228
  return user_service.get_task_types_for_entity(shot_id)
@@ -122,11 +235,12 @@ class SceneTaskTypesResource(Resource):
122
235
 
123
236
  def get(self, scene_id):
124
237
  """
125
- Get scene tasks
238
+ Get scene task types
126
239
  ---
240
+ description: Retrieve task types related to a specific scene for the
241
+ current user.
127
242
  tags:
128
243
  - User
129
- description: Return tasks related to given scene for current user.
130
244
  parameters:
131
245
  - in: path
132
246
  name: scene_id
@@ -134,18 +248,53 @@ class SceneTaskTypesResource(Resource):
134
248
  schema:
135
249
  type: string
136
250
  format: uuid
251
+ description: Scene unique identifier
137
252
  example: a24a6ea4-ce75-4665-a070-57453082c25
138
253
  responses:
139
254
  200:
140
- description: Tasks related to given scene for current user
255
+ description: Task types related to given scene for current user
141
256
  content:
142
257
  application/json:
143
258
  schema:
144
259
  type: array
145
260
  items:
146
261
  type: object
147
- 404:
148
- description: Scene not found
262
+ properties:
263
+ id:
264
+ type: string
265
+ format: uuid
266
+ description: Task type unique identifier
267
+ example: b35b7fb5-df86-5776-b181-68564193d36
268
+ name:
269
+ type: string
270
+ description: Task type name
271
+ example: "Layout"
272
+ short_name:
273
+ type: string
274
+ description: Task type short name
275
+ example: "LAY"
276
+ color:
277
+ type: string
278
+ description: Task type color
279
+ example: "#0000FF"
280
+ priority:
281
+ type: integer
282
+ description: Task type priority
283
+ example: 3
284
+ for_entity:
285
+ type: string
286
+ description: Entity type this task type applies to
287
+ example: "Scene"
288
+ created_at:
289
+ type: string
290
+ format: date-time
291
+ description: Creation timestamp
292
+ example: "2023-01-01T12:00:00Z"
293
+ updated_at:
294
+ type: string
295
+ format: date-time
296
+ description: Last update timestamp
297
+ example: "2023-01-01T12:30:00Z"
149
298
  """
150
299
  shots_service.get_scene(scene_id)
151
300
  return user_service.get_task_types_for_entity(scene_id)
@@ -157,9 +306,10 @@ class SequenceTaskTypesResource(Resource):
157
306
  """
158
307
  Get sequence task types
159
308
  ---
309
+ description: Retrieve task types related to a specific sequence for the
310
+ current user.
160
311
  tags:
161
312
  - User
162
- description: Return task types related to given sequence for current user
163
313
  parameters:
164
314
  - in: path
165
315
  name: sequence_id
@@ -167,18 +317,53 @@ class SequenceTaskTypesResource(Resource):
167
317
  schema:
168
318
  type: string
169
319
  format: uuid
320
+ description: Sequence unique identifier
170
321
  example: a24a6ea4-ce75-4665-a070-57453082c25
171
322
  responses:
172
323
  200:
173
- description: Tasks related to given sequence for current user
324
+ description: Task types related to given sequence for current user
174
325
  content:
175
326
  application/json:
176
327
  schema:
177
328
  type: array
178
329
  items:
179
330
  type: object
180
- 404:
181
- description: Sequence not found
331
+ properties:
332
+ id:
333
+ type: string
334
+ format: uuid
335
+ description: Task type unique identifier
336
+ example: b35b7fb5-df86-5776-b181-68564193d36
337
+ name:
338
+ type: string
339
+ description: Task type name
340
+ example: "Compositing"
341
+ short_name:
342
+ type: string
343
+ description: Task type short name
344
+ example: "COMP"
345
+ color:
346
+ type: string
347
+ description: Task type color
348
+ example: "#FFFF00"
349
+ priority:
350
+ type: integer
351
+ description: Task type priority
352
+ example: 4
353
+ for_entity:
354
+ type: string
355
+ description: Entity type this task type applies to
356
+ example: "Sequence"
357
+ created_at:
358
+ type: string
359
+ format: date-time
360
+ description: Creation timestamp
361
+ example: "2023-01-01T12:00:00Z"
362
+ updated_at:
363
+ type: string
364
+ format: date-time
365
+ description: Last update timestamp
366
+ example: "2023-01-01T12:30:00Z"
182
367
  """
183
368
  shots_service.get_sequence(sequence_id)
184
369
  return user_service.get_task_types_for_entity(sequence_id)
@@ -190,9 +375,10 @@ class AssetTypeAssetsResource(Resource):
190
375
  """
191
376
  Get project assets
192
377
  ---
378
+ description: Retrieve assets of a specific type within a project
379
+ matching the asset type in the given project if the user has access.
193
380
  tags:
194
381
  - User
195
- description: Return assets of which type is given asset type and are listed in given project if user has access to this project.
196
382
  parameters:
197
383
  - in: path
198
384
  name: project_id
@@ -200,6 +386,7 @@ class AssetTypeAssetsResource(Resource):
200
386
  schema:
201
387
  type: string
202
388
  format: uuid
389
+ description: Project unique identifier
203
390
  example: a24a6ea4-ce75-4665-a070-57453082c25
204
391
  - in: path
205
392
  name: asset_type_id
@@ -207,18 +394,51 @@ class AssetTypeAssetsResource(Resource):
207
394
  schema:
208
395
  type: string
209
396
  format: uuid
210
- example: a24a6ea4-ce75-4665-a070-57453082c25
397
+ description: Asset type unique identifier
398
+ example: b35b7fb5-df86-5776-b181-68564193d36
211
399
  responses:
212
400
  200:
213
- description: Assets of which type is given asset type and are listed in given project
401
+ description: Assets of given type in the specified project
214
402
  content:
215
403
  application/json:
216
404
  schema:
217
405
  type: array
218
406
  items:
219
407
  type: object
220
- 404:
221
- description: Project or asset type not found
408
+ properties:
409
+ id:
410
+ type: string
411
+ format: uuid
412
+ description: Asset unique identifier
413
+ example: c46c8gc6-eg97-6887-c292-79675204e47
414
+ name:
415
+ type: string
416
+ description: Asset name
417
+ example: "Main Character"
418
+ description:
419
+ type: string
420
+ description: Asset description
421
+ example: "Main character model for the project"
422
+ asset_type_id:
423
+ type: string
424
+ format: uuid
425
+ description: Asset type identifier
426
+ example: d57d9hd7-fh08-7998-d403-80786315f58
427
+ project_id:
428
+ type: string
429
+ format: uuid
430
+ description: Project identifier
431
+ example: e68e0ie8-gi19-8009-e514-91897426g69
432
+ created_at:
433
+ type: string
434
+ format: date-time
435
+ description: Creation timestamp
436
+ example: "2023-01-01T12:00:00Z"
437
+ updated_at:
438
+ type: string
439
+ format: date-time
440
+ description: Last update timestamp
441
+ example: "2023-01-01T12:30:00Z"
222
442
  """
223
443
  projects_service.get_project(project_id)
224
444
  assets_service.get_asset_type(asset_type_id)
@@ -233,9 +453,10 @@ class OpenProjectsResource(Resource, ArgsMixin):
233
453
  """
234
454
  Get open projects
235
455
  ---
456
+ description: Retrieve open projects for which the current user has at
457
+ least one task assigned. Optionally filter by project name.
236
458
  tags:
237
459
  - User
238
- description: Return open projects for which the user has at least one task assigned
239
460
  parameters:
240
461
  - in: query
241
462
  name: name
@@ -243,15 +464,56 @@ class OpenProjectsResource(Resource, ArgsMixin):
243
464
  schema:
244
465
  type: string
245
466
  description: Filter projects by name
467
+ example: "My Project"
246
468
  responses:
247
469
  200:
248
- description: Open projects for which the user has at least one task assigned
470
+ description: Open projects with assigned tasks for current user
249
471
  content:
250
472
  application/json:
251
473
  schema:
252
474
  type: array
253
475
  items:
254
476
  type: object
477
+ properties:
478
+ id:
479
+ type: string
480
+ format: uuid
481
+ description: Project unique identifier
482
+ example: a24a6ea4-ce75-4665-a070-57453082c25
483
+ name:
484
+ type: string
485
+ description: Project name
486
+ example: "My Project"
487
+ description:
488
+ type: string
489
+ description: Project description
490
+ example: "A sample project"
491
+ status:
492
+ type: string
493
+ description: Project status
494
+ example: "Active"
495
+ fps:
496
+ type: number
497
+ description: Frames per second
498
+ example: 24.0
499
+ ratio:
500
+ type: string
501
+ description: Aspect ratio
502
+ example: "16:9"
503
+ resolution:
504
+ type: string
505
+ description: Project resolution
506
+ example: "1920x1080"
507
+ created_at:
508
+ type: string
509
+ format: date-time
510
+ description: Creation timestamp
511
+ example: "2023-01-01T12:00:00Z"
512
+ updated_at:
513
+ type: string
514
+ format: date-time
515
+ description: Last update timestamp
516
+ example: "2023-01-01T12:30:00Z"
255
517
  """
256
518
  name = self.get_text_parameter("name")
257
519
  return user_service.get_open_projects(name=name)
@@ -263,9 +525,11 @@ class ProjectSequencesResource(Resource):
263
525
  """
264
526
  Get project sequences
265
527
  ---
528
+ description: Retrieve sequences related to a specific project for the
529
+ current user. Returns all sequences in the project if the user has
530
+ access.
266
531
  tags:
267
532
  - User
268
- description: Return sequences related to given project if the current user has access to it
269
533
  parameters:
270
534
  - in: path
271
535
  name: project_id
@@ -273,6 +537,7 @@ class ProjectSequencesResource(Resource):
273
537
  schema:
274
538
  type: string
275
539
  format: uuid
540
+ description: Project unique identifier
276
541
  example: a24a6ea4-ce75-4665-a070-57453082c25
277
542
  responses:
278
543
  200:
@@ -283,8 +548,39 @@ class ProjectSequencesResource(Resource):
283
548
  type: array
284
549
  items:
285
550
  type: object
286
- 404:
287
- description: Project not found
551
+ properties:
552
+ id:
553
+ type: string
554
+ format: uuid
555
+ description: Sequence unique identifier
556
+ example: b35b7fb5-df86-5776-b181-68564193d36
557
+ name:
558
+ type: string
559
+ description: Sequence name
560
+ example: "SEQ001"
561
+ description:
562
+ type: string
563
+ description: Sequence description
564
+ example: "Main sequence"
565
+ project_id:
566
+ type: string
567
+ format: uuid
568
+ description: Project identifier
569
+ example: c46c8gc6-eg97-6887-c292-79675204e47
570
+ fps:
571
+ type: number
572
+ description: Frames per second
573
+ example: 24.0
574
+ created_at:
575
+ type: string
576
+ format: date-time
577
+ description: Creation timestamp
578
+ example: "2023-01-01T12:00:00Z"
579
+ updated_at:
580
+ type: string
581
+ format: date-time
582
+ description: Last update timestamp
583
+ example: "2023-01-01T12:30:00Z"
288
584
  """
289
585
  projects_service.get_project(project_id)
290
586
  return user_service.get_sequences_for_project(project_id)
@@ -296,9 +592,11 @@ class ProjectEpisodesResource(Resource):
296
592
  """
297
593
  Get project episodes
298
594
  ---
595
+ description: Retrieve episodes related to a specific project for the
596
+ current user. Returns all episodes in the project if the user has
597
+ access.
299
598
  tags:
300
599
  - User
301
- description: Return episodes related to given project if the current user has access to it.
302
600
  parameters:
303
601
  - in: path
304
602
  name: project_id
@@ -306,6 +604,7 @@ class ProjectEpisodesResource(Resource):
306
604
  schema:
307
605
  type: string
308
606
  format: uuid
607
+ description: Project unique identifier
309
608
  example: a24a6ea4-ce75-4665-a070-57453082c25
310
609
  responses:
311
610
  200:
@@ -316,8 +615,35 @@ class ProjectEpisodesResource(Resource):
316
615
  type: array
317
616
  items:
318
617
  type: object
319
- 404:
320
- description: Project not found
618
+ properties:
619
+ id:
620
+ type: string
621
+ format: uuid
622
+ description: Episode unique identifier
623
+ example: b35b7fb5-df86-5776-b181-68564193d36
624
+ name:
625
+ type: string
626
+ description: Episode name
627
+ example: "Episode 01"
628
+ description:
629
+ type: string
630
+ description: Episode description
631
+ example: "First episode"
632
+ project_id:
633
+ type: string
634
+ format: uuid
635
+ description: Project identifier
636
+ example: c46c8gc6-eg97-6887-c292-79675204e47
637
+ created_at:
638
+ type: string
639
+ format: date-time
640
+ description: Creation timestamp
641
+ example: "2023-01-01T12:00:00Z"
642
+ updated_at:
643
+ type: string
644
+ format: date-time
645
+ description: Last update timestamp
646
+ example: "2023-01-01T12:30:00Z"
321
647
  """
322
648
  projects_service.get_project(project_id)
323
649
  return user_service.get_project_episodes(project_id)
@@ -329,10 +655,10 @@ class ProjectAssetTypesResource(Resource):
329
655
  """
330
656
  Get project asset types
331
657
  ---
658
+ description: Retrieve asset types related to a specific project for the
659
+ current user.
332
660
  tags:
333
661
  - User
334
- description: Return asset types related to given project if the current
335
- user has access to it.
336
662
  parameters:
337
663
  - in: path
338
664
  name: project_id
@@ -340,6 +666,7 @@ class ProjectAssetTypesResource(Resource):
340
666
  schema:
341
667
  type: string
342
668
  format: uuid
669
+ description: Project unique identifier
343
670
  example: a24a6ea4-ce75-4665-a070-57453082c25
344
671
  responses:
345
672
  200:
@@ -350,8 +677,39 @@ class ProjectAssetTypesResource(Resource):
350
677
  type: array
351
678
  items:
352
679
  type: object
353
- 404:
354
- description: Project not found
680
+ properties:
681
+ id:
682
+ type: string
683
+ format: uuid
684
+ description: Asset type unique identifier
685
+ example: b35b7fb5-df86-5776-b181-68564193d36
686
+ name:
687
+ type: string
688
+ description: Asset type name
689
+ example: "Character"
690
+ short_name:
691
+ type: string
692
+ description: Asset type short name
693
+ example: "CHAR"
694
+ color:
695
+ type: string
696
+ description: Asset type color
697
+ example: "#FF0000"
698
+ project_id:
699
+ type: string
700
+ format: uuid
701
+ description: Project identifier
702
+ example: c46c8gc6-eg97-6887-c292-79675204e47
703
+ created_at:
704
+ type: string
705
+ format: date-time
706
+ description: Creation timestamp
707
+ example: "2023-01-01T12:00:00Z"
708
+ updated_at:
709
+ type: string
710
+ format: date-time
711
+ description: Last update timestamp
712
+ example: "2023-01-01T12:30:00Z"
355
713
  """
356
714
  projects_service.get_project(project_id)
357
715
  return user_service.get_asset_types_for_project(project_id)
@@ -363,9 +721,10 @@ class SequenceShotsResource(Resource):
363
721
  """
364
722
  Get sequence shots
365
723
  ---
724
+ description: Retrieve shots related to a specific sequence for the
725
+ current user.
366
726
  tags:
367
727
  - User
368
- description: Return shots related to given sequence if the current user has access to it.
369
728
  parameters:
370
729
  - in: path
371
730
  name: sequence_id
@@ -373,6 +732,7 @@ class SequenceShotsResource(Resource):
373
732
  schema:
374
733
  type: string
375
734
  format: uuid
735
+ description: Sequence unique identifier
376
736
  example: a24a6ea4-ce75-4665-a070-57453082c25
377
737
  responses:
378
738
  200:
@@ -383,8 +743,40 @@ class SequenceShotsResource(Resource):
383
743
  type: array
384
744
  items:
385
745
  type: object
386
- 404:
387
- description: Sequence not found
746
+ properties:
747
+ id:
748
+ type: string
749
+ format: uuid
750
+ description: Shot unique identifier
751
+ example: b35b7fb5-df86-5776-b181-68564193d36
752
+ name:
753
+ type: string
754
+ description: Shot name
755
+ example: "SH001"
756
+ description:
757
+ type: string
758
+ description: Shot description
759
+ example: "Main shot"
760
+ sequence_id:
761
+ type: string
762
+ format: uuid
763
+ description: Sequence identifier
764
+ example: c46c8gc6-eg97-6887-c292-79675204e47
765
+ project_id:
766
+ type: string
767
+ format: uuid
768
+ description: Project identifier
769
+ example: d57d9hd7-fh08-7998-d403-80786315f58
770
+ created_at:
771
+ type: string
772
+ format: date-time
773
+ description: Creation timestamp
774
+ example: "2023-01-01T12:00:00Z"
775
+ updated_at:
776
+ type: string
777
+ format: date-time
778
+ description: Last update timestamp
779
+ example: "2023-01-01T12:30:00Z"
388
780
  """
389
781
  shots_service.get_sequence(sequence_id)
390
782
  return user_service.get_shots_for_sequence(sequence_id)
@@ -396,9 +788,10 @@ class SequenceScenesResource(Resource):
396
788
  """
397
789
  Get sequence scenes
398
790
  ---
791
+ description: Retrieve scenes related to a specific sequence for the
792
+ current user.
399
793
  tags:
400
794
  - User
401
- description: Return scenes related to given sequence if the current user has access to it.
402
795
  parameters:
403
796
  - in: path
404
797
  name: sequence_id
@@ -406,6 +799,7 @@ class SequenceScenesResource(Resource):
406
799
  schema:
407
800
  type: string
408
801
  format: uuid
802
+ description: Sequence unique identifier
409
803
  example: a24a6ea4-ce75-4665-a070-57453082c25
410
804
  responses:
411
805
  200:
@@ -416,8 +810,40 @@ class SequenceScenesResource(Resource):
416
810
  type: array
417
811
  items:
418
812
  type: object
419
- 404:
420
- description: Sequence not found
813
+ properties:
814
+ id:
815
+ type: string
816
+ format: uuid
817
+ description: Scene unique identifier
818
+ example: b35b7fb5-df86-5776-b181-68564193d36
819
+ name:
820
+ type: string
821
+ description: Scene name
822
+ example: "SC001"
823
+ description:
824
+ type: string
825
+ description: Scene description
826
+ example: "Main scene"
827
+ sequence_id:
828
+ type: string
829
+ format: uuid
830
+ description: Sequence identifier
831
+ example: c46c8gc6-eg97-6887-c292-79675204e47
832
+ project_id:
833
+ type: string
834
+ format: uuid
835
+ description: Project identifier
836
+ example: d57d9hd7-fh08-7998-d403-80786315f58
837
+ created_at:
838
+ type: string
839
+ format: date-time
840
+ description: Creation timestamp
841
+ example: "2023-01-01T12:00:00Z"
842
+ updated_at:
843
+ type: string
844
+ format: date-time
845
+ description: Last update timestamp
846
+ example: "2023-01-01T12:30:00Z"
421
847
  """
422
848
  shots_service.get_sequence(sequence_id)
423
849
  return user_service.get_scenes_for_sequence(sequence_id)
@@ -429,9 +855,10 @@ class ShotTasksResource(Resource):
429
855
  """
430
856
  Get shot tasks
431
857
  ---
858
+ description: Retrieve tasks related to a specific shot for the current
859
+ user. Returns all tasks assigned to the user for the given shot.
432
860
  tags:
433
861
  - User
434
- description: Return tasks related to given shot for current user.
435
862
  parameters:
436
863
  - in: path
437
864
  name: shot_id
@@ -439,6 +866,7 @@ class ShotTasksResource(Resource):
439
866
  schema:
440
867
  type: string
441
868
  format: uuid
869
+ description: Shot unique identifier
442
870
  example: a24a6ea4-ce75-4665-a070-57453082c25
443
871
  responses:
444
872
  200:
@@ -449,8 +877,48 @@ class ShotTasksResource(Resource):
449
877
  type: array
450
878
  items:
451
879
  type: object
452
- 404:
453
- description: Shot not found
880
+ properties:
881
+ id:
882
+ type: string
883
+ format: uuid
884
+ description: Task unique identifier
885
+ example: b35b7fb5-df86-5776-b181-68564193d36
886
+ name:
887
+ type: string
888
+ description: Task name
889
+ example: "Animation"
890
+ task_type_id:
891
+ type: string
892
+ format: uuid
893
+ description: Task type identifier
894
+ example: c46c8gc6-eg97-6887-c292-79675204e47
895
+ task_status_id:
896
+ type: string
897
+ format: uuid
898
+ description: Task status identifier
899
+ example: d57d9hd7-fh08-7998-d403-80786315f58
900
+ assigner_id:
901
+ type: string
902
+ format: uuid
903
+ description: Person who assigned the task
904
+ example: e68e0ie8-gi19-8009-e514-91897426g69
905
+ assignees:
906
+ type: array
907
+ items:
908
+ type: string
909
+ format: uuid
910
+ description: List of assigned person identifiers
911
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
912
+ created_at:
913
+ type: string
914
+ format: date-time
915
+ description: Creation timestamp
916
+ example: "2023-01-01T12:00:00Z"
917
+ updated_at:
918
+ type: string
919
+ format: date-time
920
+ description: Last update timestamp
921
+ example: "2023-01-01T12:30:00Z"
454
922
  """
455
923
  shots_service.get_shot(shot_id)
456
924
  return user_service.get_tasks_for_entity(shot_id)
@@ -462,9 +930,10 @@ class SceneTasksResource(Resource):
462
930
  """
463
931
  Get scene tasks
464
932
  ---
933
+ description: Retrieve tasks related to a specific scene for the current
934
+ user.
465
935
  tags:
466
936
  - User
467
- description: Return tasks related to given scene for current user.
468
937
  parameters:
469
938
  - in: path
470
939
  name: scene_id
@@ -472,6 +941,7 @@ class SceneTasksResource(Resource):
472
941
  schema:
473
942
  type: string
474
943
  format: uuid
944
+ description: Scene unique identifier
475
945
  example: a24a6ea4-ce75-4665-a070-57453082c25
476
946
  responses:
477
947
  200:
@@ -482,8 +952,48 @@ class SceneTasksResource(Resource):
482
952
  type: array
483
953
  items:
484
954
  type: object
485
- 404:
486
- description: Scene not found
955
+ properties:
956
+ id:
957
+ type: string
958
+ format: uuid
959
+ description: Task unique identifier
960
+ example: b35b7fb5-df86-5776-b181-68564193d36
961
+ name:
962
+ type: string
963
+ description: Task name
964
+ example: "Layout"
965
+ task_type_id:
966
+ type: string
967
+ format: uuid
968
+ description: Task type identifier
969
+ example: c46c8gc6-eg97-6887-c292-79675204e47
970
+ task_status_id:
971
+ type: string
972
+ format: uuid
973
+ description: Task status identifier
974
+ example: d57d9hd7-fh08-7998-d403-80786315f58
975
+ assigner_id:
976
+ type: string
977
+ format: uuid
978
+ description: Person who assigned the task
979
+ example: e68e0ie8-gi19-8009-e514-91897426g69
980
+ assignees:
981
+ type: array
982
+ items:
983
+ type: string
984
+ format: uuid
985
+ description: List of assigned person identifiers
986
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
987
+ created_at:
988
+ type: string
989
+ format: date-time
990
+ description: Creation timestamp
991
+ example: "2023-01-01T12:00:00Z"
992
+ updated_at:
993
+ type: string
994
+ format: date-time
995
+ description: Last update timestamp
996
+ example: "2023-01-01T12:30:00Z"
487
997
  """
488
998
  shots_service.get_scene(scene_id)
489
999
  return user_service.get_tasks_for_entity(scene_id)
@@ -495,9 +1005,11 @@ class SequenceTasksResource(Resource):
495
1005
  """
496
1006
  Get sequence tasks
497
1007
  ---
1008
+ description: Retrieve tasks related to a specific sequence for the
1009
+ current user.
1010
+ sequence.
498
1011
  tags:
499
1012
  - User
500
- description: Return tasks related to given sequence for current user.
501
1013
  parameters:
502
1014
  - in: path
503
1015
  name: sequence_id
@@ -505,6 +1017,7 @@ class SequenceTasksResource(Resource):
505
1017
  schema:
506
1018
  type: string
507
1019
  format: uuid
1020
+ description: Sequence unique identifier
508
1021
  example: a24a6ea4-ce75-4665-a070-57453082c25
509
1022
  responses:
510
1023
  200:
@@ -515,26 +1028,63 @@ class SequenceTasksResource(Resource):
515
1028
  type: array
516
1029
  items:
517
1030
  type: object
518
- 404:
519
- description: Sequence not found
1031
+ properties:
1032
+ id:
1033
+ type: string
1034
+ format: uuid
1035
+ description: Task unique identifier
1036
+ example: b35b7fb5-df86-5776-b181-68564193d36
1037
+ name:
1038
+ type: string
1039
+ description: Task name
1040
+ example: "Compositing"
1041
+ task_type_id:
1042
+ type: string
1043
+ format: uuid
1044
+ description: Task type identifier
1045
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1046
+ task_status_id:
1047
+ type: string
1048
+ format: uuid
1049
+ description: Task status identifier
1050
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1051
+ assigner_id:
1052
+ type: string
1053
+ format: uuid
1054
+ description: Person who assigned the task
1055
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1056
+ assignees:
1057
+ type: array
1058
+ items:
1059
+ type: string
1060
+ format: uuid
1061
+ description: List of assigned person identifiers
1062
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
1063
+ created_at:
1064
+ type: string
1065
+ format: date-time
1066
+ description: Creation timestamp
1067
+ example: "2023-01-01T12:00:00Z"
1068
+ updated_at:
1069
+ type: string
1070
+ format: date-time
1071
+ description: Last update timestamp
1072
+ example: "2023-01-01T12:30:00Z"
520
1073
  """
521
1074
  shots_service.get_sequence(sequence_id)
522
1075
  return user_service.get_tasks_for_entity(sequence_id)
523
1076
 
524
1077
 
525
1078
  class TodosResource(Resource):
526
- """
527
- Return tasks currently assigned to current user and of which status
528
- has is_done attribute set to false.
529
- """
530
1079
 
531
1080
  def get(self):
532
1081
  """
533
1082
  Get my tasks
534
1083
  ---
1084
+ description: Retrieve ttasks currently assigned to current user and of which status
1085
+ has is_done attribute set to false.
535
1086
  tags:
536
1087
  - User
537
- description: Return tasks currently assigned to current user and of which status has is_done attribute set to false.
538
1088
  responses:
539
1089
  200:
540
1090
  description: Unfinished tasks currently assigned to current user
@@ -544,6 +1094,48 @@ class TodosResource(Resource):
544
1094
  type: array
545
1095
  items:
546
1096
  type: object
1097
+ properties:
1098
+ id:
1099
+ type: string
1100
+ format: uuid
1101
+ description: Task unique identifier
1102
+ example: b35b7fb5-df86-5776-b181-68564193d36
1103
+ name:
1104
+ type: string
1105
+ description: Task name
1106
+ example: "Modeling"
1107
+ task_type_id:
1108
+ type: string
1109
+ format: uuid
1110
+ description: Task type identifier
1111
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1112
+ task_status_id:
1113
+ type: string
1114
+ format: uuid
1115
+ description: Task status identifier
1116
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1117
+ assigner_id:
1118
+ type: string
1119
+ format: uuid
1120
+ description: Person who assigned the task
1121
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1122
+ assignees:
1123
+ type: array
1124
+ items:
1125
+ type: string
1126
+ format: uuid
1127
+ description: List of assigned person identifiers
1128
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
1129
+ created_at:
1130
+ type: string
1131
+ format: date-time
1132
+ description: Creation timestamp
1133
+ example: "2023-01-01T12:00:00Z"
1134
+ updated_at:
1135
+ type: string
1136
+ format: date-time
1137
+ description: Last update timestamp
1138
+ example: "2023-01-01T12:30:00Z"
547
1139
  """
548
1140
  return user_service.get_todos()
549
1141
 
@@ -554,9 +1146,11 @@ class ToChecksResource(Resource):
554
1146
  """
555
1147
  Get tasks requiring feedback
556
1148
  ---
1149
+ description: Retrieve tasks requiring feedback for departments where the
1150
+ current user is a supervisor. Returns empty list if user is not a
1151
+ supervisor.
557
1152
  tags:
558
1153
  - User
559
- description: Return tasks requiring feedback for current user departments. If the user is not a supervisor, it returns an empty list
560
1154
  responses:
561
1155
  200:
562
1156
  description: Tasks requiring feedback in current user departments
@@ -566,6 +1160,48 @@ class ToChecksResource(Resource):
566
1160
  type: array
567
1161
  items:
568
1162
  type: object
1163
+ properties:
1164
+ id:
1165
+ type: string
1166
+ format: uuid
1167
+ description: Task unique identifier
1168
+ example: b35b7fb5-df86-5776-b181-68564193d36
1169
+ name:
1170
+ type: string
1171
+ description: Task name
1172
+ example: "Review"
1173
+ task_type_id:
1174
+ type: string
1175
+ format: uuid
1176
+ description: Task type identifier
1177
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1178
+ task_status_id:
1179
+ type: string
1180
+ format: uuid
1181
+ description: Task status identifier
1182
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1183
+ assigner_id:
1184
+ type: string
1185
+ format: uuid
1186
+ description: Person who assigned the task
1187
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1188
+ assignees:
1189
+ type: array
1190
+ items:
1191
+ type: string
1192
+ format: uuid
1193
+ description: List of assigned person identifiers
1194
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
1195
+ created_at:
1196
+ type: string
1197
+ format: date-time
1198
+ description: Creation timestamp
1199
+ example: "2023-01-01T12:00:00Z"
1200
+ updated_at:
1201
+ type: string
1202
+ format: date-time
1203
+ description: Last update timestamp
1204
+ example: "2023-01-01T12:30:00Z"
569
1205
  """
570
1206
  return user_service.get_tasks_to_check()
571
1207
 
@@ -576,9 +1212,10 @@ class DoneResource(Resource):
576
1212
  """
577
1213
  Get done tasks
578
1214
  ---
1215
+ description: Retrieve tasks currently assigned to the current user with
1216
+ status marked as done. Returns only tasks from open projects.
579
1217
  tags:
580
1218
  - User
581
- description: Return tasks currently assigned to current user and of which status has is_done attribute set to true. It returns only tasks of open projects.
582
1219
  responses:
583
1220
  200:
584
1221
  description: Finished tasks currently assigned to current user
@@ -588,6 +1225,48 @@ class DoneResource(Resource):
588
1225
  type: array
589
1226
  items:
590
1227
  type: object
1228
+ properties:
1229
+ id:
1230
+ type: string
1231
+ format: uuid
1232
+ description: Task unique identifier
1233
+ example: b35b7fb5-df86-5776-b181-68564193d36
1234
+ name:
1235
+ type: string
1236
+ description: Task name
1237
+ example: "Completed Task"
1238
+ task_type_id:
1239
+ type: string
1240
+ format: uuid
1241
+ description: Task type identifier
1242
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1243
+ task_status_id:
1244
+ type: string
1245
+ format: uuid
1246
+ description: Task status identifier
1247
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1248
+ assigner_id:
1249
+ type: string
1250
+ format: uuid
1251
+ description: Person who assigned the task
1252
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1253
+ assignees:
1254
+ type: array
1255
+ items:
1256
+ type: string
1257
+ format: uuid
1258
+ description: List of assigned person identifiers
1259
+ example: ["f79f1jf9-hj20-9010-f625-a09008537h80"]
1260
+ created_at:
1261
+ type: string
1262
+ format: date-time
1263
+ description: Creation timestamp
1264
+ example: "2023-01-01T12:00:00Z"
1265
+ updated_at:
1266
+ type: string
1267
+ format: date-time
1268
+ description: Last update timestamp
1269
+ example: "2023-01-01T12:30:00Z"
591
1270
  """
592
1271
  return user_service.get_done_tasks()
593
1272
 
@@ -598,9 +1277,10 @@ class FiltersResource(Resource, ArgsMixin):
598
1277
  """
599
1278
  Get filters
600
1279
  ---
1280
+ description: Retrieve filters for the current user limited to open
1281
+ projects only.
601
1282
  tags:
602
1283
  - User
603
- description: Allow toretrieve filters for current user and only for open projects.
604
1284
  responses:
605
1285
  200:
606
1286
  description: Filters for current user and only for open projects
@@ -610,16 +1290,58 @@ class FiltersResource(Resource, ArgsMixin):
610
1290
  type: array
611
1291
  items:
612
1292
  type: object
1293
+ properties:
1294
+ id:
1295
+ type: string
1296
+ format: uuid
1297
+ description: Filter unique identifier
1298
+ example: a24a6ea4-ce75-4665-a070-57453082c25
1299
+ name:
1300
+ type: string
1301
+ description: Filter name
1302
+ example: "My Filter"
1303
+ query:
1304
+ type: string
1305
+ description: Filter query JSON
1306
+ example: '{"project_id": "uuid"}'
1307
+ list_type:
1308
+ type: string
1309
+ description: List type
1310
+ example: "todo"
1311
+ entity_type:
1312
+ type: string
1313
+ description: Entity type
1314
+ example: "Asset"
1315
+ project_id:
1316
+ type: string
1317
+ format: uuid
1318
+ description: Project identifier
1319
+ example: b35b7fb5-df86-5776-b181-68564193d36
1320
+ is_shared:
1321
+ type: boolean
1322
+ description: Whether filter is shared
1323
+ example: false
1324
+ created_at:
1325
+ type: string
1326
+ format: date-time
1327
+ description: Creation timestamp
1328
+ example: "2023-01-01T12:00:00Z"
1329
+ updated_at:
1330
+ type: string
1331
+ format: date-time
1332
+ description: Last update timestamp
1333
+ example: "2023-01-01T12:30:00Z"
613
1334
  """
614
1335
  return user_service.get_filters()
615
1336
 
616
1337
  def post(self):
617
1338
  """
618
- Create filter.
1339
+ Create filter
619
1340
  ---
1341
+ description: Create a new filter for the current user limited to open
1342
+ projects only.
620
1343
  tags:
621
1344
  - User
622
- description: Create filter for current user and only for open projects.
623
1345
  requestBody:
624
1346
  required: true
625
1347
  content:
@@ -634,36 +1356,88 @@ class FiltersResource(Resource, ArgsMixin):
634
1356
  properties:
635
1357
  name:
636
1358
  type: string
637
- example: Name of filter
1359
+ description: Filter name
1360
+ example: "My Custom Filter"
638
1361
  query:
639
1362
  type: string
1363
+ description: Filter query as JSON string
640
1364
  example: '{"project_id": "uuid"}'
641
1365
  list_type:
642
1366
  type: string
643
- example: todo
1367
+ description: Type of list this filter applies to
1368
+ example: "todo"
644
1369
  entity_type:
645
1370
  type: string
646
- example: Asset
1371
+ description: Entity type this filter applies to
1372
+ example: "Asset"
647
1373
  project_id:
648
1374
  type: string
649
1375
  format: uuid
1376
+ description: Project identifier
650
1377
  example: a24a6ea4-ce75-4665-a070-57453082c25
651
1378
  is_shared:
652
1379
  type: boolean
1380
+ description: Whether to share this filter with others
653
1381
  default: false
1382
+ example: false
654
1383
  search_filter_group_id:
655
1384
  type: string
656
1385
  format: uuid
1386
+ description: Filter group identifier
1387
+ example: b35b7fb5-df86-5776-b181-68564193d36
657
1388
  department_id:
658
1389
  type: string
659
1390
  format: uuid
1391
+ description: Department identifier
1392
+ example: c46c8gc6-eg97-6887-c292-79675204e47
660
1393
  responses:
661
1394
  201:
662
- description: Filter for current user and only for open projects created
1395
+ description: Filter created successfully
663
1396
  content:
664
1397
  application/json:
665
1398
  schema:
666
1399
  type: object
1400
+ properties:
1401
+ id:
1402
+ type: string
1403
+ format: uuid
1404
+ description: Filter unique identifier
1405
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1406
+ name:
1407
+ type: string
1408
+ description: Filter name
1409
+ example: "My Custom Filter"
1410
+ query:
1411
+ type: string
1412
+ description: Filter query JSON
1413
+ example: '{"project_id": "uuid"}'
1414
+ list_type:
1415
+ type: string
1416
+ description: List type
1417
+ example: "todo"
1418
+ entity_type:
1419
+ type: string
1420
+ description: Entity type
1421
+ example: "Asset"
1422
+ project_id:
1423
+ type: string
1424
+ format: uuid
1425
+ description: Project identifier
1426
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1427
+ is_shared:
1428
+ type: boolean
1429
+ description: Whether filter is shared
1430
+ example: false
1431
+ created_at:
1432
+ type: string
1433
+ format: date-time
1434
+ description: Creation timestamp
1435
+ example: "2023-01-01T12:00:00Z"
1436
+ updated_at:
1437
+ type: string
1438
+ format: date-time
1439
+ description: Last update timestamp
1440
+ example: "2023-01-01T12:30:00Z"
667
1441
  400:
668
1442
  description: Bad request
669
1443
  """
@@ -704,19 +1478,101 @@ class FilterResource(Resource, ArgsMixin):
704
1478
  """
705
1479
  Update filter
706
1480
  ---
1481
+ description: Update an existing filter if it is owned by the current
1482
+ user.
707
1483
  tags:
708
1484
  - User
709
- description: Update given filter if it's owned by current user
710
1485
  parameters:
711
1486
  - in: path
712
1487
  name: filter_id
713
- required: True
714
- type: string
715
- format: uuid
1488
+ required: true
1489
+ schema:
1490
+ type: string
1491
+ format: uuid
1492
+ description: Filter unique identifier
716
1493
  example: a24a6ea4-ce75-4665-a070-57453082c25
1494
+ requestBody:
1495
+ required: true
1496
+ content:
1497
+ application/json:
1498
+ schema:
1499
+ type: object
1500
+ properties:
1501
+ name:
1502
+ type: string
1503
+ description: Filter name
1504
+ example: "Updated Filter Name"
1505
+ search_query:
1506
+ type: string
1507
+ description: Updated filter query
1508
+ example: '{"status": "active"}'
1509
+ search_filter_group_id:
1510
+ type: string
1511
+ format: uuid
1512
+ description: Filter group identifier
1513
+ example: b35b7fb5-df86-5776-b181-68564193d36
1514
+ is_shared:
1515
+ type: boolean
1516
+ description: Whether to share this filter
1517
+ example: true
1518
+ project_id:
1519
+ type: string
1520
+ format: uuid
1521
+ description: Project identifier
1522
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1523
+ department_id:
1524
+ type: string
1525
+ format: uuid
1526
+ description: Department identifier
1527
+ example: d57d9hd7-fh08-7998-d403-80786315f58
717
1528
  responses:
718
1529
  200:
719
- description: Given filter with updated data.
1530
+ description: Filter updated successfully
1531
+ content:
1532
+ application/json:
1533
+ schema:
1534
+ type: object
1535
+ properties:
1536
+ id:
1537
+ type: string
1538
+ format: uuid
1539
+ description: Filter unique identifier
1540
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1541
+ name:
1542
+ type: string
1543
+ description: Filter name
1544
+ example: "Updated Filter Name"
1545
+ query:
1546
+ type: string
1547
+ description: Filter query JSON
1548
+ example: '{"status": "active"}'
1549
+ list_type:
1550
+ type: string
1551
+ description: List type
1552
+ example: "todo"
1553
+ entity_type:
1554
+ type: string
1555
+ description: Entity type
1556
+ example: "Asset"
1557
+ project_id:
1558
+ type: string
1559
+ format: uuid
1560
+ description: Project identifier
1561
+ example: f79f1jf9-hj20-9010-f625-a09008537h80
1562
+ is_shared:
1563
+ type: boolean
1564
+ description: Whether filter is shared
1565
+ example: true
1566
+ created_at:
1567
+ type: string
1568
+ format: date-time
1569
+ description: Creation timestamp
1570
+ example: "2023-01-01T12:00:00Z"
1571
+ updated_at:
1572
+ type: string
1573
+ format: date-time
1574
+ description: Last update timestamp
1575
+ example: "2023-01-01T12:30:00Z"
720
1576
  """
721
1577
  data = self.get_args(
722
1578
  [
@@ -736,11 +1592,12 @@ class FilterResource(Resource, ArgsMixin):
736
1592
 
737
1593
  def delete(self, filter_id):
738
1594
  """
739
- Delete filter.
1595
+ Delete filter
740
1596
  ---
1597
+ description: Delete a specific filter if it is owned by the current
1598
+ user.
741
1599
  tags:
742
1600
  - User
743
- description: Delete given filter if it's owned by current user
744
1601
  parameters:
745
1602
  - in: path
746
1603
  name: filter_id
@@ -748,12 +1605,11 @@ class FilterResource(Resource, ArgsMixin):
748
1605
  schema:
749
1606
  type: string
750
1607
  format: uuid
1608
+ description: Filter unique identifier
751
1609
  example: a24a6ea4-ce75-4665-a070-57453082c25
752
1610
  responses:
753
1611
  204:
754
1612
  description: Filter deleted successfully
755
- 404:
756
- description: Filter not found
757
1613
  """
758
1614
  user_service.remove_filter(filter_id)
759
1615
  return "", 204
@@ -763,11 +1619,12 @@ class FilterGroupsResource(Resource, ArgsMixin):
763
1619
 
764
1620
  def get(self):
765
1621
  """
766
- Get filter groups.
1622
+ Get filter groups
767
1623
  ---
1624
+ description: Retrieve filter groups for the current user limited to open
1625
+ projects only.
768
1626
  tags:
769
1627
  - User
770
- description: Retrieve filter groups for current user and only for open projects
771
1628
  responses:
772
1629
  200:
773
1630
  description: Filter groups for current user and only for open projects
@@ -777,6 +1634,47 @@ class FilterGroupsResource(Resource, ArgsMixin):
777
1634
  type: array
778
1635
  items:
779
1636
  type: object
1637
+ properties:
1638
+ id:
1639
+ type: string
1640
+ format: uuid
1641
+ description: Filter group unique identifier
1642
+ example: a24a6ea4-ce75-4665-a070-57453082c25
1643
+ name:
1644
+ type: string
1645
+ description: Filter group name
1646
+ example: "My Filter Group"
1647
+ color:
1648
+ type: string
1649
+ description: Filter group color
1650
+ example: "#FF0000"
1651
+ list_type:
1652
+ type: string
1653
+ description: List type
1654
+ example: "todo"
1655
+ entity_type:
1656
+ type: string
1657
+ description: Entity type
1658
+ example: "Asset"
1659
+ project_id:
1660
+ type: string
1661
+ format: uuid
1662
+ description: Project identifier
1663
+ example: b35b7fb5-df86-5776-b181-68564193d36
1664
+ is_shared:
1665
+ type: boolean
1666
+ description: Whether filter group is shared
1667
+ example: false
1668
+ created_at:
1669
+ type: string
1670
+ format: date-time
1671
+ description: Creation timestamp
1672
+ example: "2023-01-01T12:00:00Z"
1673
+ updated_at:
1674
+ type: string
1675
+ format: date-time
1676
+ description: Last update timestamp
1677
+ example: "2023-01-01T12:30:00Z"
780
1678
  """
781
1679
  return user_service.get_filter_groups()
782
1680
 
@@ -784,9 +1682,10 @@ class FilterGroupsResource(Resource, ArgsMixin):
784
1682
  """
785
1683
  Create filter group
786
1684
  ---
1685
+ description: Create a new filter group for the current user limited to
1686
+ open projects only. The filter group can be shared with other users.
787
1687
  tags:
788
1688
  - User
789
- description: Create filter group for current user and only for open projects.
790
1689
  requestBody:
791
1690
  required: true
792
1691
  content:
@@ -801,34 +1700,83 @@ class FilterGroupsResource(Resource, ArgsMixin):
801
1700
  properties:
802
1701
  name:
803
1702
  type: string
804
- example: Name of filter group
1703
+ description: Filter group name
1704
+ example: "My Filter Group"
805
1705
  color:
806
1706
  type: string
807
- example: #FF0000
1707
+ description: Filter group color in hex format
1708
+ example: "#FF0000"
808
1709
  list_type:
809
1710
  type: string
810
- example: todo
1711
+ description: Type of list this filter group applies to
1712
+ example: "todo"
811
1713
  entity_type:
812
1714
  type: string
813
- example: Asset
1715
+ description: Entity type this filter group applies to
1716
+ example: "Asset"
814
1717
  is_shared:
815
1718
  type: boolean
1719
+ description: Whether to share this filter group with others
816
1720
  default: false
1721
+ example: false
817
1722
  project_id:
818
1723
  type: string
819
1724
  format: uuid
1725
+ description: Project identifier
820
1726
  example: a24a6ea4-ce75-4665-a070-57453082c25
821
1727
  department_id:
822
1728
  type: string
823
1729
  format: uuid
824
- example: a24a6ea4-ce75-4665-a070-57453082c25
1730
+ description: Department identifier
1731
+ example: b35b7fb5-df86-5776-b181-68564193d36
825
1732
  responses:
826
1733
  201:
827
- description: Filter group for the current user and only for open projects created
1734
+ description: Filter group created successfully
828
1735
  content:
829
1736
  application/json:
830
1737
  schema:
831
1738
  type: object
1739
+ properties:
1740
+ id:
1741
+ type: string
1742
+ format: uuid
1743
+ description: Filter group unique identifier
1744
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1745
+ name:
1746
+ type: string
1747
+ description: Filter group name
1748
+ example: "My Filter Group"
1749
+ color:
1750
+ type: string
1751
+ description: Filter group color
1752
+ example: "#FF0000"
1753
+ list_type:
1754
+ type: string
1755
+ description: List type
1756
+ example: "todo"
1757
+ entity_type:
1758
+ type: string
1759
+ description: Entity type
1760
+ example: "Asset"
1761
+ project_id:
1762
+ type: string
1763
+ format: uuid
1764
+ description: Project identifier
1765
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1766
+ is_shared:
1767
+ type: boolean
1768
+ description: Whether filter group is shared
1769
+ example: false
1770
+ created_at:
1771
+ type: string
1772
+ format: date-time
1773
+ description: Creation timestamp
1774
+ example: "2023-01-01T12:00:00Z"
1775
+ updated_at:
1776
+ type: string
1777
+ format: date-time
1778
+ description: Last update timestamp
1779
+ example: "2023-01-01T12:30:00Z"
832
1780
  400:
833
1781
  description: Bad request
834
1782
  """
@@ -866,13 +1814,67 @@ class FilterGroupResource(Resource, ArgsMixin):
866
1814
  """
867
1815
  Get filter group
868
1816
  ---
1817
+ description: Retrieve a specific filter group for the current user.
1818
+ Returns detailed information about the filter group.
869
1819
  tags:
870
1820
  - User
871
- description: Retrieve given filter group for the current user.
1821
+ parameters:
1822
+ - in: path
1823
+ name: search_filter_group_id
1824
+ required: true
1825
+ schema:
1826
+ type: string
1827
+ format: uuid
1828
+ description: Filter group unique identifier
1829
+ example: a24a6ea4-ce75-4665-a070-57453082c25
872
1830
  responses:
873
1831
  200:
874
- description: Filter groups for the current user and only for
875
- open projects
1832
+ description: Filter group details
1833
+ content:
1834
+ application/json:
1835
+ schema:
1836
+ type: object
1837
+ properties:
1838
+ id:
1839
+ type: string
1840
+ format: uuid
1841
+ description: Filter group unique identifier
1842
+ example: b35b7fb5-df86-5776-b181-68564193d36
1843
+ name:
1844
+ type: string
1845
+ description: Filter group name
1846
+ example: "My Filter Group"
1847
+ color:
1848
+ type: string
1849
+ description: Filter group color
1850
+ example: "#FF0000"
1851
+ list_type:
1852
+ type: string
1853
+ description: List type
1854
+ example: "todo"
1855
+ entity_type:
1856
+ type: string
1857
+ description: Entity type
1858
+ example: "Asset"
1859
+ project_id:
1860
+ type: string
1861
+ format: uuid
1862
+ description: Project identifier
1863
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1864
+ is_shared:
1865
+ type: boolean
1866
+ description: Whether filter group is shared
1867
+ example: false
1868
+ created_at:
1869
+ type: string
1870
+ format: date-time
1871
+ description: Creation timestamp
1872
+ example: "2023-01-01T12:00:00Z"
1873
+ updated_at:
1874
+ type: string
1875
+ format: date-time
1876
+ description: Last update timestamp
1877
+ example: "2023-01-01T12:30:00Z"
876
1878
  """
877
1879
  return user_service.get_filter_group(search_filter_group_id)
878
1880
 
@@ -880,41 +1882,96 @@ class FilterGroupResource(Resource, ArgsMixin):
880
1882
  """
881
1883
  Update filter group
882
1884
  ---
1885
+ description: Update an existing filter group if it is owned by the
1886
+ current user. Allows modification of filter group properties.
883
1887
  tags:
884
1888
  - User
885
- description: Update given filter group if it's owned by the current user.
886
1889
  parameters:
887
1890
  - in: path
888
- name: filter_id
889
- required: True
890
- type: string
891
- format: uuid
892
- example: a24a6ea4-ce75-4665-a070-57453082c25
893
- - in: formData
894
- name: name
895
- type: string
896
- example: Name of the filter group
897
- - in: formData
898
- name: color
899
- type: string
900
- example: Color of the filter group
901
- - in: formData
902
- name: is_shared
903
- type: boolean
904
- example: True
905
- - in: formData
906
- name: project_id
907
- type: string
908
- format: uuid
909
- example: a24a6ea4-ce75-4665-a070-57453082c25
910
- - in: formData
911
- name: department_id
912
- type: string
913
- format: uuid
1891
+ name: filter_group_id
1892
+ required: true
1893
+ schema:
1894
+ type: string
1895
+ format: uuid
1896
+ description: Filter group unique identifier
914
1897
  example: a24a6ea4-ce75-4665-a070-57453082c25
1898
+ requestBody:
1899
+ required: true
1900
+ content:
1901
+ application/json:
1902
+ schema:
1903
+ type: object
1904
+ properties:
1905
+ name:
1906
+ type: string
1907
+ description: Filter group name
1908
+ example: "Updated Filter Group"
1909
+ color:
1910
+ type: string
1911
+ description: Filter group color
1912
+ example: "#00FF00"
1913
+ is_shared:
1914
+ type: boolean
1915
+ description: Whether to share this filter group
1916
+ example: true
1917
+ project_id:
1918
+ type: string
1919
+ format: uuid
1920
+ description: Project identifier
1921
+ example: b35b7fb5-df86-5776-b181-68564193d36
1922
+ department_id:
1923
+ type: string
1924
+ format: uuid
1925
+ description: Department identifier
1926
+ example: c46c8gc6-eg97-6887-c292-79675204e47
915
1927
  responses:
916
1928
  200:
917
- description: Given filter group with updated data
1929
+ description: Filter group updated successfully
1930
+ content:
1931
+ application/json:
1932
+ schema:
1933
+ type: object
1934
+ properties:
1935
+ id:
1936
+ type: string
1937
+ format: uuid
1938
+ description: Filter group unique identifier
1939
+ example: d57d9hd7-fh08-7998-d403-80786315f58
1940
+ name:
1941
+ type: string
1942
+ description: Filter group name
1943
+ example: "Updated Filter Group"
1944
+ color:
1945
+ type: string
1946
+ description: Filter group color
1947
+ example: "#00FF00"
1948
+ list_type:
1949
+ type: string
1950
+ description: List type
1951
+ example: "todo"
1952
+ entity_type:
1953
+ type: string
1954
+ description: Entity type
1955
+ example: "Asset"
1956
+ project_id:
1957
+ type: string
1958
+ format: uuid
1959
+ description: Project identifier
1960
+ example: e68e0ie8-gi19-8009-e514-91897426g69
1961
+ is_shared:
1962
+ type: boolean
1963
+ description: Whether filter group is shared
1964
+ example: true
1965
+ created_at:
1966
+ type: string
1967
+ format: date-time
1968
+ description: Creation timestamp
1969
+ example: "2023-01-01T12:00:00Z"
1970
+ updated_at:
1971
+ type: string
1972
+ format: date-time
1973
+ description: Last update timestamp
1974
+ example: "2023-01-01T12:30:00Z"
918
1975
  """
919
1976
  data = self.get_args(
920
1977
  [
@@ -934,19 +1991,22 @@ class FilterGroupResource(Resource, ArgsMixin):
934
1991
  """
935
1992
  Delete filter group
936
1993
  ---
1994
+ description: Delete a specific filter group if it is owned by the
1995
+ current user.
937
1996
  tags:
938
1997
  - User
939
- description: Delete given filter group if it's owned by the current user.
940
1998
  parameters:
941
1999
  - in: path
942
- name: filter_id
943
- required: True
944
- type: string
945
- format: uuid
2000
+ name: filter_group_id
2001
+ required: true
2002
+ schema:
2003
+ type: string
2004
+ format: uuid
2005
+ description: Filter group unique identifier
946
2006
  example: a24a6ea4-ce75-4665-a070-57453082c25
947
2007
  responses:
948
2008
  204:
949
- description: Empty response
2009
+ description: Filter group deleted successfully
950
2010
  """
951
2011
  user_service.remove_filter_group(filter_group_id)
952
2012
  return "", 204
@@ -958,18 +2018,44 @@ class DesktopLoginLogsResource(Resource, ArgsMixin):
958
2018
  """
959
2019
  Get desktop login logs
960
2020
  ---
2021
+ description: Retrieve desktop login logs for the current user.
961
2022
  tags:
962
2023
  - User
963
- description: Retrieve desktop login logs.
964
2024
  responses:
965
2025
  200:
966
- description: Desktop login logs
2026
+ description: Desktop login logs for current user
967
2027
  content:
968
2028
  application/json:
969
2029
  schema:
970
2030
  type: array
971
2031
  items:
972
2032
  type: object
2033
+ properties:
2034
+ id:
2035
+ type: string
2036
+ format: uuid
2037
+ description: Login log unique identifier
2038
+ example: a24a6ea4-ce75-4665-a070-57453082c25
2039
+ person_id:
2040
+ type: string
2041
+ format: uuid
2042
+ description: Person identifier
2043
+ example: b35b7fb5-df86-5776-b181-68564193d36
2044
+ date:
2045
+ type: string
2046
+ format: date
2047
+ description: Login date
2048
+ example: "2023-01-01"
2049
+ created_at:
2050
+ type: string
2051
+ format: date-time
2052
+ description: Creation timestamp
2053
+ example: "2023-01-01T12:00:00Z"
2054
+ updated_at:
2055
+ type: string
2056
+ format: date-time
2057
+ description: Last update timestamp
2058
+ example: "2023-01-01T12:30:00Z"
973
2059
  """
974
2060
  current_user = persons_service.get_current_user()
975
2061
  return persons_service.get_desktop_login_logs(current_user["id"])
@@ -978,9 +2064,9 @@ class DesktopLoginLogsResource(Resource, ArgsMixin):
978
2064
  """
979
2065
  Create desktop login log
980
2066
  ---
2067
+ description: Create a desktop login log entry for the current user.
981
2068
  tags:
982
2069
  - User
983
- description: Create a desktop login log. The desktop login log can only be created by the current user.
984
2070
  requestBody:
985
2071
  required: true
986
2072
  content:
@@ -991,14 +2077,41 @@ class DesktopLoginLogsResource(Resource, ArgsMixin):
991
2077
  date:
992
2078
  type: string
993
2079
  format: date
994
- example: "2022-07-12"
2080
+ description: Login date
2081
+ example: "2023-01-01"
995
2082
  responses:
996
2083
  201:
997
- description: Desktop login log created
2084
+ description: Desktop login log created successfully
998
2085
  content:
999
2086
  application/json:
1000
2087
  schema:
1001
2088
  type: object
2089
+ properties:
2090
+ id:
2091
+ type: string
2092
+ format: uuid
2093
+ description: Login log unique identifier
2094
+ example: a24a6ea4-ce75-4665-a070-57453082c25
2095
+ person_id:
2096
+ type: string
2097
+ format: uuid
2098
+ description: Person identifier
2099
+ example: b35b7fb5-df86-5776-b181-68564193d36
2100
+ date:
2101
+ type: string
2102
+ format: date
2103
+ description: Login date
2104
+ example: "2023-01-01"
2105
+ created_at:
2106
+ type: string
2107
+ format: date-time
2108
+ description: Creation timestamp
2109
+ example: "2023-01-01T12:00:00Z"
2110
+ updated_at:
2111
+ type: string
2112
+ format: date-time
2113
+ description: Last update timestamp
2114
+ example: "2023-01-01T12:30:00Z"
1002
2115
  400:
1003
2116
  description: Bad request
1004
2117
  """
@@ -1018,9 +2131,11 @@ class NotificationsResource(Resource, ArgsMixin):
1018
2131
  """
1019
2132
  Get notifications
1020
2133
  ---
2134
+ description: Retrieve the last 100 user notifications filtered by
2135
+ given parameters. Supports filtering by date range, task type, status,
2136
+ and other criteria.
1021
2137
  tags:
1022
- - User
1023
- description: Return last 100 user notifications filtered by given parameters.
2138
+ - User
1024
2139
  parameters:
1025
2140
  - in: query
1026
2141
  name: after
@@ -1028,16 +2143,16 @@ class NotificationsResource(Resource, ArgsMixin):
1028
2143
  schema:
1029
2144
  type: string
1030
2145
  format: date
1031
- example: "2022-07-12"
1032
2146
  description: Filter notifications after this date
2147
+ example: "2023-01-01"
1033
2148
  - in: query
1034
2149
  name: before
1035
2150
  required: false
1036
2151
  schema:
1037
2152
  type: string
1038
2153
  format: date
1039
- example: "2022-07-12"
1040
2154
  description: Filter notifications before this date
2155
+ example: "2023-12-31"
1041
2156
  - in: query
1042
2157
  name: task_type_id
1043
2158
  required: false
@@ -1045,6 +2160,7 @@ class NotificationsResource(Resource, ArgsMixin):
1045
2160
  type: string
1046
2161
  format: uuid
1047
2162
  description: Filter by task type ID
2163
+ example: a24a6ea4-ce75-4665-a070-57453082c25
1048
2164
  - in: query
1049
2165
  name: task_status_id
1050
2166
  required: false
@@ -1052,33 +2168,76 @@ class NotificationsResource(Resource, ArgsMixin):
1052
2168
  type: string
1053
2169
  format: uuid
1054
2170
  description: Filter by task status ID
2171
+ example: b35b7fb5-df86-5776-b181-68564193d36
1055
2172
  - in: query
1056
2173
  name: type
1057
2174
  required: false
1058
2175
  schema:
1059
2176
  type: string
1060
2177
  description: Filter by notification type
2178
+ example: "comment"
1061
2179
  - in: query
1062
2180
  name: read
1063
2181
  required: false
1064
2182
  schema:
1065
2183
  type: boolean
1066
2184
  description: Filter by read status
2185
+ example: false
1067
2186
  - in: query
1068
2187
  name: watching
1069
2188
  required: false
1070
2189
  schema:
1071
2190
  type: boolean
1072
2191
  description: Filter by watching status
2192
+ example: true
1073
2193
  responses:
1074
2194
  200:
1075
- description: 100 last user notifications
2195
+ description: Last 100 user notifications matching filters
1076
2196
  content:
1077
2197
  application/json:
1078
2198
  schema:
1079
2199
  type: array
1080
2200
  items:
1081
2201
  type: object
2202
+ properties:
2203
+ id:
2204
+ type: string
2205
+ format: uuid
2206
+ description: Notification unique identifier
2207
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2208
+ type:
2209
+ type: string
2210
+ description: Notification type
2211
+ example: "comment"
2212
+ read:
2213
+ type: boolean
2214
+ description: Whether notification is read
2215
+ example: false
2216
+ author_id:
2217
+ type: string
2218
+ format: uuid
2219
+ description: Author person identifier
2220
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2221
+ comment_id:
2222
+ type: string
2223
+ format: uuid
2224
+ description: Comment identifier
2225
+ example: e68e0ie8-gi19-8009-e514-91897426g69
2226
+ task_id:
2227
+ type: string
2228
+ format: uuid
2229
+ description: Task identifier
2230
+ example: f79f1jf9-hj20-9010-f625-a09008537h80
2231
+ created_at:
2232
+ type: string
2233
+ format: date-time
2234
+ description: Creation timestamp
2235
+ example: "2023-01-01T12:00:00Z"
2236
+ updated_at:
2237
+ type: string
2238
+ format: date-time
2239
+ description: Last update timestamp
2240
+ example: "2023-01-01T12:30:00Z"
1082
2241
  """
1083
2242
  (
1084
2243
  after,
@@ -1094,7 +2253,6 @@ class NotificationsResource(Resource, ArgsMixin):
1094
2253
  watching = None
1095
2254
  if request.args.get("watching", None) is not None:
1096
2255
  watching = self.get_bool_parameter("watching")
1097
- print("watching", watching)
1098
2256
  notifications = user_service.get_last_notifications(
1099
2257
  before=before,
1100
2258
  task_type_id=task_type_id,
@@ -1121,9 +2279,10 @@ class NotificationResource(Resource, ArgsMixin):
1121
2279
  """
1122
2280
  Get notification
1123
2281
  ---
2282
+ description: Retrieve a specific notification by ID, only if it
2283
+ belongs to the current user.
1124
2284
  tags:
1125
2285
  - User
1126
- description: Return notification matching given id, only if it's a notification that belongs to current user.
1127
2286
  parameters:
1128
2287
  - in: path
1129
2288
  name: notification_id
@@ -1131,16 +2290,54 @@ class NotificationResource(Resource, ArgsMixin):
1131
2290
  schema:
1132
2291
  type: string
1133
2292
  format: uuid
2293
+ description: Notification unique identifier
1134
2294
  example: a24a6ea4-ce75-4665-a070-57453082c25
1135
2295
  responses:
1136
2296
  200:
1137
- description: Notification matching given ID
2297
+ description: Notification details
1138
2298
  content:
1139
2299
  application/json:
1140
2300
  schema:
1141
2301
  type: object
1142
- 404:
1143
- description: Notification not found
2302
+ properties:
2303
+ id:
2304
+ type: string
2305
+ format: uuid
2306
+ description: Notification unique identifier
2307
+ example: b35b7fb5-df86-5776-b181-68564193d36
2308
+ type:
2309
+ type: string
2310
+ description: Notification type
2311
+ example: "comment"
2312
+ read:
2313
+ type: boolean
2314
+ description: Whether notification is read
2315
+ example: false
2316
+ author_id:
2317
+ type: string
2318
+ format: uuid
2319
+ description: Author person identifier
2320
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2321
+ comment_id:
2322
+ type: string
2323
+ format: uuid
2324
+ description: Comment identifier
2325
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2326
+ task_id:
2327
+ type: string
2328
+ format: uuid
2329
+ description: Task identifier
2330
+ example: e68e0ie8-gi19-8009-e514-91897426g69
2331
+ created_at:
2332
+ type: string
2333
+ format: date-time
2334
+ description: Creation timestamp
2335
+ example: "2023-01-01T12:00:00Z"
2336
+ updated_at:
2337
+ type: string
2338
+ format: date-time
2339
+ description: Last update timestamp
2340
+ example: "2023-01-01T12:30:00Z"
1144
2341
  """
1145
2342
  return user_service.get_notification(notification_id)
1146
2343
 
@@ -1148,9 +2345,10 @@ class NotificationResource(Resource, ArgsMixin):
1148
2345
  """
1149
2346
  Update notification
1150
2347
  ---
2348
+ description: Change the read status of a specific notification. Only
2349
+ the notification owner can update their notifications.
1151
2350
  tags:
1152
2351
  - User
1153
- description: Change notification read status.
1154
2352
  parameters:
1155
2353
  - in: path
1156
2354
  name: notification_id
@@ -1158,6 +2356,7 @@ class NotificationResource(Resource, ArgsMixin):
1158
2356
  schema:
1159
2357
  type: string
1160
2358
  format: uuid
2359
+ description: Notification unique identifier
1161
2360
  example: a24a6ea4-ce75-4665-a070-57453082c25
1162
2361
  requestBody:
1163
2362
  required: true
@@ -1168,16 +2367,54 @@ class NotificationResource(Resource, ArgsMixin):
1168
2367
  properties:
1169
2368
  read:
1170
2369
  type: boolean
1171
- description: Mark notification as read/unread
2370
+ description: Mark notification as read or unread
2371
+ example: true
1172
2372
  responses:
1173
2373
  200:
1174
- description: Updated notification
2374
+ description: Notification updated successfully
1175
2375
  content:
1176
2376
  application/json:
1177
2377
  schema:
1178
2378
  type: object
1179
- 404:
1180
- description: Notification not found
2379
+ properties:
2380
+ id:
2381
+ type: string
2382
+ format: uuid
2383
+ description: Notification unique identifier
2384
+ example: b35b7fb5-df86-5776-b181-68564193d36
2385
+ type:
2386
+ type: string
2387
+ description: Notification type
2388
+ example: "comment"
2389
+ read:
2390
+ type: boolean
2391
+ description: Whether notification is read
2392
+ example: true
2393
+ author_id:
2394
+ type: string
2395
+ format: uuid
2396
+ description: Author person identifier
2397
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2398
+ comment_id:
2399
+ type: string
2400
+ format: uuid
2401
+ description: Comment identifier
2402
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2403
+ task_id:
2404
+ type: string
2405
+ format: uuid
2406
+ description: Task identifier
2407
+ example: e68e0ie8-gi19-8009-e514-91897426g69
2408
+ created_at:
2409
+ type: string
2410
+ format: date-time
2411
+ description: Creation timestamp
2412
+ example: "2023-01-01T12:00:00Z"
2413
+ updated_at:
2414
+ type: string
2415
+ format: date-time
2416
+ description: Last update timestamp
2417
+ example: "2023-01-01T12:30:00Z"
1181
2418
  """
1182
2419
  data = self.get_args([("read", None, False, inputs.boolean)])
1183
2420
  return user_service.update_notification(notification_id, data["read"])
@@ -1189,11 +2426,12 @@ class MarkAllNotificationsAsReadResource(Resource):
1189
2426
  """
1190
2427
  Mark all notifications as read
1191
2428
  ---
2429
+ description: Mark all notifications as read for the current user.
1192
2430
  tags:
1193
2431
  - User
1194
- description: Mark all notifications as read. It applies to all notifications of the current user.
1195
2432
  responses:
1196
2433
  200:
2434
+ description: Success object
1197
2435
  content:
1198
2436
  application/json:
1199
2437
  schema:
@@ -1201,6 +2439,7 @@ class MarkAllNotificationsAsReadResource(Resource):
1201
2439
  properties:
1202
2440
  success:
1203
2441
  type: boolean
2442
+ description: Operation success status
1204
2443
  example: true
1205
2444
  """
1206
2445
  user_service.mark_notifications_as_read()
@@ -1213,9 +2452,10 @@ class HasTaskSubscribedResource(Resource):
1213
2452
  """
1214
2453
  Check task subscription
1215
2454
  ---
2455
+ description: Check if the current user has subscribed to a specific
2456
+ task.
1216
2457
  tags:
1217
- - User
1218
- description: Return true if current user has subscribed to given task.
2458
+ - User
1219
2459
  parameters:
1220
2460
  - in: path
1221
2461
  name: task_id
@@ -1223,16 +2463,16 @@ class HasTaskSubscribedResource(Resource):
1223
2463
  schema:
1224
2464
  type: string
1225
2465
  format: uuid
2466
+ description: Task unique identifier
1226
2467
  example: a24a6ea4-ce75-4665-a070-57453082c25
1227
2468
  responses:
1228
2469
  200:
1229
- description: True if current user has subscribed to given task, False otherwise
2470
+ description: Subscription status for the task
1230
2471
  content:
1231
2472
  application/json:
1232
2473
  schema:
1233
2474
  type: boolean
1234
- 404:
1235
- description: Task not found
2475
+ example: true
1236
2476
  """
1237
2477
  return user_service.has_task_subscription(task_id)
1238
2478
 
@@ -1243,12 +2483,11 @@ class TaskSubscribeResource(Resource):
1243
2483
  """
1244
2484
  Subscribe to task
1245
2485
  ---
2486
+ description: Create a subscription entry for the current user and
2487
+ given task. When subscribed, the user receives notifications for all
2488
+ comments posted on the task.
1246
2489
  tags:
1247
2490
  - User
1248
- description: Create a subscription entry. It applies to given task and current user. When a user
1249
- subscribed, he gets notified everytime a comment is posted on the
1250
- task. When a user subscribes, he gets notified everytime a comment
1251
- is posted on the task.
1252
2491
  parameters:
1253
2492
  - in: path
1254
2493
  name: task_id
@@ -1256,16 +2495,41 @@ class TaskSubscribeResource(Resource):
1256
2495
  schema:
1257
2496
  type: string
1258
2497
  format: uuid
2498
+ description: Task unique identifier
1259
2499
  example: a24a6ea4-ce75-4665-a070-57453082c25
1260
2500
  responses:
1261
2501
  201:
1262
- description: Subscription entry created
2502
+ description: Subscription created successfully
1263
2503
  content:
1264
2504
  application/json:
1265
2505
  schema:
1266
2506
  type: object
1267
- 404:
1268
- description: Task not found
2507
+ properties:
2508
+ id:
2509
+ type: string
2510
+ format: uuid
2511
+ description: Subscription unique identifier
2512
+ example: b35b7fb5-df86-5776-b181-68564193d36
2513
+ person_id:
2514
+ type: string
2515
+ format: uuid
2516
+ description: Person identifier
2517
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2518
+ task_id:
2519
+ type: string
2520
+ format: uuid
2521
+ description: Task identifier
2522
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2523
+ created_at:
2524
+ type: string
2525
+ format: date-time
2526
+ description: Creation timestamp
2527
+ example: "2023-01-01T12:00:00Z"
2528
+ updated_at:
2529
+ type: string
2530
+ format: date-time
2531
+ description: Last update timestamp
2532
+ example: "2023-01-01T12:30:00Z"
1269
2533
  """
1270
2534
  return user_service.subscribe_to_task(task_id), 201
1271
2535
 
@@ -1276,9 +2540,11 @@ class TaskUnsubscribeResource(Resource):
1276
2540
  """
1277
2541
  Unsubscribe from task
1278
2542
  ---
2543
+ description: Remove the subscription entry for the current user and
2544
+ given task. The user will no longer receive notifications for this
2545
+ task.
1279
2546
  tags:
1280
2547
  - User
1281
- description: Remove the subscription entry matching given task and current user. The user will no longer receive notifications for this task.
1282
2548
  parameters:
1283
2549
  - in: path
1284
2550
  name: task_id
@@ -1286,12 +2552,11 @@ class TaskUnsubscribeResource(Resource):
1286
2552
  schema:
1287
2553
  type: string
1288
2554
  format: uuid
2555
+ description: Task unique identifier
1289
2556
  example: a24a6ea4-ce75-4665-a070-57453082c25
1290
2557
  responses:
1291
2558
  204:
1292
- description: Subscription entry removed
1293
- 404:
1294
- description: Task not found
2559
+ description: Subscription removed successfully
1295
2560
  """
1296
2561
  user_service.unsubscribe_from_task(task_id)
1297
2562
  return "", 204
@@ -1303,9 +2568,10 @@ class HasSequenceSubscribedResource(Resource):
1303
2568
  """
1304
2569
  Check sequence subscription
1305
2570
  ---
2571
+ description: Check if the current user has subscribed to a specific
2572
+ sequence and task type combination. Returns true if subscribed.
1306
2573
  tags:
1307
2574
  - User
1308
- description: Return true if current user has subscribed to given sequence and task type.
1309
2575
  parameters:
1310
2576
  - in: path
1311
2577
  name: sequence_id
@@ -1313,6 +2579,7 @@ class HasSequenceSubscribedResource(Resource):
1313
2579
  schema:
1314
2580
  type: string
1315
2581
  format: uuid
2582
+ description: Sequence unique identifier
1316
2583
  example: a24a6ea4-ce75-4665-a070-57453082c25
1317
2584
  - in: path
1318
2585
  name: task_type_id
@@ -1320,16 +2587,16 @@ class HasSequenceSubscribedResource(Resource):
1320
2587
  schema:
1321
2588
  type: string
1322
2589
  format: uuid
1323
- example: a24a6ea4-ce75-4665-a070-57453082c25
2590
+ description: Task type unique identifier
2591
+ example: b35b7fb5-df86-5776-b181-68564193d36
1324
2592
  responses:
1325
2593
  200:
1326
- description: True if current user has subscribed to given sequence and task type, False otherwise
2594
+ description: Subscription status for the sequence and task type
1327
2595
  content:
1328
2596
  application/json:
1329
2597
  schema:
1330
2598
  type: boolean
1331
- 404:
1332
- description: Sequence or task type not found
2599
+ example: true
1333
2600
  """
1334
2601
  return user_service.has_sequence_subscription(
1335
2602
  sequence_id, task_type_id
@@ -1342,9 +2609,12 @@ class SequenceSubscribeResource(Resource):
1342
2609
  """
1343
2610
  Subscribe to sequence
1344
2611
  ---
2612
+ description: Create a subscription entry for the current user, given
2613
+ sequence, and task type. When subscribed, the user receives
2614
+ notifications for all comments posted on tasks related to the
2615
+ sequence.
1345
2616
  tags:
1346
2617
  - User
1347
- description: Create a subscription entry for given sequence, task type and current user. When a user subscribes, he gets notified every time a comment is posted on tasks related to the sequence.
1348
2618
  parameters:
1349
2619
  - in: path
1350
2620
  name: sequence_id
@@ -1352,6 +2622,7 @@ class SequenceSubscribeResource(Resource):
1352
2622
  schema:
1353
2623
  type: string
1354
2624
  format: uuid
2625
+ description: Sequence unique identifier
1355
2626
  example: a24a6ea4-ce75-4665-a070-57453082c25
1356
2627
  - in: path
1357
2628
  name: task_type_id
@@ -1359,16 +2630,46 @@ class SequenceSubscribeResource(Resource):
1359
2630
  schema:
1360
2631
  type: string
1361
2632
  format: uuid
1362
- example: a24a6ea4-ce75-4665-a070-57453082c25
2633
+ description: Task type unique identifier
2634
+ example: b35b7fb5-df86-5776-b181-68564193d36
1363
2635
  responses:
1364
2636
  201:
1365
- description: Subscription entry created
2637
+ description: Subscription created successfully
1366
2638
  content:
1367
2639
  application/json:
1368
2640
  schema:
1369
2641
  type: object
1370
- 404:
1371
- description: Sequence or task type not found
2642
+ properties:
2643
+ id:
2644
+ type: string
2645
+ format: uuid
2646
+ description: Subscription unique identifier
2647
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2648
+ person_id:
2649
+ type: string
2650
+ format: uuid
2651
+ description: Person identifier
2652
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2653
+ sequence_id:
2654
+ type: string
2655
+ format: uuid
2656
+ description: Sequence identifier
2657
+ example: e68e0ie8-gi19-8009-e514-91897426g69
2658
+ task_type_id:
2659
+ type: string
2660
+ format: uuid
2661
+ description: Task type identifier
2662
+ example: f79f1jf9-hj20-9010-f625-a09008537h80
2663
+ created_at:
2664
+ type: string
2665
+ format: date-time
2666
+ description: Creation timestamp
2667
+ example: "2023-01-01T12:00:00Z"
2668
+ updated_at:
2669
+ type: string
2670
+ format: date-time
2671
+ description: Last update timestamp
2672
+ example: "2023-01-01T12:30:00Z"
1372
2673
  """
1373
2674
  subscription = user_service.subscribe_to_sequence(
1374
2675
  sequence_id, task_type_id
@@ -1382,9 +2683,11 @@ class SequenceUnsubscribeResource(Resource):
1382
2683
  """
1383
2684
  Unsubscribe from sequence
1384
2685
  ---
2686
+ description: Remove the subscription entry for the current user, given
2687
+ sequence, and task type. The user will no longer receive
2688
+ notifications for tasks related to this sequence.
1385
2689
  tags:
1386
2690
  - User
1387
- description: Remove a subscription entry for given sequence, task type and current user.
1388
2691
  parameters:
1389
2692
  - in: path
1390
2693
  name: sequence_id
@@ -1392,6 +2695,7 @@ class SequenceUnsubscribeResource(Resource):
1392
2695
  schema:
1393
2696
  type: string
1394
2697
  format: uuid
2698
+ description: Sequence unique identifier
1395
2699
  example: a24a6ea4-ce75-4665-a070-57453082c25
1396
2700
  - in: path
1397
2701
  name: task_type_id
@@ -1399,12 +2703,11 @@ class SequenceUnsubscribeResource(Resource):
1399
2703
  schema:
1400
2704
  type: string
1401
2705
  format: uuid
1402
- example: a24a6ea4-ce75-4665-a070-57453082c25
2706
+ description: Task type unique identifier
2707
+ example: b35b7fb5-df86-5776-b181-68564193d36
1403
2708
  responses:
1404
2709
  204:
1405
- description: Subscription entry removed
1406
- 404:
1407
- description: Sequence or task type not found
2710
+ description: Subscription removed successfully
1408
2711
  """
1409
2712
  user_service.unsubscribe_from_sequence(sequence_id, task_type_id)
1410
2713
  return "", 204
@@ -1416,9 +2719,10 @@ class SequenceSubscriptionsResource(Resource):
1416
2719
  """
1417
2720
  Get sequence subscriptions
1418
2721
  ---
2722
+ description: Retrieve list of sequence IDs to which the current user
2723
+ has subscribed for a given task type within a specific project.
1419
2724
  tags:
1420
2725
  - User
1421
- description: Return the list of sequence ids to which the current user has subscribed for given task type.
1422
2726
  parameters:
1423
2727
  - in: path
1424
2728
  name: project_id
@@ -1426,6 +2730,7 @@ class SequenceSubscriptionsResource(Resource):
1426
2730
  schema:
1427
2731
  type: string
1428
2732
  format: uuid
2733
+ description: Project unique identifier
1429
2734
  example: a24a6ea4-ce75-4665-a070-57453082c25
1430
2735
  - in: path
1431
2736
  name: task_type_id
@@ -1433,10 +2738,11 @@ class SequenceSubscriptionsResource(Resource):
1433
2738
  schema:
1434
2739
  type: string
1435
2740
  format: uuid
1436
- example: a24a6ea4-ce75-4665-a070-57453082c25
2741
+ description: Task type unique identifier
2742
+ example: b35b7fb5-df86-5776-b181-68564193d36
1437
2743
  responses:
1438
2744
  200:
1439
- description: List of sequence ids to which the current user has subscribed for given task type
2745
+ description: List of subscribed sequence IDs for the task type
1440
2746
  content:
1441
2747
  application/json:
1442
2748
  schema:
@@ -1444,8 +2750,7 @@ class SequenceSubscriptionsResource(Resource):
1444
2750
  items:
1445
2751
  type: string
1446
2752
  format: uuid
1447
- 404:
1448
- description: Project or task type not found
2753
+ example: c46c8gc6-eg97-6887-c292-79675204e47
1449
2754
  """
1450
2755
  return user_service.get_sequence_subscriptions(
1451
2756
  project_id, task_type_id
@@ -1462,9 +2767,10 @@ class TimeSpentsResource(Resource):
1462
2767
  """
1463
2768
  Get time spents
1464
2769
  ---
2770
+ description: Retrieve all time spent entries for the current user.
2771
+ Optionally accepts date range parameters to filter results.
1465
2772
  tags:
1466
2773
  - User
1467
- description: Get all time spents for the current user. Optionally can accept date range parameters.
1468
2774
  parameters:
1469
2775
  - in: query
1470
2776
  name: start_date
@@ -1472,25 +2778,60 @@ class TimeSpentsResource(Resource):
1472
2778
  schema:
1473
2779
  type: string
1474
2780
  format: date
1475
- example: "2022-07-12"
1476
2781
  description: Start date for filtering time spents
2782
+ example: "2023-01-01"
1477
2783
  - in: query
1478
2784
  name: end_date
1479
2785
  required: false
1480
2786
  schema:
1481
2787
  type: string
1482
2788
  format: date
1483
- example: "2022-07-12"
1484
2789
  description: End date for filtering time spents
2790
+ example: "2023-12-31"
1485
2791
  responses:
1486
2792
  200:
1487
- description: All time spents for the current user
2793
+ description: Time spent entries for the current user
1488
2794
  content:
1489
2795
  application/json:
1490
2796
  schema:
1491
2797
  type: array
1492
2798
  items:
1493
2799
  type: object
2800
+ properties:
2801
+ id:
2802
+ type: string
2803
+ format: uuid
2804
+ description: Time spent unique identifier
2805
+ example: a24a6ea4-ce75-4665-a070-57453082c25
2806
+ person_id:
2807
+ type: string
2808
+ format: uuid
2809
+ description: Person identifier
2810
+ example: b35b7fb5-df86-5776-b181-68564193d36
2811
+ task_id:
2812
+ type: string
2813
+ format: uuid
2814
+ description: Task identifier
2815
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2816
+ date:
2817
+ type: string
2818
+ format: date
2819
+ description: Date of time spent
2820
+ example: "2023-01-01"
2821
+ duration:
2822
+ type: number
2823
+ description: Duration in seconds
2824
+ example: 3600
2825
+ created_at:
2826
+ type: string
2827
+ format: date-time
2828
+ description: Creation timestamp
2829
+ example: "2023-01-01T12:00:00Z"
2830
+ updated_at:
2831
+ type: string
2832
+ format: date-time
2833
+ description: Last update timestamp
2834
+ example: "2023-01-01T12:30:00Z"
1494
2835
  400:
1495
2836
  description: Wrong date format
1496
2837
  """
@@ -1522,11 +2863,12 @@ class DateTimeSpentsResource(Resource):
1522
2863
 
1523
2864
  def get(self, date):
1524
2865
  """
1525
- Get time spents by date.
2866
+ Get time spents by date
1526
2867
  ---
2868
+ description: Retrieve time spent entries for the current user on a
2869
+ specific date. Returns all time entries for the given date.
1527
2870
  tags:
1528
2871
  - User
1529
- description: Get time spents on for current user and given date.
1530
2872
  parameters:
1531
2873
  - in: path
1532
2874
  name: date
@@ -1534,15 +2876,49 @@ class DateTimeSpentsResource(Resource):
1534
2876
  schema:
1535
2877
  type: string
1536
2878
  format: date
1537
- example: "2022-07-12"
1538
2879
  description: Date to get time spents for
2880
+ example: "2023-01-01"
1539
2881
  responses:
1540
2882
  200:
1541
- description: Time spents on for current user and given date
2883
+ description: Time spent entries for the current user on given date
1542
2884
  content:
1543
2885
  application/json:
1544
2886
  schema:
1545
2887
  type: object
2888
+ properties:
2889
+ date:
2890
+ type: string
2891
+ format: date
2892
+ description: Date of time spent
2893
+ example: "2023-01-01"
2894
+ total_duration:
2895
+ type: number
2896
+ description: Total duration in seconds
2897
+ example: 28800
2898
+ entries:
2899
+ type: array
2900
+ items:
2901
+ type: object
2902
+ properties:
2903
+ id:
2904
+ type: string
2905
+ format: uuid
2906
+ description: Time spent unique identifier
2907
+ example: a24a6ea4-ce75-4665-a070-57453082c25
2908
+ task_id:
2909
+ type: string
2910
+ format: uuid
2911
+ description: Task identifier
2912
+ example: b35b7fb5-df86-5776-b181-68564193d36
2913
+ duration:
2914
+ type: number
2915
+ description: Duration in seconds
2916
+ example: 3600
2917
+ created_at:
2918
+ type: string
2919
+ format: date-time
2920
+ description: Creation timestamp
2921
+ example: "2023-01-01T12:00:00Z"
1546
2922
  400:
1547
2923
  description: Wrong date format
1548
2924
  """
@@ -1559,11 +2935,12 @@ class TaskTimeSpentResource(Resource):
1559
2935
 
1560
2936
  def get(self, task_id, date):
1561
2937
  """
1562
- Get task time spent.
2938
+ Get task time spent
1563
2939
  ---
2940
+ description: Retrieve time spent entries for the current user on a
2941
+ specific task and date. Returns detailed time tracking information.
1564
2942
  tags:
1565
2943
  - User
1566
- description: Get time spents for current user and given date.
1567
2944
  parameters:
1568
2945
  - in: path
1569
2946
  name: task_id
@@ -1571,6 +2948,7 @@ class TaskTimeSpentResource(Resource):
1571
2948
  schema:
1572
2949
  type: string
1573
2950
  format: uuid
2951
+ description: Task unique identifier
1574
2952
  example: a24a6ea4-ce75-4665-a070-57453082c25
1575
2953
  - in: path
1576
2954
  name: date
@@ -1578,16 +2956,50 @@ class TaskTimeSpentResource(Resource):
1578
2956
  schema:
1579
2957
  type: string
1580
2958
  format: date
1581
- example: "2022-07-12"
2959
+ description: Date to get time spent for
2960
+ example: "2023-01-01"
1582
2961
  responses:
1583
2962
  200:
1584
- description: Time spents for current user and given date
2963
+ description: Time spent entry for the current user on given task and date
1585
2964
  content:
1586
2965
  application/json:
1587
2966
  schema:
1588
2967
  type: object
1589
- 404:
1590
- description: Wrong date format or task not found
2968
+ properties:
2969
+ id:
2970
+ type: string
2971
+ format: uuid
2972
+ description: Time spent unique identifier
2973
+ example: b35b7fb5-df86-5776-b181-68564193d36
2974
+ person_id:
2975
+ type: string
2976
+ format: uuid
2977
+ description: Person identifier
2978
+ example: c46c8gc6-eg97-6887-c292-79675204e47
2979
+ task_id:
2980
+ type: string
2981
+ format: uuid
2982
+ description: Task identifier
2983
+ example: d57d9hd7-fh08-7998-d403-80786315f58
2984
+ date:
2985
+ type: string
2986
+ format: date
2987
+ description: Date of time spent
2988
+ example: "2023-01-01"
2989
+ duration:
2990
+ type: number
2991
+ description: Duration in seconds
2992
+ example: 3600
2993
+ created_at:
2994
+ type: string
2995
+ format: date-time
2996
+ description: Creation timestamp
2997
+ example: "2023-01-01T12:00:00Z"
2998
+ updated_at:
2999
+ type: string
3000
+ format: date-time
3001
+ description: Last update timestamp
3002
+ example: "2023-01-01T12:30:00Z"
1591
3003
  """
1592
3004
  try:
1593
3005
  current_user = persons_service.get_current_user()
@@ -1604,9 +3016,10 @@ class DayOffResource(Resource):
1604
3016
  """
1605
3017
  Get day off
1606
3018
  ---
3019
+ description: Retrieve day off information for the current user on a
3020
+ specific date.
1607
3021
  tags:
1608
3022
  - User
1609
- description: Get day off object for current user and given date.
1610
3023
  parameters:
1611
3024
  - in: path
1612
3025
  name: date
@@ -1614,16 +3027,41 @@ class DayOffResource(Resource):
1614
3027
  schema:
1615
3028
  type: string
1616
3029
  format: date
1617
- example: "2022-07-12"
3030
+ description: Date to check for day off
3031
+ example: "2023-01-01"
1618
3032
  responses:
1619
3033
  200:
1620
- description: Day off object for current user and given date
3034
+ description: Day off object for the current user on given date
1621
3035
  content:
1622
3036
  application/json:
1623
3037
  schema:
1624
3038
  type: object
1625
- 404:
1626
- description: Wrong date format
3039
+ properties:
3040
+ id:
3041
+ type: string
3042
+ format: uuid
3043
+ description: Day off unique identifier
3044
+ example: a24a6ea4-ce75-4665-a070-57453082c25
3045
+ person_id:
3046
+ type: string
3047
+ format: uuid
3048
+ description: Person identifier
3049
+ example: b35b7fb5-df86-5776-b181-68564193d36
3050
+ date:
3051
+ type: string
3052
+ format: date
3053
+ description: Day off date
3054
+ example: "2023-01-01"
3055
+ created_at:
3056
+ type: string
3057
+ format: date-time
3058
+ description: Creation timestamp
3059
+ example: "2023-01-01T12:00:00Z"
3060
+ updated_at:
3061
+ type: string
3062
+ format: date-time
3063
+ description: Last update timestamp
3064
+ example: "2023-01-01T12:30:00Z"
1627
3065
  """
1628
3066
  try:
1629
3067
  current_user = persons_service.get_current_user()
@@ -1638,16 +3076,105 @@ class ContextResource(Resource):
1638
3076
  """
1639
3077
  Get context
1640
3078
  ---
3079
+ description: Retrieve context information required to properly run a
3080
+ full application connected to the API. Returns user, project, and
3081
+ system configuration data.
1641
3082
  tags:
1642
- - User
1643
- description: Return context required to properly run a full app connected to the API (like the Kitsu web client)
3083
+ - User
1644
3084
  responses:
1645
3085
  200:
1646
- description: Context to properly run a full app connected to the API
3086
+ description: Context information for running a full app connected to the API
1647
3087
  content:
1648
3088
  application/json:
1649
3089
  schema:
1650
3090
  type: object
3091
+ properties:
3092
+ user:
3093
+ type: object
3094
+ description: Current user information
3095
+ example: {"id": "uuid", "name": "John Doe"}
3096
+ projects:
3097
+ type: array
3098
+ items:
3099
+ type: object
3100
+ description: Available projects
3101
+ example: [{"id": "uuid", "name": "Project 1"}]
3102
+ departments:
3103
+ type: array
3104
+ items:
3105
+ type: object
3106
+ description: Available departments
3107
+ example: [{"id": "uuid", "name": "Animation"}]
3108
+ asset_types:
3109
+ type: array
3110
+ items:
3111
+ type: object
3112
+ description: Available asset types
3113
+ example: [{"id": "uuid", "name": "Character"}]
3114
+ task_types:
3115
+ type: array
3116
+ items:
3117
+ type: object
3118
+ description: Available task types
3119
+ example: [{"id": "uuid", "name": "Modeling"}]
3120
+ task_status:
3121
+ type: array
3122
+ items:
3123
+ type: object
3124
+ description: Available task statuses
3125
+ example: [{"id": "uuid", "name": "In Progress"}]
3126
+ custom_actions:
3127
+ type: array
3128
+ items:
3129
+ type: object
3130
+ description: Available custom actions
3131
+ example: [{"id": "uuid", "name": "Custom Action"}]
3132
+ status_automations:
3133
+ type: array
3134
+ items:
3135
+ type: object
3136
+ description: Available status automations
3137
+ example: [{"id": "uuid", "name": "Auto Status"}]
3138
+ studios:
3139
+ type: array
3140
+ items:
3141
+ type: object
3142
+ description: Available studios
3143
+ example: [{"id": "uuid", "name": "Studio Name"}]
3144
+ notification_count:
3145
+ type: integer
3146
+ description: Number of unread notifications
3147
+ example: 5
3148
+ persons:
3149
+ type: array
3150
+ items:
3151
+ type: object
3152
+ description: Available persons
3153
+ example: [{"id": "uuid", "name": "John Doe"}]
3154
+ project_status:
3155
+ type: array
3156
+ items:
3157
+ type: object
3158
+ description: Available project statuses
3159
+ example: [{"id": "uuid", "name": "Active"}]
3160
+ search_filters:
3161
+ type: array
3162
+ items:
3163
+ type: object
3164
+ description: Available search filters
3165
+ example: [{"id": "uuid", "name": "My Filter"}]
3166
+ search_filter_groups:
3167
+ type: array
3168
+ items:
3169
+ type: object
3170
+ description: Available search filter groups
3171
+ example: [{"id": "uuid", "name": "Filter Group"}]
3172
+ preview_background_files:
3173
+ type: array
3174
+ items:
3175
+ type: object
3176
+ description: Available preview background files
3177
+ example: [{"id": "uuid", "name": "background.jpg"}]
1651
3178
  """
1652
3179
  return user_service.get_context()
1653
3180
 
@@ -1658,14 +3185,13 @@ class ClearAvatarResource(Resource):
1658
3185
  """
1659
3186
  Clear avatar
1660
3187
  ---
3188
+ description: Set the has_avatar flag to false for the current user and
3189
+ remove the avatar file from storage. This action cannot be undone.
1661
3190
  tags:
1662
- - User
1663
- description: Set has_avatar flag to False for current user and remove its avatar file.
3191
+ - User
1664
3192
  responses:
1665
3193
  204:
1666
- description: Avatar file deleted
1667
- 404:
1668
- description: User not found
3194
+ description: Avatar file deleted successfully
1669
3195
  """
1670
3196
  user = persons_service.get_current_user()
1671
3197
  persons_service.clear_avatar(user["id"])
@@ -1678,9 +3204,10 @@ class ChatsResource(Resource):
1678
3204
  """
1679
3205
  Get chats
1680
3206
  ---
3207
+ description: Retrieve all chats where the current user is a
3208
+ participant. Returns list of chat conversations the user can access.
1681
3209
  tags:
1682
- - User
1683
- description: Return chats where user is participant
3210
+ - User
1684
3211
  responses:
1685
3212
  200:
1686
3213
  description: Chats where user is participant
@@ -1690,6 +3217,38 @@ class ChatsResource(Resource):
1690
3217
  type: array
1691
3218
  items:
1692
3219
  type: object
3220
+ properties:
3221
+ id:
3222
+ type: string
3223
+ format: uuid
3224
+ description: Chat unique identifier
3225
+ example: a24a6ea4-ce75-4665-a070-57453082c25
3226
+ entity_id:
3227
+ type: string
3228
+ format: uuid
3229
+ description: Entity identifier
3230
+ example: b35b7fb5-df86-5776-b181-68564193d36
3231
+ entity_type:
3232
+ type: string
3233
+ description: Entity type
3234
+ example: "Asset"
3235
+ participants:
3236
+ type: array
3237
+ items:
3238
+ type: string
3239
+ format: uuid
3240
+ description: List of participant person identifiers
3241
+ example: ["c46c8gc6-eg97-6887-c292-79675204e47"]
3242
+ created_at:
3243
+ type: string
3244
+ format: date-time
3245
+ description: Creation timestamp
3246
+ example: "2023-01-01T12:00:00Z"
3247
+ updated_at:
3248
+ type: string
3249
+ format: date-time
3250
+ description: Last update timestamp
3251
+ example: "2023-01-01T12:30:00Z"
1693
3252
  """
1694
3253
  user = persons_service.get_current_user()
1695
3254
  return chats_service.get_chats_for_person(user["id"])
@@ -1701,9 +3260,11 @@ class JoinChatResource(Resource):
1701
3260
  """
1702
3261
  Join chat
1703
3262
  ---
3263
+ description: Join a chat for a specific entity by adding the current
3264
+ user as a participant. The user will be listed as a participant in
3265
+ the chat.
1704
3266
  tags:
1705
- - User
1706
- description: Join chat for given entity (be listed as participant).
3267
+ - User
1707
3268
  parameters:
1708
3269
  - in: path
1709
3270
  name: entity_id
@@ -1711,16 +3272,47 @@ class JoinChatResource(Resource):
1711
3272
  schema:
1712
3273
  type: string
1713
3274
  format: uuid
3275
+ description: Entity unique identifier
1714
3276
  example: a24a6ea4-ce75-4665-a070-57453082c25
1715
3277
  responses:
1716
3278
  201:
1717
- description: Chat joined
3279
+ description: Chat joined successfully
1718
3280
  content:
1719
3281
  application/json:
1720
3282
  schema:
1721
3283
  type: object
1722
- 404:
1723
- description: Entity not found
3284
+ properties:
3285
+ id:
3286
+ type: string
3287
+ format: uuid
3288
+ description: Chat unique identifier
3289
+ example: b35b7fb5-df86-5776-b181-68564193d36
3290
+ entity_id:
3291
+ type: string
3292
+ format: uuid
3293
+ description: Entity identifier
3294
+ example: c46c8gc6-eg97-6887-c292-79675204e47
3295
+ entity_type:
3296
+ type: string
3297
+ description: Entity type
3298
+ example: "Asset"
3299
+ participants:
3300
+ type: array
3301
+ items:
3302
+ type: string
3303
+ format: uuid
3304
+ description: List of participant person identifiers
3305
+ example: ["d57d9hd7-fh08-7998-d403-80786315f58"]
3306
+ created_at:
3307
+ type: string
3308
+ format: date-time
3309
+ description: Creation timestamp
3310
+ example: "2023-01-01T12:00:00Z"
3311
+ updated_at:
3312
+ type: string
3313
+ format: date-time
3314
+ description: Last update timestamp
3315
+ example: "2023-01-01T12:30:00Z"
1724
3316
  """
1725
3317
  entity = entities_service.get_entity(entity_id)
1726
3318
  user_service.check_project_access(entity["project_id"])
@@ -1732,9 +3324,11 @@ class JoinChatResource(Resource):
1732
3324
  """
1733
3325
  Leave chat
1734
3326
  ---
3327
+ description: Leave a chat for a specific entity by removing the
3328
+ current user from participants. The user will no longer receive
3329
+ chat messages for this entity.
1735
3330
  tags:
1736
- - User
1737
- description: Leave chat for given entity (be removed from participants).
3331
+ - User
1738
3332
  parameters:
1739
3333
  - in: path
1740
3334
  name: entity_id
@@ -1742,12 +3336,11 @@ class JoinChatResource(Resource):
1742
3336
  schema:
1743
3337
  type: string
1744
3338
  format: uuid
3339
+ description: Entity unique identifier
1745
3340
  example: a24a6ea4-ce75-4665-a070-57453082c25
1746
3341
  responses:
1747
3342
  204:
1748
3343
  description: Chat left successfully
1749
- 404:
1750
- description: Entity not found
1751
3344
  """
1752
3345
  entity = entities_service.get_entity(entity_id)
1753
3346
  user_service.check_project_access(entity["project_id"])