zou 0.20.83__py3-none-any.whl → 0.20.85__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.
Files changed (103) hide show
  1. zou/__init__.py +1 -1
  2. zou/app/blueprints/comments/resources.py +32 -35
  3. zou/app/blueprints/concepts/resources.py +23 -8
  4. zou/app/blueprints/crud/asset_instance.py +272 -0
  5. zou/app/blueprints/crud/attachment_file.py +263 -0
  6. zou/app/blueprints/crud/base.py +176 -69
  7. zou/app/blueprints/crud/budget.py +278 -0
  8. zou/app/blueprints/crud/budget_entry.py +269 -0
  9. zou/app/blueprints/crud/chat.py +282 -0
  10. zou/app/blueprints/crud/chat_message.py +286 -0
  11. zou/app/blueprints/crud/comments.py +312 -1
  12. zou/app/blueprints/crud/custom_action.py +268 -0
  13. zou/app/blueprints/crud/day_off.py +298 -0
  14. zou/app/blueprints/crud/department.py +268 -0
  15. zou/app/blueprints/crud/entity.py +297 -3
  16. zou/app/blueprints/crud/entity_link.py +303 -0
  17. zou/app/blueprints/crud/entity_type.py +269 -0
  18. zou/app/blueprints/crud/event.py +197 -0
  19. zou/app/blueprints/crud/file_status.py +268 -0
  20. zou/app/blueprints/crud/hardware_item.py +268 -0
  21. zou/app/blueprints/crud/metadata_descriptor.py +312 -0
  22. zou/app/blueprints/crud/milestone.py +302 -1
  23. zou/app/blueprints/crud/news.py +285 -0
  24. zou/app/blueprints/crud/notification.py +287 -0
  25. zou/app/blueprints/crud/organisation.py +269 -0
  26. zou/app/blueprints/crud/output_file.py +34 -10
  27. zou/app/blueprints/crud/output_type.py +30 -10
  28. zou/app/blueprints/crud/person.py +407 -2
  29. zou/app/blueprints/crud/playlist.py +322 -4
  30. zou/app/blueprints/crud/plugin.py +269 -0
  31. zou/app/blueprints/crud/preview_background_file.py +272 -0
  32. zou/app/blueprints/crud/preview_file.py +280 -9
  33. zou/app/blueprints/crud/production_schedule_version.py +569 -0
  34. zou/app/blueprints/crud/project.py +440 -0
  35. zou/app/blueprints/crud/project_status.py +268 -0
  36. zou/app/blueprints/crud/salary_scale.py +185 -5
  37. zou/app/blueprints/crud/schedule_item.py +305 -0
  38. zou/app/blueprints/crud/search_filter.py +302 -0
  39. zou/app/blueprints/crud/search_filter_group.py +270 -0
  40. zou/app/blueprints/crud/software.py +30 -10
  41. zou/app/blueprints/crud/status_automation.py +296 -2
  42. zou/app/blueprints/crud/studio.py +268 -0
  43. zou/app/blueprints/crud/subscription.py +279 -0
  44. zou/app/blueprints/crud/task.py +325 -5
  45. zou/app/blueprints/crud/task_status.py +301 -0
  46. zou/app/blueprints/crud/task_type.py +283 -0
  47. zou/app/blueprints/crud/time_spent.py +327 -0
  48. zou/app/blueprints/crud/working_file.py +273 -10
  49. zou/app/blueprints/export/csv/assets.py +15 -5
  50. zou/app/blueprints/export/csv/base.py +12 -3
  51. zou/app/blueprints/export/csv/casting.py +32 -5
  52. zou/app/blueprints/export/csv/edits.py +15 -5
  53. zou/app/blueprints/export/csv/persons.py +24 -0
  54. zou/app/blueprints/export/csv/playlists.py +16 -5
  55. zou/app/blueprints/export/csv/projects.py +23 -0
  56. zou/app/blueprints/export/csv/shots.py +15 -5
  57. zou/app/blueprints/export/csv/task_types.py +23 -0
  58. zou/app/blueprints/export/csv/tasks.py +24 -0
  59. zou/app/blueprints/export/csv/time_spents.py +24 -0
  60. zou/app/blueprints/files/resources.py +928 -377
  61. zou/app/blueprints/news/resources.py +7 -5
  62. zou/app/blueprints/persons/resources.py +644 -271
  63. zou/app/blueprints/playlists/resources.py +154 -72
  64. zou/app/blueprints/previews/resources.py +473 -228
  65. zou/app/blueprints/projects/__init__.py +5 -0
  66. zou/app/blueprints/projects/resources.py +987 -420
  67. zou/app/blueprints/search/resources.py +44 -32
  68. zou/app/blueprints/shots/resources.py +1338 -88
  69. zou/app/blueprints/source/csv/assets.py +44 -6
  70. zou/app/blueprints/source/csv/casting.py +43 -6
  71. zou/app/blueprints/source/csv/edits.py +47 -9
  72. zou/app/blueprints/source/csv/persons.py +43 -4
  73. zou/app/blueprints/source/csv/shots.py +47 -6
  74. zou/app/blueprints/source/csv/task_type_estimations.py +95 -35
  75. zou/app/blueprints/source/kitsu.py +433 -11
  76. zou/app/blueprints/source/otio.py +215 -20
  77. zou/app/blueprints/source/shotgun/assets.py +146 -0
  78. zou/app/blueprints/source/shotgun/base.py +85 -14
  79. zou/app/blueprints/source/shotgun/episode.py +124 -0
  80. zou/app/blueprints/source/shotgun/import_errors.py +105 -14
  81. zou/app/blueprints/source/shotgun/notes.py +132 -0
  82. zou/app/blueprints/source/shotgun/person.py +163 -0
  83. zou/app/blueprints/source/shotgun/project.py +120 -0
  84. zou/app/blueprints/source/shotgun/scene.py +120 -0
  85. zou/app/blueprints/source/shotgun/sequence.py +134 -0
  86. zou/app/blueprints/source/shotgun/shot.py +166 -0
  87. zou/app/blueprints/source/shotgun/status.py +129 -0
  88. zou/app/blueprints/source/shotgun/steps.py +138 -0
  89. zou/app/blueprints/source/shotgun/tasks.py +199 -0
  90. zou/app/blueprints/source/shotgun/team.py +132 -0
  91. zou/app/blueprints/source/shotgun/versions.py +155 -0
  92. zou/app/blueprints/tasks/resources.py +1197 -308
  93. zou/app/models/metadata_descriptor.py +1 -0
  94. zou/app/services/persons_service.py +1 -1
  95. zou/app/services/projects_service.py +45 -1
  96. zou/app/services/time_spents_service.py +1 -1
  97. zou/migrations/versions/a1b2c3d4e5f6_add_position_to_metadata_descriptor.py +32 -0
  98. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/METADATA +18 -18
  99. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/RECORD +103 -102
  100. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/WHEEL +0 -0
  101. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/entry_points.txt +0 -0
  102. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/licenses/LICENSE +0 -0
  103. {zou-0.20.83.dist-info → zou-0.20.85.dist-info}/top_level.txt +0 -0
