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.
- 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 +387 -125
- zou/app/blueprints/concepts/resources.py +428 -63
- 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/index/resources.py +49 -42
- zou/app/blueprints/news/resources.py +45 -27
- zou/app/blueprints/user/resources.py +1808 -215
- zou/app/swagger.py +100 -27
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/METADATA +1 -1
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/RECORD +21 -21
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/WHEEL +0 -0
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/entry_points.txt +0 -0
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/licenses/LICENSE +0 -0
- {zou-0.20.82.dist-info → zou-0.20.83.dist-info}/top_level.txt +0 -0
|
@@ -19,20 +19,55 @@ class ConceptResource(Resource, ArgsMixin):
|
|
|
19
19
|
@jwt_required()
|
|
20
20
|
def get(self, concept_id):
|
|
21
21
|
"""
|
|
22
|
-
|
|
22
|
+
Get concept
|
|
23
23
|
---
|
|
24
|
+
description: Retrieve detailed information about a specific concept including metadata, project context, and related data.
|
|
24
25
|
tags:
|
|
25
|
-
|
|
26
|
+
- Concepts
|
|
26
27
|
parameters:
|
|
27
28
|
- in: path
|
|
28
29
|
name: concept_id
|
|
29
|
-
required:
|
|
30
|
+
required: true
|
|
30
31
|
type: string
|
|
31
32
|
format: uuid
|
|
32
33
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
34
|
+
description: Unique identifier of the concept
|
|
33
35
|
responses:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
200:
|
|
37
|
+
description: Concept information successfully retrieved
|
|
38
|
+
content:
|
|
39
|
+
application/json:
|
|
40
|
+
schema:
|
|
41
|
+
type: object
|
|
42
|
+
properties:
|
|
43
|
+
id:
|
|
44
|
+
type: string
|
|
45
|
+
format: uuid
|
|
46
|
+
description: Concept unique identifier
|
|
47
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
48
|
+
name:
|
|
49
|
+
type: string
|
|
50
|
+
description: Concept name
|
|
51
|
+
example: "Character Design"
|
|
52
|
+
description:
|
|
53
|
+
type: string
|
|
54
|
+
description: Concept description
|
|
55
|
+
example: "Main character concept art"
|
|
56
|
+
project_id:
|
|
57
|
+
type: string
|
|
58
|
+
format: uuid
|
|
59
|
+
description: Project identifier
|
|
60
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
61
|
+
created_at:
|
|
62
|
+
type: string
|
|
63
|
+
format: date-time
|
|
64
|
+
description: Creation timestamp
|
|
65
|
+
example: "2023-01-01T12:00:00Z"
|
|
66
|
+
updated_at:
|
|
67
|
+
type: string
|
|
68
|
+
format: date-time
|
|
69
|
+
description: Last update timestamp
|
|
70
|
+
example: "2023-01-01T12:30:00Z"
|
|
36
71
|
"""
|
|
37
72
|
concept = concepts_service.get_full_concept(concept_id)
|
|
38
73
|
if concept is None:
|
|
@@ -47,20 +82,28 @@ class ConceptResource(Resource, ArgsMixin):
|
|
|
47
82
|
@jwt_required()
|
|
48
83
|
def delete(self, concept_id):
|
|
49
84
|
"""
|
|
50
|
-
Delete
|
|
85
|
+
Delete concept
|
|
51
86
|
---
|
|
87
|
+
description: Permanently remove a concept from the system. Only concept creators or project managers can delete concepts.
|
|
52
88
|
tags:
|
|
53
|
-
|
|
89
|
+
- Concepts
|
|
54
90
|
parameters:
|
|
55
91
|
- in: path
|
|
56
92
|
name: concept_id
|
|
57
|
-
required:
|
|
93
|
+
required: true
|
|
58
94
|
type: string
|
|
59
95
|
format: uuid
|
|
60
96
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
97
|
+
description: Unique identifier of the concept to delete
|
|
98
|
+
- in: query
|
|
99
|
+
name: force
|
|
100
|
+
type: boolean
|
|
101
|
+
required: false
|
|
102
|
+
description: Force deletion bypassing validation checks
|
|
103
|
+
example: false
|
|
61
104
|
responses:
|
|
62
|
-
|
|
63
|
-
|
|
105
|
+
204:
|
|
106
|
+
description: Concept successfully deleted
|
|
64
107
|
"""
|
|
65
108
|
force = self.get_force()
|
|
66
109
|
concept = concepts_service.get_concept(concept_id)
|
|
@@ -76,27 +119,69 @@ class AllConceptsResource(Resource):
|
|
|
76
119
|
@jwt_required()
|
|
77
120
|
def get(self):
|
|
78
121
|
"""
|
|
79
|
-
|
|
122
|
+
Get all concepts
|
|
80
123
|
---
|
|
124
|
+
description: Retrieve all concept entries with filtering support. Filters can be specified in the query string to narrow down results by project or parent concept.
|
|
81
125
|
tags:
|
|
82
|
-
|
|
83
|
-
description: Filters can be specified in the query string.
|
|
126
|
+
- Concepts
|
|
84
127
|
parameters:
|
|
85
128
|
- in: query
|
|
86
129
|
name: project_id
|
|
87
|
-
required:
|
|
130
|
+
required: false
|
|
88
131
|
type: string
|
|
89
132
|
format: uuid
|
|
90
133
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
134
|
+
description: Filter concepts by specific project
|
|
91
135
|
- in: query
|
|
92
136
|
name: parent_id
|
|
93
|
-
required:
|
|
137
|
+
required: false
|
|
94
138
|
type: string
|
|
95
139
|
format: uuid
|
|
96
|
-
example:
|
|
140
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
141
|
+
description: Filter concepts by parent concept
|
|
97
142
|
responses:
|
|
98
|
-
|
|
99
|
-
|
|
143
|
+
200:
|
|
144
|
+
description: List of concepts successfully retrieved
|
|
145
|
+
content:
|
|
146
|
+
application/json:
|
|
147
|
+
schema:
|
|
148
|
+
type: array
|
|
149
|
+
items:
|
|
150
|
+
type: object
|
|
151
|
+
properties:
|
|
152
|
+
id:
|
|
153
|
+
type: string
|
|
154
|
+
format: uuid
|
|
155
|
+
description: Concept unique identifier
|
|
156
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
157
|
+
name:
|
|
158
|
+
type: string
|
|
159
|
+
description: Concept name
|
|
160
|
+
example: "Character Design"
|
|
161
|
+
description:
|
|
162
|
+
type: string
|
|
163
|
+
description: Concept description
|
|
164
|
+
example: "Main character concept art"
|
|
165
|
+
project_id:
|
|
166
|
+
type: string
|
|
167
|
+
format: uuid
|
|
168
|
+
description: Project identifier
|
|
169
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
170
|
+
parent_id:
|
|
171
|
+
type: string
|
|
172
|
+
format: uuid
|
|
173
|
+
description: Parent concept identifier
|
|
174
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
175
|
+
created_at:
|
|
176
|
+
type: string
|
|
177
|
+
format: date-time
|
|
178
|
+
description: Creation timestamp
|
|
179
|
+
example: "2023-01-01T12:00:00Z"
|
|
180
|
+
updated_at:
|
|
181
|
+
type: string
|
|
182
|
+
format: date-time
|
|
183
|
+
description: Last update timestamp
|
|
184
|
+
example: "2023-01-01T12:30:00Z"
|
|
100
185
|
"""
|
|
101
186
|
criterions = query.get_query_criterions_from_request(request)
|
|
102
187
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -112,20 +197,50 @@ class ConceptTaskTypesResource(Resource):
|
|
|
112
197
|
@jwt_required()
|
|
113
198
|
def get(self, concept_id):
|
|
114
199
|
"""
|
|
115
|
-
|
|
200
|
+
Get concept task types
|
|
116
201
|
---
|
|
202
|
+
description: Retrieve all task types that are related to a specific concept.
|
|
117
203
|
tags:
|
|
118
|
-
|
|
204
|
+
- Concepts
|
|
119
205
|
parameters:
|
|
120
206
|
- in: path
|
|
121
207
|
name: concept_id
|
|
122
|
-
required:
|
|
208
|
+
required: true
|
|
123
209
|
type: string
|
|
124
210
|
format: uuid
|
|
125
211
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
212
|
+
description: Unique identifier of the concept
|
|
126
213
|
responses:
|
|
127
|
-
|
|
128
|
-
|
|
214
|
+
200:
|
|
215
|
+
description: List of concept task types successfully retrieved
|
|
216
|
+
content:
|
|
217
|
+
application/json:
|
|
218
|
+
schema:
|
|
219
|
+
type: array
|
|
220
|
+
items:
|
|
221
|
+
type: object
|
|
222
|
+
properties:
|
|
223
|
+
id:
|
|
224
|
+
type: string
|
|
225
|
+
format: uuid
|
|
226
|
+
description: Task type unique identifier
|
|
227
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
228
|
+
name:
|
|
229
|
+
type: string
|
|
230
|
+
description: Task type name
|
|
231
|
+
example: "Concept Art"
|
|
232
|
+
short_name:
|
|
233
|
+
type: string
|
|
234
|
+
description: Task type short name
|
|
235
|
+
example: "CON"
|
|
236
|
+
color:
|
|
237
|
+
type: string
|
|
238
|
+
description: Task type color code
|
|
239
|
+
example: "#FF5733"
|
|
240
|
+
for_entity:
|
|
241
|
+
type: string
|
|
242
|
+
description: Entity type this task type is for
|
|
243
|
+
example: "Concept"
|
|
129
244
|
"""
|
|
130
245
|
concept = concepts_service.get_concept(concept_id)
|
|
131
246
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -139,20 +254,74 @@ class ConceptTasksResource(Resource, ArgsMixin):
|
|
|
139
254
|
@jwt_required()
|
|
140
255
|
def get(self, concept_id):
|
|
141
256
|
"""
|
|
142
|
-
|
|
257
|
+
Get concept tasks
|
|
143
258
|
---
|
|
259
|
+
description: Retrieve all tasks that are related to a specific concept.
|
|
144
260
|
tags:
|
|
145
|
-
|
|
261
|
+
- Concepts
|
|
146
262
|
parameters:
|
|
147
263
|
- in: path
|
|
148
264
|
name: concept_id
|
|
149
|
-
required:
|
|
265
|
+
required: true
|
|
150
266
|
type: string
|
|
151
267
|
format: uuid
|
|
152
268
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
269
|
+
description: Unique identifier of the concept
|
|
270
|
+
- in: query
|
|
271
|
+
name: relations
|
|
272
|
+
type: boolean
|
|
273
|
+
required: false
|
|
274
|
+
description: Include related entity information
|
|
275
|
+
example: true
|
|
153
276
|
responses:
|
|
154
|
-
|
|
155
|
-
|
|
277
|
+
200:
|
|
278
|
+
description: List of concept tasks successfully retrieved
|
|
279
|
+
content:
|
|
280
|
+
application/json:
|
|
281
|
+
schema:
|
|
282
|
+
type: array
|
|
283
|
+
items:
|
|
284
|
+
type: object
|
|
285
|
+
properties:
|
|
286
|
+
id:
|
|
287
|
+
type: string
|
|
288
|
+
format: uuid
|
|
289
|
+
description: Task unique identifier
|
|
290
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
291
|
+
name:
|
|
292
|
+
type: string
|
|
293
|
+
description: Task name
|
|
294
|
+
example: "Character Design Task"
|
|
295
|
+
task_type_id:
|
|
296
|
+
type: string
|
|
297
|
+
format: uuid
|
|
298
|
+
description: Task type identifier
|
|
299
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
300
|
+
task_status_id:
|
|
301
|
+
type: string
|
|
302
|
+
format: uuid
|
|
303
|
+
description: Task status identifier
|
|
304
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
305
|
+
entity_id:
|
|
306
|
+
type: string
|
|
307
|
+
format: uuid
|
|
308
|
+
description: Entity identifier
|
|
309
|
+
example: e68e0ie8-gi19-8009-e514-91897426g69
|
|
310
|
+
assigned_to:
|
|
311
|
+
type: string
|
|
312
|
+
format: uuid
|
|
313
|
+
description: Assigned person identifier
|
|
314
|
+
example: f79f1jf9-hj20-9010-f625-02998537h80
|
|
315
|
+
created_at:
|
|
316
|
+
type: string
|
|
317
|
+
format: date-time
|
|
318
|
+
description: Creation timestamp
|
|
319
|
+
example: "2023-01-01T12:00:00Z"
|
|
320
|
+
updated_at:
|
|
321
|
+
type: string
|
|
322
|
+
format: date-time
|
|
323
|
+
description: Last update timestamp
|
|
324
|
+
example: "2023-01-01T12:30:00Z"
|
|
156
325
|
"""
|
|
157
326
|
concept = concepts_service.get_concept(concept_id)
|
|
158
327
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -169,22 +338,58 @@ class ConceptPreviewsResource(Resource):
|
|
|
169
338
|
@jwt_required()
|
|
170
339
|
def get(self, concept_id):
|
|
171
340
|
"""
|
|
172
|
-
|
|
341
|
+
Get concept previews
|
|
173
342
|
---
|
|
343
|
+
description: Retrieve all preview files related to a specific concept. Returns them as a dictionary where keys are related task type IDs and values are arrays of previews for that task type.
|
|
174
344
|
tags:
|
|
175
|
-
|
|
176
|
-
description: It sends them as a dict.
|
|
177
|
-
Keys are related task type ids and values are arrays of preview for this task type.
|
|
345
|
+
- Concepts
|
|
178
346
|
parameters:
|
|
179
347
|
- in: path
|
|
180
348
|
name: concept_id
|
|
181
|
-
required:
|
|
349
|
+
required: true
|
|
182
350
|
type: string
|
|
183
351
|
format: uuid
|
|
184
352
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
353
|
+
description: Unique identifier of the concept
|
|
185
354
|
responses:
|
|
186
|
-
|
|
187
|
-
|
|
355
|
+
200:
|
|
356
|
+
description: Concept previews successfully retrieved
|
|
357
|
+
content:
|
|
358
|
+
application/json:
|
|
359
|
+
schema:
|
|
360
|
+
type: object
|
|
361
|
+
additionalProperties:
|
|
362
|
+
type: array
|
|
363
|
+
items:
|
|
364
|
+
type: object
|
|
365
|
+
properties:
|
|
366
|
+
id:
|
|
367
|
+
type: string
|
|
368
|
+
format: uuid
|
|
369
|
+
description: Preview unique identifier
|
|
370
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
371
|
+
name:
|
|
372
|
+
type: string
|
|
373
|
+
description: Preview name
|
|
374
|
+
example: "concept_preview_01"
|
|
375
|
+
original_name:
|
|
376
|
+
type: string
|
|
377
|
+
description: Original file name
|
|
378
|
+
example: "character_concept.jpg"
|
|
379
|
+
file_path:
|
|
380
|
+
type: string
|
|
381
|
+
description: File path
|
|
382
|
+
example: "/previews/concept/concept_preview_01.jpg"
|
|
383
|
+
task_type_id:
|
|
384
|
+
type: string
|
|
385
|
+
format: uuid
|
|
386
|
+
description: Task type identifier
|
|
387
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
388
|
+
created_at:
|
|
389
|
+
type: string
|
|
390
|
+
format: date-time
|
|
391
|
+
description: Creation timestamp
|
|
392
|
+
example: "2023-01-01T12:00:00Z"
|
|
188
393
|
"""
|
|
189
394
|
concept = concepts_service.get_concept(concept_id)
|
|
190
395
|
user_service.check_project_access(concept["project_id"])
|
|
@@ -198,20 +403,84 @@ class ConceptsAndTasksResource(Resource):
|
|
|
198
403
|
@jwt_required()
|
|
199
404
|
def get(self):
|
|
200
405
|
"""
|
|
201
|
-
|
|
406
|
+
Get concepts and tasks
|
|
202
407
|
---
|
|
408
|
+
description: Retrieve all concepts and all related tasks included in the response.
|
|
203
409
|
tags:
|
|
204
|
-
|
|
410
|
+
- Concepts
|
|
205
411
|
parameters:
|
|
206
412
|
- in: query
|
|
207
413
|
name: project_id
|
|
208
|
-
required:
|
|
414
|
+
required: false
|
|
209
415
|
type: string
|
|
210
416
|
format: uuid
|
|
211
417
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
418
|
+
description: Filter concepts by specific project
|
|
212
419
|
responses:
|
|
213
|
-
|
|
214
|
-
|
|
420
|
+
200:
|
|
421
|
+
description: Concepts with tasks successfully retrieved
|
|
422
|
+
content:
|
|
423
|
+
application/json:
|
|
424
|
+
schema:
|
|
425
|
+
type: array
|
|
426
|
+
items:
|
|
427
|
+
type: object
|
|
428
|
+
properties:
|
|
429
|
+
id:
|
|
430
|
+
type: string
|
|
431
|
+
format: uuid
|
|
432
|
+
description: Concept unique identifier
|
|
433
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
434
|
+
name:
|
|
435
|
+
type: string
|
|
436
|
+
description: Concept name
|
|
437
|
+
example: "Character Design"
|
|
438
|
+
description:
|
|
439
|
+
type: string
|
|
440
|
+
description: Concept description
|
|
441
|
+
example: "Main character concept art"
|
|
442
|
+
project_id:
|
|
443
|
+
type: string
|
|
444
|
+
format: uuid
|
|
445
|
+
description: Project identifier
|
|
446
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
447
|
+
project_name:
|
|
448
|
+
type: string
|
|
449
|
+
description: Project name
|
|
450
|
+
example: "My Animation Project"
|
|
451
|
+
asset_type_name:
|
|
452
|
+
type: string
|
|
453
|
+
description: Asset type name
|
|
454
|
+
example: "Character"
|
|
455
|
+
tasks:
|
|
456
|
+
type: array
|
|
457
|
+
items:
|
|
458
|
+
type: object
|
|
459
|
+
properties:
|
|
460
|
+
id:
|
|
461
|
+
type: string
|
|
462
|
+
format: uuid
|
|
463
|
+
description: Task unique identifier
|
|
464
|
+
example: c46c8gc6-eg97-6887-c292-79675204e47
|
|
465
|
+
name:
|
|
466
|
+
type: string
|
|
467
|
+
description: Task name
|
|
468
|
+
example: "Character Design Task"
|
|
469
|
+
task_type_id:
|
|
470
|
+
type: string
|
|
471
|
+
format: uuid
|
|
472
|
+
description: Task type identifier
|
|
473
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
474
|
+
created_at:
|
|
475
|
+
type: string
|
|
476
|
+
format: date-time
|
|
477
|
+
description: Creation timestamp
|
|
478
|
+
example: "2023-01-01T12:00:00Z"
|
|
479
|
+
updated_at:
|
|
480
|
+
type: string
|
|
481
|
+
format: date-time
|
|
482
|
+
description: Last update timestamp
|
|
483
|
+
example: "2023-01-01T12:30:00Z"
|
|
215
484
|
"""
|
|
216
485
|
criterions = query.get_query_criterions_from_request(request)
|
|
217
486
|
user_service.check_project_access(criterions.get("project_id", None))
|
|
@@ -227,20 +496,57 @@ class ProjectConceptsResource(Resource, ArgsMixin):
|
|
|
227
496
|
@jwt_required()
|
|
228
497
|
def get(self, project_id):
|
|
229
498
|
"""
|
|
230
|
-
|
|
499
|
+
Get project concepts
|
|
231
500
|
---
|
|
501
|
+
description: Retrieve all concepts that are related to a specific project.
|
|
232
502
|
tags:
|
|
233
|
-
|
|
503
|
+
- Concepts
|
|
234
504
|
parameters:
|
|
235
505
|
- in: path
|
|
236
506
|
name: project_id
|
|
237
|
-
required:
|
|
507
|
+
required: true
|
|
238
508
|
type: string
|
|
239
509
|
format: uuid
|
|
240
510
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
511
|
+
description: Unique identifier of the project
|
|
241
512
|
responses:
|
|
242
|
-
|
|
243
|
-
|
|
513
|
+
200:
|
|
514
|
+
description: List of project concepts successfully retrieved
|
|
515
|
+
content:
|
|
516
|
+
application/json:
|
|
517
|
+
schema:
|
|
518
|
+
type: array
|
|
519
|
+
items:
|
|
520
|
+
type: object
|
|
521
|
+
properties:
|
|
522
|
+
id:
|
|
523
|
+
type: string
|
|
524
|
+
format: uuid
|
|
525
|
+
description: Concept unique identifier
|
|
526
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
527
|
+
name:
|
|
528
|
+
type: string
|
|
529
|
+
description: Concept name
|
|
530
|
+
example: "Character Design"
|
|
531
|
+
description:
|
|
532
|
+
type: string
|
|
533
|
+
description: Concept description
|
|
534
|
+
example: "Main character concept art"
|
|
535
|
+
project_id:
|
|
536
|
+
type: string
|
|
537
|
+
format: uuid
|
|
538
|
+
description: Project identifier
|
|
539
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
540
|
+
created_at:
|
|
541
|
+
type: string
|
|
542
|
+
format: date-time
|
|
543
|
+
description: Creation timestamp
|
|
544
|
+
example: "2023-01-01T12:00:00Z"
|
|
545
|
+
updated_at:
|
|
546
|
+
type: string
|
|
547
|
+
format: date-time
|
|
548
|
+
description: Last update timestamp
|
|
549
|
+
example: "2023-01-01T12:30:00Z"
|
|
244
550
|
"""
|
|
245
551
|
projects_service.get_project(project_id)
|
|
246
552
|
user_service.check_project_access(project_id)
|
|
@@ -256,33 +562,92 @@ class ProjectConceptsResource(Resource, ArgsMixin):
|
|
|
256
562
|
@jwt_required()
|
|
257
563
|
def post(self, project_id):
|
|
258
564
|
"""
|
|
259
|
-
Create
|
|
565
|
+
Create concept
|
|
260
566
|
---
|
|
567
|
+
description: Create a new concept for a specific project with name, description, and optional entity concept links.
|
|
261
568
|
tags:
|
|
262
|
-
|
|
569
|
+
- Concepts
|
|
263
570
|
parameters:
|
|
264
571
|
- in: path
|
|
265
572
|
name: project_id
|
|
266
|
-
required:
|
|
573
|
+
required: true
|
|
267
574
|
type: string
|
|
268
575
|
format: uuid
|
|
269
576
|
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
577
|
+
description: Unique identifier of the project
|
|
578
|
+
requestBody:
|
|
579
|
+
required: true
|
|
580
|
+
content:
|
|
581
|
+
application/json:
|
|
582
|
+
schema:
|
|
583
|
+
type: object
|
|
584
|
+
required:
|
|
585
|
+
- name
|
|
586
|
+
properties:
|
|
587
|
+
name:
|
|
588
|
+
type: string
|
|
589
|
+
description: Concept name
|
|
590
|
+
example: "Character Design"
|
|
591
|
+
description:
|
|
592
|
+
type: string
|
|
593
|
+
description: Concept description
|
|
594
|
+
example: "Main character concept art"
|
|
595
|
+
data:
|
|
596
|
+
type: object
|
|
597
|
+
description: Additional concept data
|
|
598
|
+
example: {"style": "realistic", "mood": "heroic"}
|
|
599
|
+
entity_concept_links:
|
|
600
|
+
type: array
|
|
601
|
+
items:
|
|
602
|
+
type: string
|
|
603
|
+
format: uuid
|
|
604
|
+
description: List of entity concept link identifiers
|
|
605
|
+
example: ["b35b7fb5-df86-5776-b181-68564193d36", "c46c8gc6-eg97-6887-c292-79675204e47"]
|
|
283
606
|
responses:
|
|
284
|
-
|
|
285
|
-
|
|
607
|
+
201:
|
|
608
|
+
description: Concept successfully created
|
|
609
|
+
content:
|
|
610
|
+
application/json:
|
|
611
|
+
schema:
|
|
612
|
+
type: object
|
|
613
|
+
properties:
|
|
614
|
+
id:
|
|
615
|
+
type: string
|
|
616
|
+
format: uuid
|
|
617
|
+
description: Concept unique identifier
|
|
618
|
+
example: a24a6ea4-ce75-4665-a070-57453082c25
|
|
619
|
+
name:
|
|
620
|
+
type: string
|
|
621
|
+
description: Concept name
|
|
622
|
+
example: "Character Design"
|
|
623
|
+
description:
|
|
624
|
+
type: string
|
|
625
|
+
description: Concept description
|
|
626
|
+
example: "Main character concept art"
|
|
627
|
+
project_id:
|
|
628
|
+
type: string
|
|
629
|
+
format: uuid
|
|
630
|
+
description: Project identifier
|
|
631
|
+
example: b35b7fb5-df86-5776-b181-68564193d36
|
|
632
|
+
data:
|
|
633
|
+
type: object
|
|
634
|
+
description: Additional concept data
|
|
635
|
+
example: {"style": "realistic", "mood": "heroic"}
|
|
636
|
+
created_by:
|
|
637
|
+
type: string
|
|
638
|
+
format: uuid
|
|
639
|
+
description: Creator person identifier
|
|
640
|
+
example: d57d9hd7-fh08-7998-d403-80786315f58
|
|
641
|
+
created_at:
|
|
642
|
+
type: string
|
|
643
|
+
format: date-time
|
|
644
|
+
description: Creation timestamp
|
|
645
|
+
example: "2023-01-01T12:00:00Z"
|
|
646
|
+
updated_at:
|
|
647
|
+
type: string
|
|
648
|
+
format: date-time
|
|
649
|
+
description: Last update timestamp
|
|
650
|
+
example: "2023-01-01T12:00:00Z"
|
|
286
651
|
"""
|
|
287
652
|
(name, data, description, entity_concept_links) = self.get_arguments()
|
|
288
653
|
projects_service.get_project(project_id)
|