zou 0.20.82__py3-none-any.whl → 0.20.84__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.
- zou/__init__.py +1 -1
- zou/app/blueprints/assets/resources.py +1060 -153
- zou/app/blueprints/auth/resources.py +368 -238
- zou/app/blueprints/breakdown/resources.py +584 -94
- zou/app/blueprints/chats/resources.py +176 -37
- zou/app/blueprints/comments/resources.py +409 -150
- zou/app/blueprints/concepts/resources.py +443 -63
- zou/app/blueprints/crud/asset_instance.py +272 -0
- zou/app/blueprints/crud/attachment_file.py +263 -0
- zou/app/blueprints/crud/base.py +176 -69
- zou/app/blueprints/crud/budget.py +278 -0
- zou/app/blueprints/crud/budget_entry.py +269 -0
- zou/app/blueprints/crud/chat.py +282 -0
- zou/app/blueprints/crud/chat_message.py +286 -0
- zou/app/blueprints/crud/comments.py +312 -1
- zou/app/blueprints/crud/custom_action.py +268 -0
- zou/app/blueprints/crud/day_off.py +298 -0
- zou/app/blueprints/crud/department.py +268 -0
- zou/app/blueprints/crud/entity.py +297 -3
- zou/app/blueprints/crud/entity_link.py +303 -0
- zou/app/blueprints/crud/entity_type.py +269 -0
- zou/app/blueprints/crud/event.py +197 -0
- zou/app/blueprints/crud/file_status.py +268 -0
- zou/app/blueprints/crud/hardware_item.py +268 -0
- zou/app/blueprints/crud/metadata_descriptor.py +312 -0
- zou/app/blueprints/crud/milestone.py +302 -1
- zou/app/blueprints/crud/news.py +285 -0
- zou/app/blueprints/crud/notification.py +287 -0
- zou/app/blueprints/crud/organisation.py +269 -0
- zou/app/blueprints/crud/output_file.py +34 -10
- zou/app/blueprints/crud/output_type.py +30 -10
- zou/app/blueprints/crud/person.py +407 -2
- zou/app/blueprints/crud/playlist.py +322 -4
- zou/app/blueprints/crud/plugin.py +269 -0
- zou/app/blueprints/crud/preview_background_file.py +272 -0
- zou/app/blueprints/crud/preview_file.py +280 -9
- zou/app/blueprints/crud/production_schedule_version.py +569 -0
- zou/app/blueprints/crud/project.py +440 -0
- zou/app/blueprints/crud/project_status.py +268 -0
- zou/app/blueprints/crud/salary_scale.py +185 -5
- zou/app/blueprints/crud/schedule_item.py +305 -0
- zou/app/blueprints/crud/search_filter.py +302 -0
- zou/app/blueprints/crud/search_filter_group.py +270 -0
- zou/app/blueprints/crud/software.py +30 -10
- zou/app/blueprints/crud/status_automation.py +296 -2
- zou/app/blueprints/crud/studio.py +268 -0
- zou/app/blueprints/crud/subscription.py +279 -0
- zou/app/blueprints/crud/task.py +325 -5
- zou/app/blueprints/crud/task_status.py +301 -0
- zou/app/blueprints/crud/task_type.py +283 -0
- zou/app/blueprints/crud/time_spent.py +327 -0
- zou/app/blueprints/crud/working_file.py +273 -10
- zou/app/blueprints/departments/resources.py +302 -68
- zou/app/blueprints/edits/resources.py +651 -81
- zou/app/blueprints/entities/resources.py +104 -39
- zou/app/blueprints/events/resources.py +96 -8
- zou/app/blueprints/export/csv/assets.py +15 -5
- zou/app/blueprints/export/csv/base.py +12 -3
- zou/app/blueprints/export/csv/casting.py +32 -5
- zou/app/blueprints/export/csv/edits.py +15 -5
- zou/app/blueprints/export/csv/persons.py +24 -0
- zou/app/blueprints/export/csv/playlists.py +16 -5
- zou/app/blueprints/export/csv/projects.py +23 -0
- zou/app/blueprints/export/csv/shots.py +15 -5
- zou/app/blueprints/export/csv/task_types.py +23 -0
- zou/app/blueprints/export/csv/tasks.py +24 -0
- zou/app/blueprints/export/csv/time_spents.py +24 -0
- zou/app/blueprints/files/resources.py +928 -377
- zou/app/blueprints/index/resources.py +49 -42
- zou/app/blueprints/news/resources.py +47 -27
- zou/app/blueprints/persons/resources.py +644 -271
- zou/app/blueprints/playlists/resources.py +154 -72
- zou/app/blueprints/previews/resources.py +473 -228
- zou/app/blueprints/projects/__init__.py +5 -0
- zou/app/blueprints/projects/resources.py +987 -420
- zou/app/blueprints/search/resources.py +44 -32
- zou/app/blueprints/shots/resources.py +1338 -88
- zou/app/blueprints/source/csv/assets.py +44 -6
- zou/app/blueprints/source/csv/casting.py +43 -6
- zou/app/blueprints/source/csv/edits.py +47 -9
- zou/app/blueprints/source/csv/persons.py +43 -4
- zou/app/blueprints/source/csv/shots.py +47 -6
- zou/app/blueprints/source/csv/task_type_estimations.py +95 -35
- zou/app/blueprints/source/kitsu.py +433 -11
- zou/app/blueprints/source/otio.py +215 -20
- zou/app/blueprints/source/shotgun/assets.py +146 -0
- zou/app/blueprints/source/shotgun/base.py +85 -14
- zou/app/blueprints/source/shotgun/episode.py +124 -0
- zou/app/blueprints/source/shotgun/import_errors.py +105 -14
- zou/app/blueprints/source/shotgun/notes.py +132 -0
- zou/app/blueprints/source/shotgun/person.py +163 -0
- zou/app/blueprints/source/shotgun/project.py +120 -0
- zou/app/blueprints/source/shotgun/scene.py +120 -0
- zou/app/blueprints/source/shotgun/sequence.py +134 -0
- zou/app/blueprints/source/shotgun/shot.py +166 -0
- zou/app/blueprints/source/shotgun/status.py +129 -0
- zou/app/blueprints/source/shotgun/steps.py +138 -0
- zou/app/blueprints/source/shotgun/tasks.py +199 -0
- zou/app/blueprints/source/shotgun/team.py +132 -0
- zou/app/blueprints/source/shotgun/versions.py +155 -0
- zou/app/blueprints/tasks/resources.py +1197 -308
- zou/app/blueprints/user/resources.py +1808 -215
- zou/app/models/metadata_descriptor.py +1 -0
- zou/app/services/persons_service.py +1 -1
- zou/app/services/projects_service.py +45 -1
- zou/app/services/time_spents_service.py +1 -1
- zou/app/swagger.py +100 -27
- zou/migrations/versions/a1b2c3d4e5f6_add_position_to_metadata_descriptor.py +32 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/METADATA +18 -18
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/RECORD +114 -113
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/WHEEL +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/entry_points.txt +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/licenses/LICENSE +0 -0
- {zou-0.20.82.dist-info → zou-0.20.84.dist-info}/top_level.txt +0 -0
|
@@ -18,26 +18,58 @@ class CastingResource(Resource):
|
|
|
18
18
|
@jwt_required()
|
|
19
19
|
def get(self, project_id, entity_id):
|
|
20
20
|
"""
|
|
21
|
-
|
|
21
|
+
Get entity casting
|
|
22
22
|
---
|
|
23
|
+
description: Retrieve the casting information for a specific entity showing which assets are linked to it.
|
|
23
24
|
tags:
|
|
24
25
|
- Breakdown
|
|
25
26
|
parameters:
|
|
26
27
|
- in: path
|
|
27
28
|
name: project_id
|
|
28
|
-
required:
|
|
29
|
+
required: true
|
|
29
30
|
type: string
|
|
30
31
|
format: uuid
|
|
31
32
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
33
|
+
description: Unique identifier of the project
|
|
32
34
|
- in: path
|
|
33
35
|
name: entity_id
|
|
34
|
-
required:
|
|
36
|
+
required: true
|
|
35
37
|
type: string
|
|
36
38
|
format: uuid
|
|
37
39
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
40
|
+
description: Unique identifier of the entity
|
|
38
41
|
responses:
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
200:
|
|
43
|
+
description: Entity casting information successfully retrieved
|
|
44
|
+
content:
|
|
45
|
+
application/json:
|
|
46
|
+
schema:
|
|
47
|
+
type: object
|
|
48
|
+
properties:
|
|
49
|
+
entity_id:
|
|
50
|
+
type: string
|
|
51
|
+
format: uuid
|
|
52
|
+
description: Entity unique identifier
|
|
53
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
54
|
+
casting:
|
|
55
|
+
type: array
|
|
56
|
+
items:
|
|
57
|
+
type: object
|
|
58
|
+
properties:
|
|
59
|
+
id:
|
|
60
|
+
type: string
|
|
61
|
+
format: uuid
|
|
62
|
+
description: Casting entry unique identifier
|
|
63
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
64
|
+
asset_id:
|
|
65
|
+
type: string
|
|
66
|
+
format: uuid
|
|
67
|
+
description: Asset identifier
|
|
68
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
69
|
+
asset_name:
|
|
70
|
+
type: string
|
|
71
|
+
description: Asset name
|
|
72
|
+
example: "Main Character"
|
|
41
73
|
"""
|
|
42
74
|
user_service.check_project_access(project_id)
|
|
43
75
|
return breakdown_service.get_casting(entity_id)
|
|
@@ -45,26 +77,80 @@ class CastingResource(Resource):
|
|
|
45
77
|
@jwt_required()
|
|
46
78
|
def put(self, project_id, entity_id):
|
|
47
79
|
"""
|
|
48
|
-
|
|
80
|
+
Update entity casting
|
|
49
81
|
---
|
|
82
|
+
description: Modify the casting relationships for a specific entity by updating which assets are linked to it.
|
|
50
83
|
tags:
|
|
51
84
|
- Breakdown
|
|
52
85
|
parameters:
|
|
53
86
|
- in: path
|
|
54
87
|
name: project_id
|
|
55
|
-
required:
|
|
88
|
+
required: true
|
|
56
89
|
type: string
|
|
57
90
|
format: uuid
|
|
58
91
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
92
|
+
description: Unique identifier of the project
|
|
59
93
|
- in: path
|
|
60
94
|
name: entity_id
|
|
61
|
-
required:
|
|
95
|
+
required: true
|
|
62
96
|
type: string
|
|
63
97
|
format: uuid
|
|
64
98
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
99
|
+
description: Unique identifier of the entity
|
|
100
|
+
requestBody:
|
|
101
|
+
required: true
|
|
102
|
+
content:
|
|
103
|
+
application/json:
|
|
104
|
+
schema:
|
|
105
|
+
type: object
|
|
106
|
+
description: Casting data to update
|
|
107
|
+
properties:
|
|
108
|
+
casting:
|
|
109
|
+
type: array
|
|
110
|
+
items:
|
|
111
|
+
type: object
|
|
112
|
+
properties:
|
|
113
|
+
asset_id:
|
|
114
|
+
type: string
|
|
115
|
+
format: uuid
|
|
116
|
+
description: Asset identifier to link
|
|
117
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
118
|
+
asset_name:
|
|
119
|
+
type: string
|
|
120
|
+
description: Asset name
|
|
121
|
+
example: "Main Character"
|
|
65
122
|
responses:
|
|
66
|
-
|
|
67
|
-
|
|
123
|
+
200:
|
|
124
|
+
description: Entity casting successfully updated
|
|
125
|
+
content:
|
|
126
|
+
application/json:
|
|
127
|
+
schema:
|
|
128
|
+
type: object
|
|
129
|
+
properties:
|
|
130
|
+
entity_id:
|
|
131
|
+
type: string
|
|
132
|
+
format: uuid
|
|
133
|
+
description: Entity unique identifier
|
|
134
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
135
|
+
casting:
|
|
136
|
+
type: array
|
|
137
|
+
items:
|
|
138
|
+
type: object
|
|
139
|
+
properties:
|
|
140
|
+
id:
|
|
141
|
+
type: string
|
|
142
|
+
format: uuid
|
|
143
|
+
description: Casting entry unique identifier
|
|
144
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
145
|
+
asset_id:
|
|
146
|
+
type: string
|
|
147
|
+
format: uuid
|
|
148
|
+
description: Asset identifier
|
|
149
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
150
|
+
asset_name:
|
|
151
|
+
type: string
|
|
152
|
+
description: Asset name
|
|
153
|
+
example: "Main Character"
|
|
68
154
|
"""
|
|
69
155
|
casting = request.json
|
|
70
156
|
user_service.check_manager_project_access(project_id)
|
|
@@ -75,20 +161,52 @@ class EpisodesCastingResource(Resource):
|
|
|
75
161
|
@jwt_required()
|
|
76
162
|
def get(self, project_id):
|
|
77
163
|
"""
|
|
78
|
-
|
|
164
|
+
Get episodes casting
|
|
79
165
|
---
|
|
166
|
+
description: Retrieve the casting information for all episodes in a specific project.
|
|
80
167
|
tags:
|
|
81
168
|
- Breakdown
|
|
82
169
|
parameters:
|
|
83
170
|
- in: path
|
|
84
171
|
name: project_id
|
|
85
|
-
required:
|
|
172
|
+
required: true
|
|
86
173
|
type: string
|
|
87
174
|
format: uuid
|
|
88
175
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
176
|
+
description: Unique identifier of the project
|
|
89
177
|
responses:
|
|
90
|
-
|
|
91
|
-
|
|
178
|
+
200:
|
|
179
|
+
description: Episodes casting information successfully retrieved
|
|
180
|
+
content:
|
|
181
|
+
application/json:
|
|
182
|
+
schema:
|
|
183
|
+
type: array
|
|
184
|
+
items:
|
|
185
|
+
type: object
|
|
186
|
+
properties:
|
|
187
|
+
episode_id:
|
|
188
|
+
type: string
|
|
189
|
+
format: uuid
|
|
190
|
+
description: Episode unique identifier
|
|
191
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
192
|
+
episode_name:
|
|
193
|
+
type: string
|
|
194
|
+
description: Episode name
|
|
195
|
+
example: "Episode 01"
|
|
196
|
+
casting:
|
|
197
|
+
type: array
|
|
198
|
+
items:
|
|
199
|
+
type: object
|
|
200
|
+
properties:
|
|
201
|
+
asset_id:
|
|
202
|
+
type: string
|
|
203
|
+
format: uuid
|
|
204
|
+
description: Asset identifier
|
|
205
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
206
|
+
asset_name:
|
|
207
|
+
type: string
|
|
208
|
+
description: Asset name
|
|
209
|
+
example: "Main Character"
|
|
92
210
|
"""
|
|
93
211
|
user_service.check_project_access(project_id)
|
|
94
212
|
return breakdown_service.get_production_episodes_casting(project_id)
|
|
@@ -98,26 +216,59 @@ class EpisodeSequenceAllCastingResource(Resource):
|
|
|
98
216
|
@jwt_required()
|
|
99
217
|
def get(self, project_id, episode_id):
|
|
100
218
|
"""
|
|
101
|
-
|
|
219
|
+
Get episode shots casting
|
|
102
220
|
---
|
|
221
|
+
description: Retrieve the casting information for all shots from a specific episode.
|
|
103
222
|
tags:
|
|
104
223
|
- Breakdown
|
|
105
224
|
parameters:
|
|
106
225
|
- in: path
|
|
107
226
|
name: project_id
|
|
108
|
-
required:
|
|
227
|
+
required: true
|
|
109
228
|
type: string
|
|
110
229
|
format: uuid
|
|
111
230
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
231
|
+
description: Unique identifier of the project
|
|
112
232
|
- in: path
|
|
113
233
|
name: episode_id
|
|
114
|
-
required:
|
|
234
|
+
required: true
|
|
115
235
|
type: string
|
|
116
236
|
format: uuid
|
|
117
|
-
example:
|
|
237
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
238
|
+
description: Unique identifier of the episode
|
|
118
239
|
responses:
|
|
119
|
-
|
|
120
|
-
|
|
240
|
+
200:
|
|
241
|
+
description: Episode shots casting information successfully retrieved
|
|
242
|
+
content:
|
|
243
|
+
application/json:
|
|
244
|
+
schema:
|
|
245
|
+
type: array
|
|
246
|
+
items:
|
|
247
|
+
type: object
|
|
248
|
+
properties:
|
|
249
|
+
shot_id:
|
|
250
|
+
type: string
|
|
251
|
+
format: uuid
|
|
252
|
+
description: Shot unique identifier
|
|
253
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
254
|
+
shot_name:
|
|
255
|
+
type: string
|
|
256
|
+
description: Shot name
|
|
257
|
+
example: "SH001"
|
|
258
|
+
casting:
|
|
259
|
+
type: array
|
|
260
|
+
items:
|
|
261
|
+
type: object
|
|
262
|
+
properties:
|
|
263
|
+
asset_id:
|
|
264
|
+
type: string
|
|
265
|
+
format: uuid
|
|
266
|
+
description: Asset identifier
|
|
267
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
268
|
+
asset_name:
|
|
269
|
+
type: string
|
|
270
|
+
description: Asset name
|
|
271
|
+
example: "Main Character"
|
|
121
272
|
"""
|
|
122
273
|
user_service.check_project_access(project_id)
|
|
123
274
|
return breakdown_service.get_all_sequences_casting(
|
|
@@ -129,21 +280,61 @@ class SequenceAllCastingResource(Resource):
|
|
|
129
280
|
@jwt_required()
|
|
130
281
|
def get(self, project_id):
|
|
131
282
|
"""
|
|
132
|
-
|
|
133
|
-
project.
|
|
283
|
+
Get project shots casting
|
|
134
284
|
---
|
|
285
|
+
description: Retrieve the casting information for all shots from all sequences in a specific project.
|
|
135
286
|
tags:
|
|
136
287
|
- Breakdown
|
|
137
288
|
parameters:
|
|
138
289
|
- in: path
|
|
139
290
|
name: project_id
|
|
140
|
-
required:
|
|
291
|
+
required: true
|
|
141
292
|
type: string
|
|
142
293
|
format: uuid
|
|
143
294
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
295
|
+
description: Unique identifier of the project
|
|
144
296
|
responses:
|
|
145
|
-
|
|
146
|
-
|
|
297
|
+
200:
|
|
298
|
+
description: Project shots casting information successfully retrieved
|
|
299
|
+
content:
|
|
300
|
+
application/json:
|
|
301
|
+
schema:
|
|
302
|
+
type: array
|
|
303
|
+
items:
|
|
304
|
+
type: object
|
|
305
|
+
properties:
|
|
306
|
+
shot_id:
|
|
307
|
+
type: string
|
|
308
|
+
format: uuid
|
|
309
|
+
description: Shot unique identifier
|
|
310
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
311
|
+
shot_name:
|
|
312
|
+
type: string
|
|
313
|
+
description: Shot name
|
|
314
|
+
example: "SH001"
|
|
315
|
+
sequence_id:
|
|
316
|
+
type: string
|
|
317
|
+
format: uuid
|
|
318
|
+
description: Sequence identifier
|
|
319
|
+
example: f79f1jf9-hj20-9110-f625-02908537h70
|
|
320
|
+
sequence_name:
|
|
321
|
+
type: string
|
|
322
|
+
description: Sequence name
|
|
323
|
+
example: "SEQ01"
|
|
324
|
+
casting:
|
|
325
|
+
type: array
|
|
326
|
+
items:
|
|
327
|
+
type: object
|
|
328
|
+
properties:
|
|
329
|
+
asset_id:
|
|
330
|
+
type: string
|
|
331
|
+
format: uuid
|
|
332
|
+
description: Asset identifier
|
|
333
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
334
|
+
asset_name:
|
|
335
|
+
type: string
|
|
336
|
+
description: Asset name
|
|
337
|
+
example: "Main Character"
|
|
147
338
|
"""
|
|
148
339
|
user_service.check_project_access(project_id)
|
|
149
340
|
return breakdown_service.get_all_sequences_casting(project_id)
|
|
@@ -153,26 +344,64 @@ class SequenceCastingResource(Resource):
|
|
|
153
344
|
@jwt_required()
|
|
154
345
|
def get(self, project_id, sequence_id):
|
|
155
346
|
"""
|
|
156
|
-
|
|
347
|
+
Get sequence shots casting
|
|
157
348
|
---
|
|
349
|
+
description: Retrieve the casting information for all shots from a specific sequence.
|
|
158
350
|
tags:
|
|
159
351
|
- Breakdown
|
|
160
352
|
parameters:
|
|
161
353
|
- in: path
|
|
162
354
|
name: project_id
|
|
163
|
-
required:
|
|
355
|
+
required: true
|
|
164
356
|
type: string
|
|
165
357
|
format: uuid
|
|
166
358
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
359
|
+
description: Unique identifier of the project
|
|
167
360
|
- in: path
|
|
168
361
|
name: sequence_id
|
|
169
|
-
required:
|
|
362
|
+
required: true
|
|
170
363
|
type: string
|
|
171
364
|
format: uuid
|
|
172
|
-
example:
|
|
365
|
+
example: f79f1jf9-hj20-9110-f625-02908537h70
|
|
366
|
+
description: Unique identifier of the sequence
|
|
173
367
|
responses:
|
|
174
|
-
|
|
175
|
-
|
|
368
|
+
200:
|
|
369
|
+
description: Sequence shots casting information successfully retrieved
|
|
370
|
+
content:
|
|
371
|
+
application/json:
|
|
372
|
+
schema:
|
|
373
|
+
type: array
|
|
374
|
+
items:
|
|
375
|
+
type: object
|
|
376
|
+
properties:
|
|
377
|
+
shot_id:
|
|
378
|
+
type: string
|
|
379
|
+
format: uuid
|
|
380
|
+
description: Shot unique identifier
|
|
381
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
382
|
+
shot_name:
|
|
383
|
+
type: string
|
|
384
|
+
description: Shot name
|
|
385
|
+
example: "SH001"
|
|
386
|
+
sequence_id:
|
|
387
|
+
type: string
|
|
388
|
+
format: uuid
|
|
389
|
+
description: Sequence identifier
|
|
390
|
+
example: f79f1jf9-hj20-9110-f625-02908537h70
|
|
391
|
+
casting:
|
|
392
|
+
type: array
|
|
393
|
+
items:
|
|
394
|
+
type: object
|
|
395
|
+
properties:
|
|
396
|
+
asset_id:
|
|
397
|
+
type: string
|
|
398
|
+
format: uuid
|
|
399
|
+
description: Asset identifier
|
|
400
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
401
|
+
asset_name:
|
|
402
|
+
type: string
|
|
403
|
+
description: Asset name
|
|
404
|
+
example: "Main Character"
|
|
176
405
|
"""
|
|
177
406
|
user_service.check_project_access(project_id)
|
|
178
407
|
shots_service.get_sequence(sequence_id)
|
|
@@ -183,26 +412,68 @@ class AssetTypeCastingResource(Resource):
|
|
|
183
412
|
@jwt_required()
|
|
184
413
|
def get(self, project_id, asset_type_id):
|
|
185
414
|
"""
|
|
186
|
-
|
|
415
|
+
Get asset type casting
|
|
187
416
|
---
|
|
417
|
+
description: Retrieve the casting information for all assets of a specific asset type in a project.
|
|
188
418
|
tags:
|
|
189
419
|
- Breakdown
|
|
190
420
|
parameters:
|
|
191
421
|
- in: path
|
|
192
422
|
name: project_id
|
|
193
|
-
required:
|
|
423
|
+
required: true
|
|
194
424
|
type: string
|
|
195
425
|
format: uuid
|
|
196
426
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
427
|
+
description: Unique identifier of the project
|
|
197
428
|
- in: path
|
|
198
429
|
name: asset_type_id
|
|
199
|
-
required:
|
|
430
|
+
required: true
|
|
200
431
|
type: string
|
|
201
432
|
format: uuid
|
|
202
|
-
example:
|
|
433
|
+
example: g80g2kg0-ik31-0221-g736-13019648i81
|
|
434
|
+
description: Unique identifier of the asset type
|
|
203
435
|
responses:
|
|
204
|
-
|
|
205
|
-
|
|
436
|
+
200:
|
|
437
|
+
description: Asset type casting information successfully retrieved
|
|
438
|
+
content:
|
|
439
|
+
application/json:
|
|
440
|
+
schema:
|
|
441
|
+
type: array
|
|
442
|
+
items:
|
|
443
|
+
type: object
|
|
444
|
+
properties:
|
|
445
|
+
asset_id:
|
|
446
|
+
type: string
|
|
447
|
+
format: uuid
|
|
448
|
+
description: Asset unique identifier
|
|
449
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
450
|
+
asset_name:
|
|
451
|
+
type: string
|
|
452
|
+
description: Asset name
|
|
453
|
+
example: "Main Character"
|
|
454
|
+
asset_type_id:
|
|
455
|
+
type: string
|
|
456
|
+
format: uuid
|
|
457
|
+
description: Asset type identifier
|
|
458
|
+
example: g80g2kg0-ik31-0221-g736-13019648i81
|
|
459
|
+
casting:
|
|
460
|
+
type: array
|
|
461
|
+
items:
|
|
462
|
+
type: object
|
|
463
|
+
properties:
|
|
464
|
+
entity_id:
|
|
465
|
+
type: string
|
|
466
|
+
format: uuid
|
|
467
|
+
description: Entity identifier
|
|
468
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
469
|
+
entity_name:
|
|
470
|
+
type: string
|
|
471
|
+
description: Entity name
|
|
472
|
+
example: "SH001"
|
|
473
|
+
entity_type:
|
|
474
|
+
type: string
|
|
475
|
+
description: Entity type (shot/sequence)
|
|
476
|
+
example: "shot"
|
|
206
477
|
"""
|
|
207
478
|
user_service.check_project_access(project_id)
|
|
208
479
|
assets_service.get_asset_type(asset_type_id)
|
|
@@ -215,20 +486,52 @@ class ShotAssetInstancesResource(Resource, ArgsMixin):
|
|
|
215
486
|
@jwt_required()
|
|
216
487
|
def get(self, shot_id):
|
|
217
488
|
"""
|
|
218
|
-
|
|
489
|
+
Get shot asset instances
|
|
219
490
|
---
|
|
491
|
+
description: Retrieve all asset instances that are linked to a specific shot.
|
|
220
492
|
tags:
|
|
221
493
|
- Breakdown
|
|
222
494
|
parameters:
|
|
223
495
|
- in: path
|
|
224
496
|
name: shot_id
|
|
225
|
-
required:
|
|
497
|
+
required: true
|
|
226
498
|
type: string
|
|
227
499
|
format: uuid
|
|
228
|
-
example:
|
|
500
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
501
|
+
description: Unique identifier of the shot
|
|
229
502
|
responses:
|
|
230
|
-
|
|
231
|
-
|
|
503
|
+
200:
|
|
504
|
+
description: Shot asset instances successfully retrieved
|
|
505
|
+
content:
|
|
506
|
+
application/json:
|
|
507
|
+
schema:
|
|
508
|
+
type: array
|
|
509
|
+
items:
|
|
510
|
+
type: object
|
|
511
|
+
properties:
|
|
512
|
+
id:
|
|
513
|
+
type: string
|
|
514
|
+
format: uuid
|
|
515
|
+
description: Asset instance unique identifier
|
|
516
|
+
example: h91h3lh1-jl42-1332-h847-24120759j92
|
|
517
|
+
asset_id:
|
|
518
|
+
type: string
|
|
519
|
+
format: uuid
|
|
520
|
+
description: Asset identifier
|
|
521
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
522
|
+
shot_id:
|
|
523
|
+
type: string
|
|
524
|
+
format: uuid
|
|
525
|
+
description: Shot identifier
|
|
526
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
527
|
+
number:
|
|
528
|
+
type: string
|
|
529
|
+
description: Instance number
|
|
530
|
+
example: "001"
|
|
531
|
+
description:
|
|
532
|
+
type: string
|
|
533
|
+
description: Instance description
|
|
534
|
+
example: "Main character instance"
|
|
232
535
|
"""
|
|
233
536
|
shot = shots_service.get_shot(shot_id)
|
|
234
537
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -237,20 +540,65 @@ class ShotAssetInstancesResource(Resource, ArgsMixin):
|
|
|
237
540
|
@jwt_required()
|
|
238
541
|
def post(self, shot_id):
|
|
239
542
|
"""
|
|
240
|
-
Add
|
|
543
|
+
Add shot asset instance
|
|
241
544
|
---
|
|
545
|
+
description: Add an asset instance to a specific shot.
|
|
242
546
|
tags:
|
|
243
547
|
- Breakdown
|
|
244
548
|
parameters:
|
|
245
549
|
- in: path
|
|
246
550
|
name: shot_id
|
|
247
|
-
required:
|
|
551
|
+
required: true
|
|
248
552
|
type: string
|
|
249
553
|
format: uuid
|
|
250
|
-
example:
|
|
554
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
555
|
+
description: Unique identifier of the shot
|
|
556
|
+
requestBody:
|
|
557
|
+
required: true
|
|
558
|
+
content:
|
|
559
|
+
application/json:
|
|
560
|
+
schema:
|
|
561
|
+
type: object
|
|
562
|
+
required:
|
|
563
|
+
- asset_instance_id
|
|
564
|
+
properties:
|
|
565
|
+
asset_instance_id:
|
|
566
|
+
type: string
|
|
567
|
+
format: uuid
|
|
568
|
+
description: Asset instance identifier to add
|
|
569
|
+
example: h91h3lh1-jl42-1332-h847-24120759j92
|
|
251
570
|
responses:
|
|
252
|
-
|
|
253
|
-
|
|
571
|
+
201:
|
|
572
|
+
description: Asset instance successfully added to shot
|
|
573
|
+
content:
|
|
574
|
+
application/json:
|
|
575
|
+
schema:
|
|
576
|
+
type: object
|
|
577
|
+
properties:
|
|
578
|
+
id:
|
|
579
|
+
type: string
|
|
580
|
+
format: uuid
|
|
581
|
+
description: Shot unique identifier
|
|
582
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
583
|
+
name:
|
|
584
|
+
type: string
|
|
585
|
+
description: Shot name
|
|
586
|
+
example: "SH001"
|
|
587
|
+
asset_instances:
|
|
588
|
+
type: array
|
|
589
|
+
items:
|
|
590
|
+
type: object
|
|
591
|
+
properties:
|
|
592
|
+
id:
|
|
593
|
+
type: string
|
|
594
|
+
format: uuid
|
|
595
|
+
description: Asset instance unique identifier
|
|
596
|
+
example: h91h3lh1-jl42-1332-h847-24120759j92
|
|
597
|
+
asset_id:
|
|
598
|
+
type: string
|
|
599
|
+
format: uuid
|
|
600
|
+
description: Asset identifier
|
|
601
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
254
602
|
"""
|
|
255
603
|
args = self.get_args([("asset_instance_id", None, True)])
|
|
256
604
|
|
|
@@ -266,26 +614,29 @@ class RemoveShotAssetInstanceResource(Resource, ArgsMixin):
|
|
|
266
614
|
@jwt_required()
|
|
267
615
|
def delete(self, shot_id, asset_instance_id):
|
|
268
616
|
"""
|
|
269
|
-
Remove
|
|
617
|
+
Remove shot asset instance
|
|
270
618
|
---
|
|
619
|
+
description: Remove an asset instance from a specific shot.
|
|
271
620
|
tags:
|
|
272
621
|
- Breakdown
|
|
273
622
|
parameters:
|
|
274
623
|
- in: path
|
|
275
624
|
name: shot_id
|
|
276
|
-
required:
|
|
625
|
+
required: true
|
|
277
626
|
type: string
|
|
278
627
|
format: uuid
|
|
279
|
-
example:
|
|
628
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
629
|
+
description: Unique identifier of the shot
|
|
280
630
|
- in: path
|
|
281
631
|
name: asset_instance_id
|
|
282
|
-
required:
|
|
632
|
+
required: true
|
|
283
633
|
type: string
|
|
284
634
|
format: uuid
|
|
285
|
-
example:
|
|
635
|
+
example: h91h3lh1-jl42-1332-h847-24120759j92
|
|
636
|
+
description: Unique identifier of the asset instance
|
|
286
637
|
responses:
|
|
287
|
-
|
|
288
|
-
|
|
638
|
+
204:
|
|
639
|
+
description: Asset instance successfully removed from shot
|
|
289
640
|
"""
|
|
290
641
|
shot = shots_service.get_shot(shot_id)
|
|
291
642
|
user_service.check_project_access(shot["project_id"])
|
|
@@ -299,20 +650,52 @@ class SceneAssetInstancesResource(Resource, ArgsMixin):
|
|
|
299
650
|
@jwt_required()
|
|
300
651
|
def get(self, scene_id):
|
|
301
652
|
"""
|
|
302
|
-
|
|
653
|
+
Get scene asset instances
|
|
303
654
|
---
|
|
655
|
+
description: Retrieve all asset instances that are linked to a specific scene.
|
|
304
656
|
tags:
|
|
305
657
|
- Breakdown
|
|
306
658
|
parameters:
|
|
307
659
|
- in: path
|
|
308
660
|
name: scene_id
|
|
309
|
-
required:
|
|
661
|
+
required: true
|
|
310
662
|
type: string
|
|
311
663
|
format: uuid
|
|
312
|
-
example:
|
|
664
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
665
|
+
description: Unique identifier of the scene
|
|
313
666
|
responses:
|
|
314
|
-
|
|
315
|
-
|
|
667
|
+
200:
|
|
668
|
+
description: Scene asset instances successfully retrieved
|
|
669
|
+
content:
|
|
670
|
+
application/json:
|
|
671
|
+
schema:
|
|
672
|
+
type: array
|
|
673
|
+
items:
|
|
674
|
+
type: object
|
|
675
|
+
properties:
|
|
676
|
+
id:
|
|
677
|
+
type: string
|
|
678
|
+
format: uuid
|
|
679
|
+
description: Asset instance unique identifier
|
|
680
|
+
example: j13j5nj3-ln64-3554-j069-46342981l14
|
|
681
|
+
asset_id:
|
|
682
|
+
type: string
|
|
683
|
+
format: uuid
|
|
684
|
+
description: Asset identifier
|
|
685
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
686
|
+
scene_id:
|
|
687
|
+
type: string
|
|
688
|
+
format: uuid
|
|
689
|
+
description: Scene identifier
|
|
690
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
691
|
+
number:
|
|
692
|
+
type: string
|
|
693
|
+
description: Instance number
|
|
694
|
+
example: "001"
|
|
695
|
+
description:
|
|
696
|
+
type: string
|
|
697
|
+
description: Instance description
|
|
698
|
+
example: "Main character instance"
|
|
316
699
|
"""
|
|
317
700
|
scene = shots_service.get_scene(scene_id)
|
|
318
701
|
user_service.check_project_access(scene["project_id"])
|
|
@@ -321,20 +704,68 @@ class SceneAssetInstancesResource(Resource, ArgsMixin):
|
|
|
321
704
|
@jwt_required()
|
|
322
705
|
def post(self, scene_id):
|
|
323
706
|
"""
|
|
324
|
-
Create
|
|
707
|
+
Create scene asset instance
|
|
325
708
|
---
|
|
709
|
+
description: Create an asset instance on a specific scene.
|
|
326
710
|
tags:
|
|
327
711
|
- Breakdown
|
|
328
712
|
parameters:
|
|
329
713
|
- in: path
|
|
330
714
|
name: scene_id
|
|
331
|
-
required:
|
|
715
|
+
required: true
|
|
332
716
|
type: string
|
|
333
717
|
format: uuid
|
|
334
|
-
example:
|
|
718
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
719
|
+
description: Unique identifier of the scene
|
|
720
|
+
requestBody:
|
|
721
|
+
required: true
|
|
722
|
+
content:
|
|
723
|
+
application/json:
|
|
724
|
+
schema:
|
|
725
|
+
type: object
|
|
726
|
+
required:
|
|
727
|
+
- asset_id
|
|
728
|
+
properties:
|
|
729
|
+
asset_id:
|
|
730
|
+
type: string
|
|
731
|
+
format: uuid
|
|
732
|
+
description: Asset identifier to create instance from
|
|
733
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
734
|
+
description:
|
|
735
|
+
type: string
|
|
736
|
+
description: Instance description
|
|
737
|
+
example: "Main character instance"
|
|
335
738
|
responses:
|
|
336
|
-
|
|
337
|
-
|
|
739
|
+
201:
|
|
740
|
+
description: Asset instance successfully created on scene
|
|
741
|
+
content:
|
|
742
|
+
application/json:
|
|
743
|
+
schema:
|
|
744
|
+
type: object
|
|
745
|
+
properties:
|
|
746
|
+
id:
|
|
747
|
+
type: string
|
|
748
|
+
format: uuid
|
|
749
|
+
description: Asset instance unique identifier
|
|
750
|
+
example: j13j5nj3-ln64-3554-j069-46342981l14
|
|
751
|
+
asset_id:
|
|
752
|
+
type: string
|
|
753
|
+
format: uuid
|
|
754
|
+
description: Asset identifier
|
|
755
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
756
|
+
scene_id:
|
|
757
|
+
type: string
|
|
758
|
+
format: uuid
|
|
759
|
+
description: Scene identifier
|
|
760
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
761
|
+
number:
|
|
762
|
+
type: string
|
|
763
|
+
description: Instance number
|
|
764
|
+
example: "001"
|
|
765
|
+
description:
|
|
766
|
+
type: string
|
|
767
|
+
description: Instance description
|
|
768
|
+
example: "Main character instance"
|
|
338
769
|
"""
|
|
339
770
|
args = self.get_args(
|
|
340
771
|
[("asset_id", None, True), ("description", None, False)]
|
|
@@ -352,20 +783,52 @@ class SceneCameraInstancesResource(Resource):
|
|
|
352
783
|
@jwt_required()
|
|
353
784
|
def get(self, scene_id):
|
|
354
785
|
"""
|
|
355
|
-
|
|
786
|
+
Get scene camera instances
|
|
356
787
|
---
|
|
788
|
+
description: Retrieve all camera instances that are linked to a specific scene.
|
|
357
789
|
tags:
|
|
358
790
|
- Breakdown
|
|
359
791
|
parameters:
|
|
360
792
|
- in: path
|
|
361
793
|
name: scene_id
|
|
362
|
-
required:
|
|
794
|
+
required: true
|
|
363
795
|
type: string
|
|
364
796
|
format: uuid
|
|
365
|
-
example:
|
|
797
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
798
|
+
description: Unique identifier of the scene
|
|
366
799
|
responses:
|
|
367
|
-
|
|
368
|
-
|
|
800
|
+
200:
|
|
801
|
+
description: Scene camera instances successfully retrieved
|
|
802
|
+
content:
|
|
803
|
+
application/json:
|
|
804
|
+
schema:
|
|
805
|
+
type: array
|
|
806
|
+
items:
|
|
807
|
+
type: object
|
|
808
|
+
properties:
|
|
809
|
+
id:
|
|
810
|
+
type: string
|
|
811
|
+
format: uuid
|
|
812
|
+
description: Camera instance unique identifier
|
|
813
|
+
example: k24k6ok4-mo75-4665-k180-57453082m25
|
|
814
|
+
camera_id:
|
|
815
|
+
type: string
|
|
816
|
+
format: uuid
|
|
817
|
+
description: Camera identifier
|
|
818
|
+
example: l35l7pl5-np86-5776-l291-68564193n36
|
|
819
|
+
scene_id:
|
|
820
|
+
type: string
|
|
821
|
+
format: uuid
|
|
822
|
+
description: Scene identifier
|
|
823
|
+
example: i02i4mi2-km53-2443-i958-35231870k03
|
|
824
|
+
number:
|
|
825
|
+
type: string
|
|
826
|
+
description: Instance number
|
|
827
|
+
example: "001"
|
|
828
|
+
description:
|
|
829
|
+
type: string
|
|
830
|
+
description: Instance description
|
|
831
|
+
example: "Main camera instance"
|
|
369
832
|
"""
|
|
370
833
|
scene = shots_service.get_scene(scene_id)
|
|
371
834
|
user_service.check_project_access(scene["project_id"])
|
|
@@ -376,43 +839,68 @@ class ProjectEntityLinksResource(Resource, ArgsMixin):
|
|
|
376
839
|
@jwt_required()
|
|
377
840
|
def get(self, project_id):
|
|
378
841
|
"""
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
Results can be paginated using page and limit query parameters. If you
|
|
382
|
-
prefer a more accurate pagination, you can use and
|
|
383
|
-
cursor_created_at to get the next page.
|
|
842
|
+
Get project entity links
|
|
384
843
|
---
|
|
844
|
+
description: Retrieve all entity links related to a specific project. Results can be paginated using page and limit query parameters. If you prefer a more accurate pagination, you can use cursor_created_at to get the next page. It's mainly used for synchronisation purpose.
|
|
385
845
|
tags:
|
|
386
846
|
- Breakdown
|
|
387
|
-
description: It's mainly used for synchronisation purpose.
|
|
388
847
|
parameters:
|
|
389
848
|
- in: path
|
|
390
849
|
name: project_id
|
|
391
|
-
required:
|
|
850
|
+
required: true
|
|
392
851
|
type: string
|
|
393
852
|
format: uuid
|
|
394
853
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
854
|
+
description: Unique identifier of the project
|
|
395
855
|
- in: query
|
|
396
856
|
name: page
|
|
397
|
-
required:
|
|
398
|
-
type:
|
|
399
|
-
format: Number
|
|
857
|
+
required: false
|
|
858
|
+
type: integer
|
|
400
859
|
example: 2
|
|
860
|
+
description: Page number for pagination
|
|
401
861
|
- in: query
|
|
402
862
|
name: limit
|
|
403
|
-
required:
|
|
404
|
-
type:
|
|
405
|
-
format: Number
|
|
863
|
+
required: false
|
|
864
|
+
type: integer
|
|
406
865
|
example: 100
|
|
866
|
+
description: Number of items per page
|
|
407
867
|
- in: query
|
|
408
868
|
name: cursor_created_at
|
|
409
|
-
required:
|
|
869
|
+
required: false
|
|
410
870
|
type: string
|
|
411
|
-
format:
|
|
412
|
-
example: 2020-01-01T00:00:00
|
|
871
|
+
format: date-time
|
|
872
|
+
example: "2020-01-01T00:00:00"
|
|
873
|
+
description: Cursor for pagination based on creation date
|
|
413
874
|
responses:
|
|
414
|
-
|
|
415
|
-
|
|
875
|
+
200:
|
|
876
|
+
description: Project entity links successfully retrieved
|
|
877
|
+
content:
|
|
878
|
+
application/json:
|
|
879
|
+
schema:
|
|
880
|
+
type: array
|
|
881
|
+
items:
|
|
882
|
+
type: object
|
|
883
|
+
properties:
|
|
884
|
+
id:
|
|
885
|
+
type: string
|
|
886
|
+
format: uuid
|
|
887
|
+
description: Entity link unique identifier
|
|
888
|
+
example: m46m8qm6-oq97-6887-m403-80786315o47
|
|
889
|
+
entity_in_id:
|
|
890
|
+
type: string
|
|
891
|
+
format: uuid
|
|
892
|
+
description: Source entity identifier
|
|
893
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
894
|
+
entity_out_id:
|
|
895
|
+
type: string
|
|
896
|
+
format: uuid
|
|
897
|
+
description: Target entity identifier
|
|
898
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
899
|
+
created_at:
|
|
900
|
+
type: string
|
|
901
|
+
format: date-time
|
|
902
|
+
description: Creation timestamp
|
|
903
|
+
example: "2020-01-01T00:00:00"
|
|
416
904
|
"""
|
|
417
905
|
user_service.check_manager_project_access(project_id)
|
|
418
906
|
projects_service.get_project(project_id)
|
|
@@ -431,27 +919,29 @@ class ProjectEntityLinkResource(Resource):
|
|
|
431
919
|
@jwt_required()
|
|
432
920
|
def delete(self, project_id, entity_link_id):
|
|
433
921
|
"""
|
|
434
|
-
Delete
|
|
922
|
+
Delete entity link
|
|
435
923
|
---
|
|
924
|
+
description: Delete a specific entity link. It's mainly used for synchronisation purpose.
|
|
436
925
|
tags:
|
|
437
926
|
- Breakdown
|
|
438
|
-
description: It's mainly used for synchronisation purpose.
|
|
439
927
|
parameters:
|
|
440
928
|
- in: path
|
|
441
929
|
name: project_id
|
|
442
|
-
required:
|
|
930
|
+
required: true
|
|
443
931
|
type: string
|
|
444
932
|
format: uuid
|
|
445
933
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
934
|
+
description: Unique identifier of the project
|
|
446
935
|
- in: path
|
|
447
936
|
name: entity_link_id
|
|
448
|
-
required:
|
|
937
|
+
required: true
|
|
449
938
|
type: string
|
|
450
939
|
format: uuid
|
|
451
|
-
example:
|
|
940
|
+
example: m46m8qm6-oq97-6887-m403-80786315o47
|
|
941
|
+
description: Unique identifier of the entity link
|
|
452
942
|
responses:
|
|
453
|
-
|
|
454
|
-
|
|
943
|
+
200:
|
|
944
|
+
description: Entity link successfully deleted
|
|
455
945
|
"""
|
|
456
946
|
user_service.check_manager_project_access(project_id)
|
|
457
947
|
return entities_service.remove_entity_link(entity_link_id)
|