@@ -27,12 +27,12 @@ class ProjectPlaylistsResource(Resource, ArgsMixin):
27
27
  @jwt_required()
28
28
  def get(self, project_id):
29
29
  """
30
- Retrieve all playlists related to given project.
31
- Result is paginated and can be sorted.
30
+ Get project playlists
32
31
  ---
32
+ description: Retrieve all playlists related to given project. Result is
33
+ paginated and can be sorted.
33
34
  tags:
34
35
  - Playlists
35
- description: Result is paginated and can be sorted.
36
36
  parameters:
37
37
  - in: path
38
38
  name: project_id
@@ -40,18 +40,21 @@ class ProjectPlaylistsResource(Resource, ArgsMixin):
40
40
  schema:
41
41
  type: string
42
42
  format: uuid
43
+ description: Project unique identifier
43
44
  example: a24a6ea4-ce75-4665-a070-57453082c25
44
45
  - in: query
45
46
  name: page
46
47
  required: false
47
48
  schema:
48
49
  type: integer
50
+ description: Page number for pagination
49
51
  example: 1
50
52
  - in: query
51
53
  name: sort_by
52
54
  required: false
53
55
  schema:
54
56
  type: string
57
+ description: Field to sort by
55
58
  example: updated_at
56
59
  - in: query
57
60
  name: task_type_id
@@ -59,9 +62,10 @@ class ProjectPlaylistsResource(Resource, ArgsMixin):
59
62
  schema:
60
63
  type: string
61
64
  format: uuid
62
- example: a24a6ea4-ce75-4665-a070-57453082c25
65
+ description: Task type unique identifier to filter by
66
+ example: b35b7fb5-df86-5776-b181-68564193d36
63
67
  responses:
64
- '200':
68
+ 200:
65
69
  description: All playlists related to given project
66
70
  content:
67
71
  application/json:
@@ -73,11 +77,17 @@ class ProjectPlaylistsResource(Resource, ArgsMixin):
73
77
  id:
74
78
  type: string
75
79
  format: uuid
80
+ description: Playlist unique identifier
81
+ example: a24a6ea4-ce75-4665-a070-57453082c25
76
82
  name:
77
83
  type: string
84
+ description: Playlist name
85
+ example: "Review Playlist"
78
86
  project_id:
79
87
  type: string
80
88
  format: uuid
89
+ description: Project unique identifier
90
+ example: b35b7fb5-df86-5776-b181-68564193d36
81
91
  """
82
92
  user_service.block_access_to_vendor()
83
93
  user_service.check_project_access(project_id)
@@ -98,12 +108,13 @@ class EpisodePlaylistsResource(Resource, ArgsMixin):
98
108
  @jwt_required()
99
109
  def get(self, project_id, episode_id):
100
110
  """
101
- Retrieve all playlists related to given episode.
102
- The full list is returned because the number of playlists in an episode is not that big.
111
+ Get episode playlists
103
112
  ---
113
+ description: Retrieve all playlists related to given episode. The full
114
+ list is returned because the number of playlists in an episode is not
115
+ that big.
104
116
  tags:
105
117
  - Playlists
106
- description: The full list is returned because the number of playlists in an episode is not that big.
107
118
  parameters:
108
119
  - in: path
109
120
  name: project_id
@@ -111,6 +122,7 @@ class EpisodePlaylistsResource(Resource, ArgsMixin):
111
122
  schema:
112
123
  type: string
113
124
  format: uuid
125
+ description: Project unique identifier
114
126
  example: a24a6ea4-ce75-4665-a070-57453082c25
115
127
  - in: path
116
128
  name: episode_id
@@ -118,9 +130,10 @@ class EpisodePlaylistsResource(Resource, ArgsMixin):
118
130
  schema:
119
131
  type: string
120
132
  format: uuid
133
+ description: Episode unique identifier or special value (main, all)
121
134
  example: a24a6ea4-ce75-4665-a070-57453082c25
122
135
  responses:
123
- '200':
136
+ 200:
124
137
  description: All playlists related to given episode
125
138
  content:
126
139
  application/json:
@@ -132,11 +145,17 @@ class EpisodePlaylistsResource(Resource, ArgsMixin):
132
145
  id:
133
146
  type: string
134
147
  format: uuid
148
+ description: Playlist unique identifier
149
+ example: a24a6ea4-ce75-4665-a070-57453082c25
135
150
  name:
136
151
  type: string
152
+ description: Playlist name
153
+ example: "Review Playlist"
137
154
  episode_id:
138
155
  type: string
139
156
  format: uuid
157
+ description: Episode unique identifier
158
+ example: b35b7fb5-df86-5776-b181-68564193d36
140
159
  """
141
160
  user_service.block_access_to_vendor()
142
161
  user_service.check_project_access(project_id)
@@ -160,8 +179,10 @@ class ProjectPlaylistResource(Resource):
160
179
  @jwt_required()
161
180
  def get(self, project_id, playlist_id):
162
181
  """
163
- Retrieve a specific playlist by ID.
182
+ Get playlist
164
183
  ---
184
+ description: Retrieve a specific playlist by ID with preview file
185
+ revisions.
165
186
  tags:
166
187
  - Playlists
167
188
  parameters:
@@ -171,6 +192,7 @@ class ProjectPlaylistResource(Resource):
171
192
  schema:
172
193
  type: string
173
194
  format: uuid
195
+ description: Project unique identifier
174
196
  example: a24a6ea4-ce75-4665-a070-57453082c25
175
197
  - in: path
176
198
  name: playlist_id
@@ -178,9 +200,10 @@ class ProjectPlaylistResource(Resource):
178
200
  schema:
179
201
  type: string
180
202
  format: uuid
181
- example: a24a6ea4-ce75-4665-a070-57453082c25
203
+ description: Playlist unique identifier
204
+ example: b35b7fb5-df86-5776-b181-68564193d36
182
205
  responses:
183
- '200':
206
+ 200:
184
207
  description: Playlist details with preview file revisions
185
208
  content:
186
209
  application/json:
@@ -190,17 +213,23 @@ class ProjectPlaylistResource(Resource):
190
213
  id:
191
214
  type: string
192
215
  format: uuid
216
+ description: Playlist unique identifier
217
+ example: a24a6ea4-ce75-4665-a070-57453082c25
193
218
  name:
194
219
  type: string
220
+ description: Playlist name
221
+ example: "Review Playlist"
195
222
  project_id:
196
223
  type: string
197
224
  format: uuid
225
+ description: Project unique identifier
226
+ example: b35b7fb5-df86-5776-b181-68564193d36
198
227
  shots:
199
228
  type: array
229
+ description: List of shots with preview file revisions
200
230
  items:
201
231
  type: object
202
- '404':
203
- description: Playlist not found
232
+ example: [{"id": "uuid", "preview_file_id": "uuid"}]
204
233
  """
205
234
  user_service.block_access_to_vendor()
206
235
  user_service.check_project_access(project_id)
@@ -214,11 +243,13 @@ class EntityPreviewsResource(Resource):
214
243
  @jwt_required()
215
244
  def get(self, entity_id):
216
245
  """
217
- Retrieve all previews related to a given entity.
246
+ Get entity previews
218
247
  ---
248
+ description: Retrieve all previews related to a given entity. It sends
249
+ them as a dict. Keys are related task type ids and values are arrays
250
+ of preview for this task type.
219
251
  tags:
220
252
  - Playlists
221
- description: It sends them as a dict. Keys are related task type ids and values are arrays of preview for this task type.
222
253
  parameters:
223
254
  - in: path
224
255
  name: entity_id
@@ -226,10 +257,11 @@ class EntityPreviewsResource(Resource):
226
257
  schema:
227
258
  type: string
228
259
  format: uuid
260
+ description: Entity unique identifier
229
261
  example: a24a6ea4-ce75-4665-a070-57453082c25
230
262
  responses:
231
- '200':
232
- description: All previews related to given entity
263
+ 200:
264
+ description: All previews related to given entity grouped by task type
233
265
  content:
234
266
  application/json:
235
267
  schema:
@@ -242,10 +274,12 @@ class EntityPreviewsResource(Resource):
242
274
  id:
243
275
  type: string
244
276
  format: uuid
277
+ description: Preview file unique identifier
278
+ example: a24a6ea4-ce75-4665-a070-57453082c25
245
279
  name:
246
280
  type: string
247
- '404':
248
- description: Entity not found
281
+ description: Preview file name
282
+ example: "preview_v001.png"
249
283
  """
250
284
  entity = entities_service.get_entity(entity_id)
251
285
  user_service.check_project_access(entity["project_id"])
@@ -257,8 +291,9 @@ class PlaylistDownloadResource(Resource):
257
291
  @jwt_required()
258
292
  def get(self, playlist_id, build_job_id):
259
293
  """
260
- Download given playlist build as .mp4.
294
+ Download playlist build
261
295
  ---
296
+ description: Download given playlist build as MP4 file.
262
297
  tags:
263
298
  - Playlists
264
299
  parameters:
@@ -268,6 +303,7 @@ class PlaylistDownloadResource(Resource):
268
303
  schema:
269
304
  type: string
270
305
  format: uuid
306
+ description: Playlist unique identifier
271
307
  example: a24a6ea4-ce75-4665-a070-57453082c25
272
308
  - in: path
273
309
  name: build_job_id
@@ -275,16 +311,17 @@ class PlaylistDownloadResource(Resource):
275
311
  schema:
276
312
  type: string
277
313
  format: uuid
278
- example: a24a6ea4-ce75-4665-a070-57453082c25
314
+ description: Build job unique identifier
315
+ example: b35b7fb5-df86-5776-b181-68564193d36
279
316
  responses:
280
- '200':
281
- description: Given playlist build downloaded as .mp4
317
+ 200:
318
+ description: Playlist build downloaded as MP4 file
282
319
  content:
283
320
  video/mp4:
284
321
  schema:
285
322
  type: string
286
323
  format: binary
287
- '400':
324
+ 400:
288
325
  description: Build not finished, need to retry later
289
326
  content:
290
327
  application/json:
@@ -293,10 +330,12 @@ class PlaylistDownloadResource(Resource):
293
330
  properties:
294
331
  error:
295
332
  type: boolean
333
+ description: Error flag
334
+ example: true
296
335
  message:
297
336
  type: string
298
- '404':
299
- description: Playlist or build job not found
337
+ description: Error message
338
+ example: "Build is not finished"
300
339
  """
301
340
  user_service.block_access_to_vendor()
302
341
  playlist = playlists_service.get_playlist(playlist_id)
@@ -349,8 +388,10 @@ class BuildPlaylistMovieResource(Resource, ArgsMixin):
349
388
  @jwt_required()
350
389
  def get(self, playlist_id):
351
390
  """
352
- Build given playlist as mp4 movie.
391
+ Build playlist movie
353
392
  ---
393
+ description: Build given playlist as MP4 movie. Starts a build job that
394
+ processes the playlist shots into a video file.
354
395
  tags:
355
396
  - Playlists
356
397
  parameters:
@@ -360,16 +401,18 @@ class BuildPlaylistMovieResource(Resource, ArgsMixin):
360
401
  schema:
361
402
  type: string
362
403
  format: uuid
404
+ description: Playlist unique identifier
363
405
  example: a24a6ea4-ce75-4665-a070-57453082c25
364
406
  - in: query
365
407
  name: full
366
408
  required: false
367
409
  schema:
368
410
  type: boolean
411
+ description: Whether to build full quality movie
369
412
  example: true
370
413
  responses:
371
- '200':
372
- description: Given playlist built as mp4 movie
414
+ 200:
415
+ description: Build job created for playlist movie
373
416
  content:
374
417
  application/json:
375
418
  schema:
@@ -378,13 +421,17 @@ class BuildPlaylistMovieResource(Resource, ArgsMixin):
378
421
  id:
379
422
  type: string
380
423
  format: uuid
424
+ description: Build job unique identifier
425
+ example: a24a6ea4-ce75-4665-a070-57453082c25
381
426
  status:
382
427
  type: string
428
+ description: Build job status
429
+ example: "pending"
383
430
  created_at:
384
431
  type: string
385
432
  format: date-time
386
- '404':
387
- description: Playlist not found
433
+ description: Build job creation timestamp
434
+ example: "2022-07-12T10:30:00Z"
388
435
  """
389
436
  playlist = playlists_service.get_playlist(playlist_id)
390
437
  user_service.check_manager_project_access(playlist["project_id"])
@@ -435,8 +482,10 @@ class PlaylistZipDownloadResource(Resource):
435
482
  @jwt_required()
436
483
  def get(self, playlist_id):
437
484
  """
438
- Download given playlist as zip.
485
+ Download playlist zip
439
486
  ---
487
+ description: Download given playlist as ZIP file containing all preview
488
+ files.
440
489
  tags:
441
490
  - Playlists
442
491
  parameters:
@@ -446,17 +495,16 @@ class PlaylistZipDownloadResource(Resource):
446
495
  schema:
447
496
  type: string
448
497
  format: uuid
498
+ description: Playlist unique identifier
449
499
  example: a24a6ea4-ce75-4665-a070-57453082c25
450
500
  responses:
451
- '200':
452
- description: Given playlist downloaded as zip
501
+ 200:
502
+ description: Playlist downloaded as ZIP file
453
503
  content:
454
504
  application/zip:
455
505
  schema:
456
506
  type: string
457
507
  format: binary
458
- '404':
459
- description: Playlist not found
460
508
  """
461
509
  user_service.block_access_to_vendor()
462
510
  playlist = playlists_service.get_playlist(playlist_id)
@@ -496,8 +544,9 @@ class BuildJobResource(Resource):
496
544
  @jwt_required()
497
545
  def get(self, playlist_id, build_job_id):
498
546
  """
499
- Retrieve build job related to given playlist.
547
+ Get build job
500
548
  ---
549
+ description: Retrieve build job related to given playlist.
501
550
  tags:
502
551
  - Playlists
503
552
  parameters:
@@ -507,6 +556,7 @@ class BuildJobResource(Resource):
507
556
  schema:
508
557
  type: string
509
558
  format: uuid
559
+ description: Playlist unique identifier
510
560
  example: a24a6ea4-ce75-4665-a070-57453082c25
511
561
  - in: path
512
562
  name: build_job_id
@@ -514,9 +564,10 @@ class BuildJobResource(Resource):
514
564
  schema:
515
565
  type: string
516
566
  format: uuid
517
- example: a24a6ea4-ce75-4665-a070-57453082c25
567
+ description: Build job unique identifier
568
+ example: b35b7fb5-df86-5776-b181-68564193d36
518
569
  responses:
519
- '200':
570
+ 200:
520
571
  description: Build job related to given playlist
521
572
  content:
522
573
  application/json:
@@ -526,13 +577,17 @@ class BuildJobResource(Resource):
526
577
  id:
527
578
  type: string
528
579
  format: uuid
580
+ description: Build job unique identifier
581
+ example: a24a6ea4-ce75-4665-a070-57453082c25
529
582
  status:
530
583
  type: string
584
+ description: Build job status
585
+ example: "succeeded"
531
586
  created_at:
532
587
  type: string
533
588
  format: date-time
534
- '404':
535
- description: Playlist or build job not found
589
+ description: Build job creation timestamp
590
+ example: "2022-07-12T10:30:00Z"
536
591
  """
537
592
  user_service.block_access_to_vendor()
538
593
  playlist = playlists_service.get_playlist(playlist_id)
@@ -542,8 +597,9 @@ class BuildJobResource(Resource):
542
597
  @jwt_required()
543
598
  def delete(self, playlist_id, build_job_id):
544
599
  """
545
- Remove given build job related to given playlist.
600
+ Delete build job
546
601
  ---
602
+ description: Remove given build job related to given playlist.
547
603
  tags:
548
604
  - Playlists
549
605
  parameters:
@@ -553,6 +609,7 @@ class BuildJobResource(Resource):
553
609
  schema:
554
610
  type: string
555
611
  format: uuid
612
+ description: Playlist unique identifier
556
613
  example: a24a6ea4-ce75-4665-a070-57453082c25
557
614
  - in: path
558
615
  name: build_job_id
@@ -560,12 +617,11 @@ class BuildJobResource(Resource):
560
617
  schema:
561
618
  type: string
562
619
  format: uuid
563
- example: a24a6ea4-ce75-4665-a070-57453082c25
620
+ description: Build job unique identifier
621
+ example: b35b7fb5-df86-5776-b181-68564193d36
564
622
  responses:
565
- '204':
566
- description: Given build job removed
567
- '404':
568
- description: Playlist or build job not found
623
+ 204:
624
+ description: Build job removed successfully
569
625
  """
570
626
  user_service.block_access_to_vendor()
571
627
  playlist = playlists_service.get_playlist(playlist_id)
@@ -579,12 +635,12 @@ class ProjectBuildJobsResource(Resource):
579
635
  @jwt_required()
580
636
  def get(self, project_id):
581
637
  """
582
- Retrieve all build jobs related to given project.
583
- It's mainly used for synchronisation purpose.
638
+ Get project build jobs
584
639
  ---
640
+ description: Retrieve all build jobs related to given project. It's
641
+ mainly used for synchronisation purpose.
585
642
  tags:
586
643
  - Playlists
587
- description: It's mainly used for synchronisation purpose.
588
644
  parameters:
589
645
  - in: path
590
646
  name: project_id
@@ -592,9 +648,10 @@ class ProjectBuildJobsResource(Resource):
592
648
  schema:
593
649
  type: string
594
650
  format: uuid
651
+ description: Project unique identifier
595
652
  example: a24a6ea4-ce75-4665-a070-57453082c25
596
653
  responses:
597
- '200':
654
+ 200:
598
655
  description: All build jobs related to given project
599
656
  content:
600
657
  application/json:
@@ -606,13 +663,17 @@ class ProjectBuildJobsResource(Resource):
606
663
  id:
607
664
  type: string
608
665
  format: uuid
666
+ description: Build job unique identifier
667
+ example: a24a6ea4-ce75-4665-a070-57453082c25
609
668
  status:
610
669
  type: string
670
+ description: Build job status
671
+ example: "succeeded"
611
672
  created_at:
612
673
  type: string
613
674
  format: date-time
614
- '404':
615
- description: Project not found
675
+ description: Build job creation timestamp
676
+ example: "2022-07-12T10:30:00Z"
616
677
  """
617
678
  permissions.check_admin_permissions()
618
679
  projects_service.get_project(project_id)
@@ -624,11 +685,12 @@ class ProjectAllPlaylistsResource(Resource, ArgsMixin):
624
685
  @jwt_required()
625
686
  def get(self, project_id):
626
687
  """
627
- Retrieve all playlists related to given project.
688
+ Get all project playlists
628
689
  ---
690
+ description: Retrieve all playlists related to given project. It's
691
+ mainly used for synchronisation purpose.
629
692
  tags:
630
693
  - Playlists
631
- description: It's mainly used for synchronisation purpose.
632
694
  parameters:
633
695
  - in: path
634
696
  name: project_id
@@ -636,9 +698,10 @@ class ProjectAllPlaylistsResource(Resource, ArgsMixin):
636
698
  schema:
637
699
  type: string
638
700
  format: uuid
701
+ description: Project unique identifier
639
702
  example: a24a6ea4-ce75-4665-a070-57453082c25
640
703
  responses:
641
- '200':
704
+ 200:
642
705
  description: All playlists related to given project
643
706
  content:
644
707
  application/json:
@@ -650,13 +713,17 @@ class ProjectAllPlaylistsResource(Resource, ArgsMixin):
650
713
  id:
651
714
  type: string
652
715
  format: uuid
716
+ description: Playlist unique identifier
717
+ example: a24a6ea4-ce75-4665-a070-57453082c25
653
718
  name:
654
719
  type: string
720
+ description: Playlist name
721
+ example: "Review Playlist"
655
722
  project_id:
656
723
  type: string
657
724
  format: uuid
658
- '404':
659
- description: Project not found
725
+ description: Project unique identifier
726
+ example: b35b7fb5-df86-5776-b181-68564193d36
660
727
  """
661
728
  permissions.check_admin_permissions()
662
729
  projects_service.get_project(project_id)
@@ -669,11 +736,12 @@ class TempPlaylistResource(Resource, ArgsMixin):
669
736
  @jwt_required()
670
737
  def post(self, project_id):
671
738
  """
672
- Generate a temporary playlist from task IDs.
739
+ Generate temp playlist
673
740
  ---
741
+ description: Generate a temporary playlist from task IDs. It's mainly
742
+ used for synchronisation purpose.
674
743
  tags:
675
744
  - Playlists
676
- description: It's mainly used for synchronisation purpose.
677
745
  parameters:
678
746
  - in: path
679
747
  name: project_id
@@ -681,7 +749,15 @@ class TempPlaylistResource(Resource, ArgsMixin):
681
749
  schema:
682
750
  type: string
683
751
  format: uuid
752
+ description: Project unique identifier
684
753
  example: a24a6ea4-ce75-4665-a070-57453082c25
754
+ - in: query
755
+ name: sort
756
+ required: false
757
+ schema:
758
+ type: boolean
759
+ description: Whether to sort the playlist
760
+ example: true
685
761
  requestBody:
686
762
  required: true
687
763
  content:
@@ -696,9 +772,10 @@ class TempPlaylistResource(Resource, ArgsMixin):
696
772
  items:
697
773
  type: string
698
774
  format: uuid
775
+ description: List of task unique identifiers
699
776
  example: ["a24a6ea4-ce75-4665-a070-57453082c25"]
700
777
  responses:
701
- '200':
778
+ 200:
702
779
  description: Temporary playlist generated
703
780
  content:
704
781
  application/json:
@@ -710,12 +787,14 @@ class TempPlaylistResource(Resource, ArgsMixin):
710
787
  id:
711
788
  type: string
712
789
  format: uuid
790
+ description: Preview file unique identifier
791
+ example: a24a6ea4-ce75-4665-a070-57453082c25
713
792
  name:
714
793
  type: string
715
- '400':
794
+ description: Preview file name
795
+ example: "preview_v001.png"
796
+ 400:
716
797
  description: Invalid task IDs
717
- '404':
718
- description: Project not found
719
798
  """
720
799
  user_service.check_project_access(project_id)
721
800
  task_ids = request.json.get("task_ids", [])
@@ -730,9 +809,9 @@ class NotifyClientsResource(Resource, ArgsMixin):
730
809
  @jwt_required()
731
810
  def post(self, playlist_id):
732
811
  """
733
- Notify clients that given playlist is ready.
734
-
812
+ Notify clients playlist ready
735
813
  ---
814
+ description: Notify clients that given playlist is ready for review.
736
815
  tags:
737
816
  - Playlists
738
817
  parameters:
@@ -742,9 +821,10 @@ class NotifyClientsResource(Resource, ArgsMixin):
742
821
  schema:
743
822
  type: string
744
823
  format: uuid
824
+ description: Playlist unique identifier
745
825
  example: a24a6ea4-ce75-4665-a070-57453082c25
746
826
  requestBody:
747
- required: true
827
+ required: false
748
828
  content:
749
829
  application/json:
750
830
  schema:
@@ -753,10 +833,11 @@ class NotifyClientsResource(Resource, ArgsMixin):
753
833
  studio_id:
754
834
  type: string
755
835
  format: uuid
756
- example: a24a6ea4-ce75-4665-a070-57453082c25
836
+ description: Studio unique identifier to notify
837
+ example: b35b7fb5-df86-5776-b181-68564193d36
757
838
  responses:
758
- '200':
759
- description: Clients notified
839
+ 200:
840
+ description: Clients notified successfully
760
841
  content:
761
842
  application/json:
762
843
  schema:
@@ -764,7 +845,8 @@ class NotifyClientsResource(Resource, ArgsMixin):
764
845
  properties:
765
846
  status:
766
847
  type: string
767
- example: success
848
+ description: Notification status
849
+ example: "success"
768
850
  """
769
851
  studio_id = request.json.get("studio_id", None)
770
852
  playlist = playlists_service.get_playlist(playlist_id)