{"openapi":"3.1.0","info":{"title":"Grandline Exterior AI Backend API","description":"API for Grandline Exterior AI Backend","version":"1.0.0"},"paths":{"/api/v1/health_check":{"get":{"tags":["Health Check"],"summary":"Health Check","operationId":"Health_Check_api_v1_health_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_NoneType_"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Auth"],"summary":"Login","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequestDto"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginSuccessResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["Auth"],"summary":"Refresh","operationId":"refresh_api_v1_auth_refresh_post","parameters":[{"name":"refresh_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginSuccessResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["Auth"],"summary":"Logout","operationId":"logout_api_v1_auth_logout_post","responses":{"204":{"description":"Successful Response"}}}},"/api/v1/auth/me":{"get":{"tags":["Auth"],"summary":"Get Me","operationId":"get_me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileDto"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/roles":{"get":{"tags":["Roles"],"summary":"Get Roles","operationId":"get_roles_api_v1_roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/RoleSortBy","default":"created_at"}},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","default":"asc"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleResponseDto"},"title":"Response Get Roles Api V1 Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Roles"],"summary":"Create Role","operationId":"create_role_api_v1_roles_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreateDto"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/roles/{role_id}":{"patch":{"tags":["Roles"],"summary":"Update Role","operationId":"update_role_api_v1_roles__role_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Roles"],"summary":"Delete Role","operationId":"delete_role_api_v1_roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects":{"post":{"tags":["Projects"],"summary":"Create Project","operationId":"create_project_api_v1_projects_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectType","default":"general"}},{"name":"generation_mode","in":"query","required":false,"schema":{"$ref":"#/components/schemas/GenerationMode","default":"full"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Projects"],"summary":"List Projects","operationId":"list_projects_api_v1_projects_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"sort_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectSortBy","default":"updated_at"}},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectSortOrder","default":"asc"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ProjectStatus"},{"type":"null"}],"title":"Status"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ProjectType"},{"type":"null"}],"title":"Type"}},{"name":"generation_mode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/GenerationMode"},{"type":"null"}],"title":"Generation Mode"}},{"name":"is_archived","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}":{"patch":{"tags":["Projects"],"summary":"Rename Project","operationId":"rename_project_api_v1_projects__project_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRenameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Projects"],"summary":"Get Project","operationId":"get_project_api_v1_projects__project_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/archive":{"patch":{"tags":["Projects"],"summary":"Archive Project","operationId":"archive_project_api_v1_projects__project_id__archive_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectArchiveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBaseResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-eraser":{"post":{"tags":["Projects"],"summary":"Run Eraser","operationId":"run_eraser_api_v1_projects__project_id__run_eraser_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"project_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectType","default":"general"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_eraser_api_v1_projects__project_id__run_eraser_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-element-adder":{"post":{"tags":["Projects"],"summary":"Run Element Adder","operationId":"run_element_adder_api_v1_projects__project_id__run_element_adder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"project_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectType","default":"general"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_element_adder_api_v1_projects__project_id__run_element_adder_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-essentials":{"post":{"tags":["Projects"],"summary":"Run Essentials","operationId":"run_essentials_api_v1_projects__project_id__run_essentials_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_essentials_api_v1_projects__project_id__run_essentials_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-decorations":{"post":{"tags":["Projects"],"summary":"Run Decorations","operationId":"run_decorations_api_v1_projects__project_id__run_decorations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_decorations_api_v1_projects__project_id__run_decorations_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-windows":{"post":{"tags":["Projects"],"summary":"Run Windows","operationId":"run_windows_api_v1_projects__project_id__run_windows_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_windows_api_v1_projects__project_id__run_windows_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/run-doors":{"post":{"tags":["Projects"],"summary":"Run Doors","operationId":"run_doors_api_v1_projects__project_id__run_doors_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_run_doors_api_v1_projects__project_id__run_doors_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/export":{"post":{"tags":["Projects"],"summary":"Export Project","operationId":"export_project_api_v1_projects__project_id__export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"project_type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ProjectType","default":"general"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectExportPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectExportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/projects/{project_id}/specification":{"get":{"tags":["Projects"],"summary":"Get Project Image Specification","operationId":"get_project_image_specification_api_v1_projects__project_id__specification_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"project_image_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Image Id"}},{"name":"project_generation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectImageSpecificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gallery-images":{"get":{"tags":["Gallery Images"],"summary":"Get Gallery Images","operationId":"get_gallery_images_api_v1_gallery_images_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"}},{"name":"roof_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roof Category"}},{"name":"roof_sub_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roof Sub Category"}},{"name":"roof_product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roof Product"}},{"name":"roof_shade","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Roof Shade"}},{"name":"front_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Front Category"}},{"name":"front_sub_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Front Sub Category"}},{"name":"front_product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Front Product"}},{"name":"front_shade","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Front Shade"}},{"name":"basement_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basement Category"}},{"name":"basement_sub_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basement Sub Category"}},{"name":"basement_product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basement Product"}},{"name":"basement_shade","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basement Shade"}},{"name":"is_visualization","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Visualization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/gallery-sync/manual-sync":{"post":{"tags":["Gallery Sync"],"summary":"Manual Sync","operationId":"manual_sync_api_v1_gallery_sync_manual_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/feedbacks/stats":{"post":{"tags":["Feedback Reports"],"summary":"Get Feedback Stats","operationId":"get_feedback_stats_api_v1_feedbacks_stats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFeedbackStatsDto"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/feedbacks/export":{"get":{"tags":["Feedback Reports"],"summary":"List Exports","operationId":"list_exports_api_v1_feedbacks_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Feedback Reports"],"summary":"Create Export","operationId":"create_export_api_v1_feedbacks_export_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequestDto"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/feedbacks/export/status/{task_id}":{"get":{"tags":["Feedback Reports"],"summary":"Get Export Status","operationId":"get_export_status_api_v1_feedbacks_export_status__task_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/feedbacks/export/download/{task_id}":{"get":{"tags":["Feedback Reports"],"summary":"Download Export","operationId":"download_export_api_v1_feedbacks_export_download__task_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user-stats":{"get":{"tags":["User Stats"],"summary":"Get User Stats","operationId":"get_user_stats_api_v1_user_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"preset","in":"query","required":false,"schema":{"$ref":"#/components/schemas/StatsPeriodPreset","default":"last_month"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date To"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"role_keys","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ключи ролей через запятую","title":"Role Keys"},"description":"Ключи ролей через запятую"},{"name":"group_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/StatsGroupBy","default":"role"}},{"name":"only_active","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Only Active"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","default":"desc"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":25,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserStatsResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/feedbacks":{"post":{"tags":["Feedbacks"],"summary":"Set Feedback","operationId":"set_feedback_api_v1_feedbacks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeedbackDto"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/favorites":{"get":{"tags":["Favorites"],"summary":"List Favorites","operationId":"list_favorites_api_v1_favorites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Favorites"],"summary":"Add Favorite","operationId":"add_favorite_api_v1_favorites_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFavoriteDto"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/favorites/media-ids":{"get":{"tags":["Favorites"],"summary":"List Favorite Media Ids","operationId":"list_favorite_media_ids_api_v1_favorites_media_ids_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/favorites/{media_id}":{"delete":{"tags":["Favorites"],"summary":"Remove Favorite","operationId":"remove_favorite_api_v1_favorites__media_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"string","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/profile":{"get":{"tags":["Profile"],"summary":"Get Profile","operationId":"get_profile_api_v1_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponseDto"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Profile"],"summary":"Update Profile","operationId":"update_profile_api_v1_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileUpdateDto"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/profile/watermark":{"post":{"tags":["Profile"],"summary":"Upload Watermark","operationId":"upload_watermark_api_v1_profile_watermark_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_watermark_api_v1_profile_watermark_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["Profile"],"summary":"Delete Watermark","operationId":"delete_watermark_api_v1_profile_watermark_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileResponseDto"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-messages/my":{"get":{"tags":["Service Messages"],"summary":"Get My Service Messages","operationId":"get_my_service_messages_api_v1_service_messages_my_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageMyListResponseDto"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-messages/read-all":{"post":{"tags":["Service Messages"],"summary":"Mark All Service Messages Read","operationId":"mark_all_service_messages_read_api_v1_service_messages_read_all_post","responses":{"204":{"description":"Successful Response"}},"security":[{"HTTPBearer":[]}]}},"/api/v1/service-messages/{message_id}/read":{"post":{"tags":["Service Messages"],"summary":"Mark Service Message Read","operationId":"mark_service_message_read_api_v1_service_messages__message_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-messages":{"get":{"tags":["Service Messages Admin"],"summary":"List Service Messages","operationId":"list_service_messages_api_v1_service_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ServiceMessageStatus"},{"type":"null"}],"title":"Status"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":25,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageListResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Service Messages Admin"],"summary":"Create Service Message","operationId":"create_service_message_api_v1_service_messages_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageCreateDto"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/service-messages/{message_id}":{"get":{"tags":["Service Messages Admin"],"summary":"Get Service Message","operationId":"get_service_message_api_v1_service_messages__message_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Service Messages Admin"],"summary":"Update Service Message","operationId":"update_service_message_api_v1_service_messages__message_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceMessageResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Service Messages Admin"],"summary":"Delete Service Message","operationId":"delete_service_message_api_v1_service_messages__message_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/products":{"get":{"tags":["General Products"],"summary":"Get Products","operationId":"get_products_api_v1_general_products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":40,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}},{"name":"include_feedback","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Feedback"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_ProductResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["General Products"],"summary":"Create Product","operationId":"create_product_api_v1_general_products_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/products/{product_id}":{"get":{"tags":["General Products"],"summary":"Get Product","operationId":"get_product_api_v1_general_products__product_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["General Products"],"summary":"Update Product","operationId":"update_product_api_v1_general_products__product_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["General Products"],"summary":"Delete Product","operationId":"delete_product_api_v1_general_products__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Product Api V1 General Products  Product Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/products/{product_id}/upload-image":{"post":{"tags":["General Products"],"summary":"Upload Product Image","operationId":"upload_product_image_api_v1_general_products__product_id__upload_image_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_product_image_api_v1_general_products__product_id__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories":{"get":{"tags":["General Categories"],"summary":"Get Categories","operationId":"get_categories_api_v1_general_categories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":40,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_CategoryResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["General Categories"],"summary":"Create Category","operationId":"create_category_api_v1_general_categories_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories/{category_id}":{"get":{"tags":["General Categories"],"summary":"Get Category","operationId":"get_category_api_v1_general_categories__category_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["General Categories"],"summary":"Update Category","operationId":"update_category_api_v1_general_categories__category_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["General Categories"],"summary":"Delete Category","operationId":"delete_category_api_v1_general_categories__category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Category Api V1 General Categories  Category Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories/{category_id}/upload-image":{"post":{"tags":["General Categories"],"summary":"Upload Category Image","operationId":"upload_category_image_api_v1_general_categories__category_id__upload_image_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_category_image_api_v1_general_categories__category_id__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories/{category_id}/subcategories":{"get":{"tags":["General Subcategories"],"summary":"Get Sub Categories","operationId":"get_sub_categories_api_v1_general_categories__category_id__subcategories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":40,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_SubCategoryResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["General Subcategories"],"summary":"Create Sub Category","operationId":"create_sub_category_api_v1_general_categories__category_id__subcategories_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubCategoryCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubCategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories/{category_id}/subcategories/{sub_category_id}":{"get":{"tags":["General Subcategories"],"summary":"Get Sub Category","operationId":"get_sub_category_api_v1_general_categories__category_id__subcategories__sub_category_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}},{"name":"sub_category_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubCategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["General Subcategories"],"summary":"Update Sub Category","operationId":"update_sub_category_api_v1_general_categories__category_id__subcategories__sub_category_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}},{"name":"sub_category_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubCategoryUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubCategoryResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["General Subcategories"],"summary":"Delete Sub Category","operationId":"delete_sub_category_api_v1_general_categories__category_id__subcategories__sub_category_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}},{"name":"sub_category_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Sub Category Api V1 General Categories  Category Id  Subcategories  Sub Category Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/categories/{category_id}/subcategories/{sub_category_id}/upload-image":{"post":{"tags":["General Subcategories"],"summary":"Upload Sub Category Image","operationId":"upload_sub_category_image_api_v1_general_categories__category_id__subcategories__sub_category_id__upload_image_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","title":"Category Id"}},{"name":"sub_category_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Category Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_sub_category_image_api_v1_general_categories__category_id__subcategories__sub_category_id__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/shades":{"get":{"tags":["General Shades"],"summary":"Get Shades","operationId":"get_shades_api_v1_general_shades_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_ShadeResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["General Shades"],"summary":"Create Shade","operationId":"create_shade_api_v1_general_shades_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadeCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadeResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/general/shades/{shade_id}":{"get":{"tags":["General Shades"],"summary":"Get Shade","operationId":"get_shade_api_v1_general_shades__shade_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shade_id","in":"path","required":true,"schema":{"type":"string","title":"Shade Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadeResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["General Shades"],"summary":"Update Shade","operationId":"update_shade_api_v1_general_shades__shade_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shade_id","in":"path","required":true,"schema":{"type":"string","title":"Shade Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadeUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadeResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["General Shades"],"summary":"Delete Shade","operationId":"delete_shade_api_v1_general_shades__shade_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shade_id","in":"path","required":true,"schema":{"type":"string","title":"Shade Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Shade Api V1 General Shades  Shade Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/app-settings":{"get":{"tags":["App Settings"],"summary":"Get App Settings","operationId":"get_app_settings_api_v1_app_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AppSettingDto"},"type":"array","title":"Response Get App Settings Api V1 App Settings Get"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["App Settings"],"summary":"Update App Settings","operationId":"update_app_settings_api_v1_app_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSettingsBulkUpdateDto"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AppSettingDto"},"type":"array","title":"Response Update App Settings Api V1 App Settings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/app-settings/image-models":{"get":{"tags":["App Settings"],"summary":"Get Image Models","operationId":"get_image_models_api_v1_app_settings_image_models_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ImageProxyProvider"},{"type":"null"}],"title":"Provider"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageModelsResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/windows/products":{"get":{"tags":["Windows Products"],"summary":"Get Window Products","operationId":"get_window_products_api_v1_windows_products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":40,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}},{"name":"sashes","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"}},{"name":"shape","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Shape"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_WindowProductResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Windows Products"],"summary":"Create Window Product","operationId":"create_window_product_api_v1_windows_products_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowProductCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/windows/products/{product_id}":{"get":{"tags":["Windows Products"],"summary":"Get Window Product","operationId":"get_window_product_api_v1_windows_products__product_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Windows Products"],"summary":"Update Window Product","operationId":"update_window_product_api_v1_windows_products__product_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowProductUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Windows Products"],"summary":"Delete Window Product","operationId":"delete_window_product_api_v1_windows_products__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Window Product Api V1 Windows Products  Product Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/windows/products/{product_id}/upload-image":{"post":{"tags":["Windows Products"],"summary":"Upload Window Product Image","operationId":"upload_window_product_image_api_v1_windows_products__product_id__upload_image_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_window_product_image_api_v1_windows_products__product_id__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/windows/attributes":{"get":{"tags":["Windows Attributes"],"summary":"Get Window Attributes","operationId":"get_window_attributes_api_v1_windows_attributes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sashes","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"}},{"name":"shape","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Shape"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WindowAttributesResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/windows/sashes":{"get":{"tags":["Windows Attributes"],"summary":"Get Window Sashes","operationId":"get_window_sashes_api_v1_windows_sashes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WindowAttributeValueDto"},"type":"array","title":"Response Get Window Sashes Api V1 Windows Sashes Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/windows/shapes":{"get":{"tags":["Windows Attributes"],"summary":"Get Window Shapes","operationId":"get_window_shapes_api_v1_windows_shapes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WindowAttributeValueDto"},"type":"array","title":"Response Get Window Shapes Api V1 Windows Shapes Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/doors/products":{"get":{"tags":["Doors Products"],"summary":"Get Door Products","operationId":"get_door_products_api_v1_doors_products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":40,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"filters","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Filters"}},{"name":"sorts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sorts"}},{"name":"material","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Material"}},{"name":"sashes","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"}},{"name":"side_section","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Side Section"}},{"name":"transom","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponseDto_DoorProductResponseDto_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Doors Products"],"summary":"Create Door Product","operationId":"create_door_product_api_v1_doors_products_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorProductCreateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/doors/products/{product_id}":{"get":{"tags":["Doors Products"],"summary":"Get Door Product","operationId":"get_door_product_api_v1_doors_products__product_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Doors Products"],"summary":"Update Door Product","operationId":"update_door_product_api_v1_doors_products__product_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorProductUpdateDto"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorProductResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Doors Products"],"summary":"Delete Door Product","operationId":"delete_door_product_api_v1_doors_products__product_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Door Product Api V1 Doors Products  Product Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/doors/products/{product_id}/upload-image":{"post":{"tags":["Doors Products"],"summary":"Upload Door Product Image","operationId":"upload_door_product_image_api_v1_doors_products__product_id__upload_image_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"string","title":"Product Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_door_product_image_api_v1_doors_products__product_id__upload_image_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/doors/attributes":{"get":{"tags":["Doors Attributes"],"summary":"Get Door Attributes","operationId":"get_door_attributes_api_v1_doors_attributes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"material","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Material"}},{"name":"sashes","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"}},{"name":"side_section","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Side Section"}},{"name":"transom","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoorAttributesResponseDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/doors/materials":{"get":{"tags":["Doors Attributes"],"summary":"Get Door Materials","operationId":"get_door_materials_api_v1_doors_materials_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Response Get Door Materials Api V1 Doors Materials Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/doors/sashes":{"get":{"tags":["Doors Attributes"],"summary":"Get Door Sashes","operationId":"get_door_sashes_api_v1_doors_sashes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Response Get Door Sashes Api V1 Doors Sashes Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/doors/side-sections":{"get":{"tags":["Doors Attributes"],"summary":"Get Door Side Sections","operationId":"get_door_side_sections_api_v1_doors_side_sections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Response Get Door Side Sections Api V1 Doors Side Sections Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/doors/transoms":{"get":{"tags":["Doors Attributes"],"summary":"Get Door Transoms","operationId":"get_door_transoms_api_v1_doors_transoms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Response Get Door Transoms Api V1 Doors Transoms Get"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AddableElement":{"type":"string","enum":["roof","porch","terrace"],"title":"AddableElement","description":"Элементы дома для пайплайна «Добавление элементов»."},"ApiResponse_NoneType_":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"data":{"type":"null","title":"Data"}},"type":"object","required":["data"],"title":"ApiResponse[NoneType]"},"AppSettingDto":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"},"category":{"type":"string","title":"Category"}},"type":"object","required":["key","value","category"],"title":"AppSettingDto"},"AppSettingUpdateItemDto":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"AppSettingUpdateItemDto"},"AppSettingsBulkUpdateDto":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AppSettingUpdateItemDto"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"AppSettingsBulkUpdateDto"},"Body_run_decorations_api_v1_projects__project_id__run_decorations_post":{"properties":{"settings":{"type":"string","title":"Settings"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"},"front_additional_mask":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Front Additional Mask"},"soffit_mask":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Soffit Mask"},"front_windows_mask":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Front Windows Mask"},"front_corners_mask":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Front Corners Mask"}},"type":"object","required":["settings"],"title":"Body_run_decorations_api_v1_projects__project_id__run_decorations_post"},"Body_run_doors_api_v1_projects__project_id__run_doors_post":{"properties":{"door_product_ids":{"items":{"type":"string"},"type":"array","title":"Door Product Ids"},"door_masks":{"items":{"type":"string","format":"binary"},"type":"array","title":"Door Masks"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"},"src_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Src Media Id"}},"type":"object","required":["door_product_ids","door_masks"],"title":"Body_run_doors_api_v1_projects__project_id__run_doors_post"},"Body_run_element_adder_api_v1_projects__project_id__run_element_adder_post":{"properties":{"element_adder_mask":{"type":"string","contentMediaType":"application/octet-stream","title":"Element Adder Mask"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"},"src_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Src Media Id"},"elements":{"anyOf":[{"items":{"$ref":"#/components/schemas/AddableElement"},"type":"array"},{"type":"null"}],"title":"Elements"}},"type":"object","required":["element_adder_mask"],"title":"Body_run_element_adder_api_v1_projects__project_id__run_element_adder_post"},"Body_run_eraser_api_v1_projects__project_id__run_eraser_post":{"properties":{"eraser_mask":{"type":"string","contentMediaType":"application/octet-stream","title":"Eraser Mask"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"},"src_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Src Media Id"}},"type":"object","required":["eraser_mask"],"title":"Body_run_eraser_api_v1_projects__project_id__run_eraser_post"},"Body_run_essentials_api_v1_projects__project_id__run_essentials_post":{"properties":{"settings":{"type":"string","title":"Settings"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"}},"type":"object","required":["settings"],"title":"Body_run_essentials_api_v1_projects__project_id__run_essentials_post"},"Body_run_windows_api_v1_projects__project_id__run_windows_post":{"properties":{"window_product_ids":{"items":{"type":"string"},"type":"array","title":"Window Product Ids"},"window_masks":{"items":{"type":"string","format":"binary"},"type":"array","title":"Window Masks"},"src_image":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Src Image"},"src_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Src Media Id"}},"type":"object","required":["window_product_ids","window_masks"],"title":"Body_run_windows_api_v1_projects__project_id__run_windows_post"},"Body_upload_category_image_api_v1_general_categories__category_id__upload_image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_category_image_api_v1_general_categories__category_id__upload_image_post"},"Body_upload_door_product_image_api_v1_doors_products__product_id__upload_image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_door_product_image_api_v1_doors_products__product_id__upload_image_post"},"Body_upload_product_image_api_v1_general_products__product_id__upload_image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_product_image_api_v1_general_products__product_id__upload_image_post"},"Body_upload_sub_category_image_api_v1_general_categories__category_id__subcategories__sub_category_id__upload_image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_sub_category_image_api_v1_general_categories__category_id__subcategories__sub_category_id__upload_image_post"},"Body_upload_watermark_api_v1_profile_watermark_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_watermark_api_v1_profile_watermark_post"},"Body_upload_window_product_image_api_v1_windows_products__product_id__upload_image_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_window_product_image_api_v1_windows_products__product_id__upload_image_post"},"CategoryCreateDto":{"properties":{"name":{"type":"string","title":"Name"},"parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/CombinationPart"},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["name"],"title":"CategoryCreateDto"},"CategoryDto":{"properties":{"name":{"type":"string","title":"Name"},"parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/CombinationPart"},"type":"array"},{"type":"null"}],"title":"Parts"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name","id"],"title":"CategoryDto"},"CategoryResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"media":{"$ref":"#/components/schemas/MediaResponseDto"},"parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/CombinationPart"},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["id","name","media"],"title":"CategoryResponseDto"},"CategoryUpdateDto":{"properties":{"name":{"type":"string","title":"Name"},"parts":{"anyOf":[{"items":{"$ref":"#/components/schemas/CombinationPart"},"type":"array"},{"type":"null"}],"title":"Parts"}},"type":"object","required":["name"],"title":"CategoryUpdateDto"},"CombinationPart":{"type":"string","enum":["ROOF_COVER","ROOF_END_FRAME","ROOF_ENDOVA","ROOF_RIDGE","ROOF_SNOW_HOLDERS","ROOF_FLUE","DRAINAGE_SYSTEM_GUTTER","DRAINAGE_SYSTEM_FUNNEL","DRAINAGE_SYSTEM_TUBE","DRAINAGE_SYSTEM_WITHDRAWAL","SOFFIT","FRONT_COVER","FRONT_CORNERS","FRONT_WINDOWS","FRONT_DOORS","FRONT_TIDES","BASEMENT_COVER","BASEMENT_CORNERS"],"title":"CombinationPart"},"CreateFavoriteDto":{"properties":{"media_id":{"type":"string","format":"uuid","title":"Media Id"}},"type":"object","required":["media_id"],"title":"CreateFavoriteDto"},"CreateFeedbackDto":{"properties":{"image_id":{"type":"string","format":"uuid","title":"Image Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"rating":{"type":"integer","title":"Rating"}},"type":"object","required":["image_id","rating"],"title":"CreateFeedbackDto"},"DecoratorType":{"type":"string","enum":["front_additional","soffit","front_windows","front_corners"],"title":"DecoratorType"},"DoorAttributeValueDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["id"],"title":"DoorAttributeValueDto"},"DoorAttributesResponseDto":{"properties":{"materials":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Materials"},"sashes":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Sashes"},"side_sections":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Side Sections"},"transoms":{"items":{"$ref":"#/components/schemas/DoorAttributeValueDto"},"type":"array","title":"Transoms"}},"type":"object","required":["materials","sashes","side_sections","transoms"],"title":"DoorAttributesResponseDto"},"DoorProductCreateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"material":{"type":"string","format":"uuid","title":"Material"},"sashes":{"type":"string","format":"uuid","title":"Sashes"},"side_section":{"type":"string","format":"uuid","title":"Side Section"},"transom":{"type":"string","format":"uuid","title":"Transom"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","material","sashes","side_section","transom"],"title":"DoorProductCreateDto"},"DoorProductResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"material":{"anyOf":[{"$ref":"#/components/schemas/DoorAttributeValueDto"},{"type":"null"}]},"sashes":{"anyOf":[{"$ref":"#/components/schemas/DoorAttributeValueDto"},{"type":"null"}]},"side_section":{"anyOf":[{"$ref":"#/components/schemas/DoorAttributeValueDto"},{"type":"null"}]},"transom":{"anyOf":[{"$ref":"#/components/schemas/DoorAttributeValueDto"},{"type":"null"}]},"media":{"$ref":"#/components/schemas/MediaResponseDto"}},"type":"object","required":["id","name","media"],"title":"DoorProductResponseDto"},"DoorProductUpdateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"material":{"type":"string","format":"uuid","title":"Material"},"sashes":{"type":"string","format":"uuid","title":"Sashes"},"side_section":{"type":"string","format":"uuid","title":"Side Section"},"transom":{"type":"string","format":"uuid","title":"Transom"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","material","sashes","side_section","transom"],"title":"DoorProductUpdateDto"},"EssentialType":{"type":"string","enum":["roof","front","basement","gutter"],"title":"EssentialType"},"ExportFormat":{"type":"string","enum":["pdf","png"],"title":"ExportFormat"},"ExportRequestDto":{"properties":{"export_format":{"$ref":"#/components/schemas/FeedbackExportFormat"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"Начало периода (ISO, YYYY-MM-DD). По умолчанию — за 30 дней до end_date."},"end_date":{"type":"string","format":"date","title":"End Date","description":"Конец периода (ISO, YYYY-MM-DD). По умолчанию — сегодня."}},"type":"object","required":["export_format","start_date","end_date"],"title":"ExportRequestDto"},"FeedbackExportFormat":{"type":"string","enum":["csv","json"],"title":"FeedbackExportFormat"},"GenerationMode":{"type":"string","enum":["full","decor_only"],"title":"GenerationMode","description":"Режим генерации проекта конфигуратора домов (\"Основной\" / \"Доп. элементы\").\n\nНе путать с ProjectGenerationType (essentials/decorations/windows/eraser) ниже —\nтот описывает тип отдельного шага генерации для трекинга стоимости, этот —\nрежим всего проекта целиком."},"GetFeedbackStatsDto":{"properties":{"roof":{"type":"boolean","title":"Roof"},"front":{"type":"boolean","title":"Front"},"basement":{"type":"boolean","title":"Basement"},"gutter":{"type":"boolean","title":"Gutter"},"season":{"$ref":"#/components/schemas/SeasonFilter"},"landscape_design":{"$ref":"#/components/schemas/LandscapeDesignFilter"},"enable_background_environment":{"type":"boolean","title":"Enable Background Environment"},"decorate_front_additional":{"type":"boolean","title":"Decorate Front Additional"},"decorate_front_windows":{"type":"boolean","title":"Decorate Front Windows"},"decorate_front_corners":{"type":"boolean","title":"Decorate Front Corners"},"decorate_soffit":{"type":"boolean","title":"Decorate Soffit"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"}},"type":"object","required":["roof","front","basement","gutter","season","landscape_design","enable_background_environment","decorate_front_additional","decorate_front_windows","decorate_front_corners","decorate_soffit"],"title":"GetFeedbackStatsDto"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageModelOptionDto":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"quality_options":{"items":{"type":"string"},"type":"array","title":"Quality Options","default":[]}},"type":"object","required":["value","label"],"title":"ImageModelOptionDto"},"ImageModelsResponseDto":{"properties":{"provider":{"$ref":"#/components/schemas/ImageProxyProvider"},"models":{"items":{"$ref":"#/components/schemas/ImageModelOptionDto"},"type":"array","title":"Models"}},"type":"object","required":["provider","models"],"title":"ImageModelsResponseDto"},"ImageProxyProvider":{"type":"string","enum":["ai_tunnel","comet_api"],"title":"ImageProxyProvider","description":"Image generation proxy provider.\n\nOnly AI Tunnel is currently wired; Comet is kept as a pluggable option."},"LandscapeDesignFilter":{"type":"string","enum":["ignore","any","none","english_garden","high_tech","scandinavian","naturalistic","random"],"title":"LandscapeDesignFilter"},"LandscapeDesignType":{"type":"string","enum":["english_garden","high_tech","scandinavian","naturalistic","random"],"title":"LandscapeDesignType"},"LoginRequestDto":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"session_check_callback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Check Callback"},"session_params":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Params"}},"type":"object","title":"LoginRequestDto"},"LoginSuccessResponseDto":{"properties":{"access_token":{"type":"string","title":"Access Token"}},"type":"object","required":["access_token"],"title":"LoginSuccessResponseDto"},"MediaResponseDto":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"}],"title":"Id","default":""},"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"MediaResponseDto"},"MetricGroup":{"type":"string","enum":["Генерации","Параметры","Скачивания","Оценки","Деньги"],"title":"MetricGroup","description":"Группа колонок в таблице статистики."},"MetricUnit":{"type":"string","enum":["count","average","money"],"title":"MetricUnit","description":"Как показывать значение в таблице."},"PaginatedResponseDto_CategoryResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/CategoryResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[CategoryResponseDto]"},"PaginatedResponseDto_DoorProductResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/DoorProductResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[DoorProductResponseDto]"},"PaginatedResponseDto_ProductResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/ProductResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[ProductResponseDto]"},"PaginatedResponseDto_ShadeResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/ShadeResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[ShadeResponseDto]"},"PaginatedResponseDto_SubCategoryResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/SubCategoryResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[SubCategoryResponseDto]"},"PaginatedResponseDto_WindowProductResponseDto_":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/WindowProductResponseDto"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PaginatedResponseDto[WindowProductResponseDto]"},"ProductCategoryDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"ProductCategoryDto"},"ProductCreateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"shade":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Shade"},"category":{"type":"string","format":"uuid","title":"Category"},"sub_category":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sub Category"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"visual_type":{"$ref":"#/components/schemas/VisualType"},"part":{"$ref":"#/components/schemas/CombinationPart"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","category","visual_type","part"],"title":"ProductCreateDto"},"ProductFeedbackDto":{"properties":{"likes":{"type":"integer","title":"Likes"},"neutral":{"type":"integer","title":"Neutral"},"dislikes":{"type":"integer","title":"Dislikes"}},"type":"object","required":["likes","neutral","dislikes"],"title":"ProductFeedbackDto"},"ProductResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"part":{"anyOf":[{"$ref":"#/components/schemas/CombinationPart"},{"type":"null"}]},"shade":{"anyOf":[{"$ref":"#/components/schemas/ShadeResponseDto"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"visual_type":{"$ref":"#/components/schemas/VisualType"},"category":{"$ref":"#/components/schemas/ProductCategoryDto"},"sub_category":{"anyOf":[{"$ref":"#/components/schemas/SubCategoryDto"},{"type":"null"}]},"media":{"$ref":"#/components/schemas/MediaResponseDto"},"feedback":{"anyOf":[{"$ref":"#/components/schemas/ProductFeedbackDto"},{"type":"null"}]}},"type":"object","required":["id","name","visual_type","category","media"],"title":"ProductResponseDto"},"ProductUpdateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"shade":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Shade"},"category":{"type":"string","format":"uuid","title":"Category"},"sub_category":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sub Category"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"visual_type":{"$ref":"#/components/schemas/VisualType"},"part":{"$ref":"#/components/schemas/CombinationPart"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","category","visual_type","part"],"title":"ProductUpdateDto"},"ProfileApiDataDto":{"properties":{"fio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fio"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"ProfileApiDataDto"},"ProfileDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"external_uid":{"type":"string","title":"External Uid"},"role":{"type":"string","title":"Role"},"role_display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Display Name"},"features":{"items":{"$ref":"#/components/schemas/RoleFeature"},"type":"array","title":"Features"},"limits":{"items":{"$ref":"#/components/schemas/ProfileLimitDto"},"type":"array","title":"Limits"},"is_active":{"type":"boolean","title":"Is Active"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","required":["id","external_uid","role","features","limits","is_active"],"title":"ProfileDto"},"ProfileLimitDto":{"properties":{"key":{"$ref":"#/components/schemas/RoleLimitKey"},"value":{"type":"integer","title":"Value"},"remaining_value":{"type":"integer","title":"Remaining Value"},"is_reached":{"type":"boolean","title":"Is Reached"}},"type":"object","required":["key","value","remaining_value","is_reached"],"title":"ProfileLimitDto"},"ProjectArchiveRequest":{"properties":{"is_archived":{"type":"boolean","title":"Is Archived"}},"type":"object","required":["is_archived"],"title":"ProjectArchiveRequest"},"ProjectBaseResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"author":{"type":"string","format":"uuid","title":"Author"},"status":{"$ref":"#/components/schemas/ProjectStatus"},"type":{"$ref":"#/components/schemas/ProjectType"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"generation_mode":{"$ref":"#/components/schemas/GenerationMode"},"is_archived":{"type":"boolean","title":"Is Archived"}},"type":"object","required":["id","created_at","updated_at","author","status","type","generation_mode","is_archived"],"title":"ProjectBaseResponse"},"ProjectDecoratorSpecificationItem":{"properties":{"decorator_type":{"$ref":"#/components/schemas/DecoratorType"},"specification":{"$ref":"#/components/schemas/ProjectSpecificationResponseItem"}},"type":"object","required":["decorator_type","specification"],"title":"ProjectDecoratorSpecificationItem"},"ProjectDoorResponse":{"properties":{"product_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Product Id"},"product_name":{"type":"string","title":"Product Name"},"product_image":{"anyOf":[{"$ref":"#/components/schemas/MediaResponseDto"},{"type":"null"}]}},"type":"object","required":["product_name"],"title":"ProjectDoorResponse"},"ProjectExportFileResponse":{"properties":{"url":{"type":"string","title":"Url"},"name":{"type":"string","title":"Name"}},"type":"object","required":["url","name"],"title":"ProjectExportFileResponse"},"ProjectExportPayload":{"properties":{"image_index":{"type":"integer","minimum":1.0,"title":"Image Index","default":1},"image_type":{"$ref":"#/components/schemas/ProjectImageType","default":"dist"},"gallery_image_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Gallery Image Ids"},"format":{"$ref":"#/components/schemas/ExportFormat","default":"pdf"},"suggested_gallery_image_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Suggested Gallery Image Ids"}},"type":"object","title":"ProjectExportPayload"},"ProjectExportResponse":{"properties":{"files":{"items":{"$ref":"#/components/schemas/ProjectExportFileResponse"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"ProjectExportResponse"},"ProjectGeneratedImageResponse":{"properties":{"image_type":{"type":"string","enum":["dist","decorated"],"title":"Image Type"},"image_index":{"type":"integer","title":"Image Index"},"project_image_id":{"type":"string","format":"uuid","title":"Project Image Id"},"image":{"anyOf":[{"$ref":"#/components/schemas/ProjectImageResponse"},{"type":"null"}]},"image_with_watermark":{"anyOf":[{"$ref":"#/components/schemas/ProjectImageResponse"},{"type":"null"}]},"rating":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rating"}},"type":"object","required":["image_type","image_index","project_image_id"],"title":"ProjectGeneratedImageResponse"},"ProjectImageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"url":{"type":"string","title":"Url"}},"type":"object","required":["id","url"],"title":"ProjectImageResponse"},"ProjectImageSpecificationResponse":{"properties":{"decorators":{"items":{"$ref":"#/components/schemas/ProjectDecoratorSpecificationItem"},"type":"array","title":"Decorators"}},"type":"object","title":"ProjectImageSpecificationResponse"},"ProjectImageType":{"type":"string","enum":["thumbnail","src","erased","dist","dist_watermark","decorated","decorated_watermark"],"title":"ProjectImageType"},"ProjectImagesResponse":{"properties":{"thumbnail":{"anyOf":[{"$ref":"#/components/schemas/ProjectImageResponse"},{"type":"null"}]},"src":{"anyOf":[{"$ref":"#/components/schemas/ProjectImageResponse"},{"type":"null"}]},"erased":{"anyOf":[{"$ref":"#/components/schemas/ProjectImageResponse"},{"type":"null"}]},"dist":{"items":{"$ref":"#/components/schemas/ProjectGeneratedImageResponse"},"type":"array","title":"Dist"}},"type":"object","title":"ProjectImagesResponse"},"ProjectListItemResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"status":{"$ref":"#/components/schemas/ProjectStatus"},"type":{"$ref":"#/components/schemas/ProjectType"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"generation_mode":{"$ref":"#/components/schemas/GenerationMode"},"is_archived":{"type":"boolean","title":"Is Archived"},"thumbnail":{"anyOf":[{"$ref":"#/components/schemas/MediaResponseDto"},{"type":"null"}]}},"type":"object","required":["id","created_at","updated_at","status","type","generation_mode","is_archived"],"title":"ProjectListItemResponse"},"ProjectListMetaResponse":{"properties":{"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"total":{"type":"integer","title":"Total"},"has_next":{"type":"boolean","title":"Has Next"},"sort_by":{"$ref":"#/components/schemas/ProjectSortBy"},"sort_order":{"$ref":"#/components/schemas/ProjectSortOrder"}},"type":"object","required":["limit","offset","total","has_next","sort_by","sort_order"],"title":"ProjectListMetaResponse"},"ProjectListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"type":"array","title":"Items"},"meta":{"$ref":"#/components/schemas/ProjectListMetaResponse"}},"type":"object","required":["meta"],"title":"ProjectListResponse"},"ProjectRenameRequest":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"ProjectRenameRequest"},"ProjectResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"author":{"type":"string","format":"uuid","title":"Author"},"status":{"$ref":"#/components/schemas/ProjectStatus"},"type":{"$ref":"#/components/schemas/ProjectType"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"generation_mode":{"$ref":"#/components/schemas/GenerationMode"},"is_archived":{"type":"boolean","title":"Is Archived"},"essentials":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ProjectSpecificationResponseItem"},{"type":"null"}]},"propertyNames":{"$ref":"#/components/schemas/EssentialType"},"type":"object","title":"Essentials"},"windows":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProjectWindowResponse"},"type":"array"},{"type":"null"}],"title":"Windows"},"doors":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProjectDoorResponse"},"type":"array"},{"type":"null"}],"title":"Doors"},"settings":{"$ref":"#/components/schemas/ProjectSettingsResponse"},"images":{"$ref":"#/components/schemas/ProjectImagesResponse"},"pending_decoration_generation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Pending Decoration Generation Id"}},"type":"object","required":["id","created_at","updated_at","author","status","type","generation_mode","is_archived","essentials","settings","images"],"title":"ProjectResponse"},"ProjectSettingsResponse":{"properties":{"season":{"anyOf":[{"$ref":"#/components/schemas/Season"},{"type":"null"}]},"landscape_design":{"anyOf":[{"$ref":"#/components/schemas/LandscapeDesignType"},{"type":"null"}]},"enable_background_environment":{"type":"boolean","title":"Enable Background Environment","default":false}},"type":"object","title":"ProjectSettingsResponse"},"ProjectSortBy":{"type":"string","enum":["created_at","updated_at","status"],"title":"ProjectSortBy"},"ProjectSortOrder":{"type":"string","enum":["asc","desc"],"title":"ProjectSortOrder"},"ProjectSpecificationCategory":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"part":{"anyOf":[{"$ref":"#/components/schemas/CombinationPart"},{"type":"null"}]}},"type":"object","required":["id","name"],"title":"ProjectSpecificationCategory"},"ProjectSpecificationProduct":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"visual_type":{"anyOf":[{"$ref":"#/components/schemas/VisualType"},{"type":"null"}]},"media":{"anyOf":[{"$ref":"#/components/schemas/MediaResponseDto"},{"type":"null"}]}},"type":"object","required":["id","name"],"title":"ProjectSpecificationProduct"},"ProjectSpecificationResponseItem":{"properties":{"category":{"anyOf":[{"$ref":"#/components/schemas/ProjectSpecificationCategory"},{"type":"null"}]},"sub_category":{"anyOf":[{"$ref":"#/components/schemas/ProjectSpecificationSubCategory"},{"type":"null"}]},"product":{"$ref":"#/components/schemas/ProjectSpecificationProduct"},"texture_scale":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Texture Scale"}},"type":"object","required":["product"],"title":"ProjectSpecificationResponseItem"},"ProjectSpecificationSubCategory":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"ProjectSpecificationSubCategory"},"ProjectStatus":{"type":"string","enum":["initial","queued","erasing","erased","adding_elements","elements_added","generating","generating_landscape_design","generated","decorating_front_additional","decorating_soffit","decorating_front_windows","decorating_front_doors","decorating_front_corners","decorated","failed"],"title":"ProjectStatus"},"ProjectType":{"type":"string","enum":["general","windows","doors"],"title":"ProjectType"},"ProjectWindowResponse":{"properties":{"product_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Product Id"},"product_name":{"type":"string","title":"Product Name"},"product_image":{"anyOf":[{"$ref":"#/components/schemas/MediaResponseDto"},{"type":"null"}]}},"type":"object","required":["product_name"],"title":"ProjectWindowResponse"},"RoleCreateDto":{"properties":{"name":{"type":"string","maxLength":100,"minLength":2,"title":"Name"},"display_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":2},{"type":"null"}],"title":"Display Name"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active","default":true},"features":{"items":{"$ref":"#/components/schemas/RoleFeature"},"type":"array","title":"Features"},"limits":{"items":{"$ref":"#/components/schemas/RoleLimitDto"},"type":"array","title":"Limits"}},"type":"object","required":["name"],"title":"RoleCreateDto"},"RoleFeature":{"type":"string","enum":["is_general_admin","is_general_user","is_windows_admin","is_windows_user","is_doors_admin","is_doors_user","can_disable_watermark","can_change_watermark","can_personalize","is_history_enabled","can_export_similar_images","can_archive_projects","can_add_elements","can_manage_service_messages","can_view_service_messages"],"title":"RoleFeature"},"RoleLimitDto":{"properties":{"key":{"$ref":"#/components/schemas/RoleLimitKey"},"value":{"type":"integer","title":"Value"}},"type":"object","required":["key","value"],"title":"RoleLimitDto"},"RoleLimitKey":{"type":"string","enum":["trial_period_hours","trial_period_generations_count","daily_generations_limit","hourly_generations_limit","house_configurator_results_count","generations_storage_period_hours"],"title":"RoleLimitKey"},"RoleLimitUpdateDto":{"properties":{"key":{"$ref":"#/components/schemas/RoleLimitKey"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"}},"type":"object","required":["key","value"],"title":"RoleLimitUpdateDto"},"RoleResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_active":{"type":"boolean","title":"Is Active"},"features":{"items":{"$ref":"#/components/schemas/RoleFeature"},"type":"array","title":"Features"},"limits":{"items":{"$ref":"#/components/schemas/RoleLimitDto"},"type":"array","title":"Limits"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","key","name","display_name","description","is_active","features","limits","created_at","updated_at"],"title":"RoleResponseDto"},"RoleSortBy":{"type":"string","enum":["name","is_active","created_at","updated_at"],"title":"RoleSortBy"},"RoleUpdateDto":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":2},{"type":"null"}],"title":"Name"},"display_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":2},{"type":"null"}],"title":"Display Name"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"features":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoleFeature"},"type":"array"},{"type":"null"}],"title":"Features"},"limits":{"anyOf":[{"items":{"$ref":"#/components/schemas/RoleLimitUpdateDto"},"type":"array"},{"type":"null"}],"title":"Limits"}},"type":"object","title":"RoleUpdateDto"},"Season":{"type":"string","enum":["winter","spring","summer","autumn"],"title":"Season"},"SeasonFilter":{"type":"string","enum":["ignore","any","none","winter","spring","summer","autumn"],"title":"SeasonFilter"},"ServiceMessageCountsDto":{"properties":{"all":{"type":"integer","title":"All"},"active":{"type":"integer","title":"Active"},"scheduled":{"type":"integer","title":"Scheduled"},"ended":{"type":"integer","title":"Ended"}},"type":"object","required":["all","active","scheduled","ended"],"title":"ServiceMessageCountsDto"},"ServiceMessageCreateDto":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"},"target_all":{"type":"boolean","title":"Target All","default":true},"role_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Role Ids"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"}},"type":"object","required":["title","text","starts_at","ends_at"],"title":"ServiceMessageCreateDto"},"ServiceMessageForUserDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"text":{"type":"string","title":"Text"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"is_read":{"type":"boolean","title":"Is Read"}},"type":"object","required":["id","title","text","starts_at","ends_at","is_read"],"title":"ServiceMessageForUserDto"},"ServiceMessageListResponseDto":{"properties":{"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/ServiceMessageResponseDto"},"type":"array","title":"Data"},"counts":{"$ref":"#/components/schemas/ServiceMessageCountsDto"}},"type":"object","required":["total","data","counts"],"title":"ServiceMessageListResponseDto"},"ServiceMessageMyListResponseDto":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ServiceMessageForUserDto"},"type":"array","title":"Items"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["items","unread_count"],"title":"ServiceMessageMyListResponseDto"},"ServiceMessageResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"text":{"type":"string","title":"Text"},"target_all":{"type":"boolean","title":"Target All"},"roles":{"items":{"$ref":"#/components/schemas/ServiceMessageRoleDto"},"type":"array","title":"Roles"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"status":{"$ref":"#/components/schemas/ServiceMessageStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","title","text","target_all","roles","starts_at","ends_at","status","created_at","updated_at"],"title":"ServiceMessageResponseDto"},"ServiceMessageRoleDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["id","key","name"],"title":"ServiceMessageRoleDto"},"ServiceMessageStatus":{"type":"string","enum":["scheduled","active","ended"],"title":"ServiceMessageStatus"},"ServiceMessageUpdateDto":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title"},"text":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Text"},"target_all":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Target All"},"role_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Role Ids"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"}},"type":"object","title":"ServiceMessageUpdateDto"},"ShadeCreateDto":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"ShadeCreateDto"},"ShadeResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"ShadeResponseDto"},"ShadeUpdateDto":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"ShadeUpdateDto"},"SortOrder":{"type":"string","enum":["asc","desc"],"title":"SortOrder"},"StatsColumnDto":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"group":{"$ref":"#/components/schemas/MetricGroup"},"unit":{"$ref":"#/components/schemas/MetricUnit"},"parent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent"},"primary":{"type":"boolean","title":"Primary","default":false}},"type":"object","required":["key","label","group","unit"],"title":"StatsColumnDto"},"StatsGroupBy":{"type":"string","enum":["user","role"],"title":"StatsGroupBy"},"StatsPeriodDto":{"properties":{"date_from":{"type":"string","format":"date-time","title":"Date From"},"date_to":{"type":"string","format":"date-time","title":"Date To"},"preset":{"$ref":"#/components/schemas/StatsPeriodPreset"}},"type":"object","required":["date_from","date_to","preset"],"title":"StatsPeriodDto"},"StatsPeriodPreset":{"type":"string","enum":["yesterday","last_week","last_month","custom"],"title":"StatsPeriodPreset"},"SubCategoryCreateDto":{"properties":{"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category"}},"type":"object","required":["name"],"title":"SubCategoryCreateDto"},"SubCategoryDto":{"properties":{"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["name","id"],"title":"SubCategoryDto"},"SubCategoryResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"media":{"$ref":"#/components/schemas/MediaResponseDto"},"category":{"$ref":"#/components/schemas/CategoryDto"}},"type":"object","required":["id","name","media","category"],"title":"SubCategoryResponseDto"},"SubCategoryUpdateDto":{"properties":{"name":{"type":"string","title":"Name"},"category":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category"}},"type":"object","required":["name"],"title":"SubCategoryUpdateDto"},"UserProfileResponseDto":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Middle Name"},"position":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Position"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"watermark":{"anyOf":[{"$ref":"#/components/schemas/MediaResponseDto"},{"type":"null"}]},"is_custom_watermark_enabled":{"type":"boolean","title":"Is Custom Watermark Enabled","default":false},"api_data":{"anyOf":[{"$ref":"#/components/schemas/ProfileApiDataDto"},{"type":"null"}]}},"type":"object","title":"UserProfileResponseDto"},"UserProfileUpdateDto":{"properties":{"last_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Last Name"},"first_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"First Name"},"middle_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Middle Name"},"position":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Position"},"company":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Company"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","title":"UserProfileUpdateDto","description":"PUT перезаписывает все поля целиком.\n\nФИО хранится тремя полями; full_name собирается из них на бэке,\nчтобы существующий подвал выгрузки продолжал работать без изменений."},"UserStatsResponseDto":{"properties":{"period":{"$ref":"#/components/schemas/StatsPeriodDto"},"group_by":{"$ref":"#/components/schemas/StatsGroupBy"},"columns":{"items":{"$ref":"#/components/schemas/StatsColumnDto"},"type":"array","title":"Columns"},"rows":{"items":{"$ref":"#/components/schemas/UserStatsRowDto"},"type":"array","title":"Rows"},"totals":{"items":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"array","title":"Totals"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["period","group_by","columns","rows","totals","total"],"title":"UserStatsResponseDto"},"UserStatsRowDto":{"properties":{"key":{"type":"string","title":"Key"},"title":{"type":"string","title":"Title"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"role_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Key"},"role_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role Name"},"values":{"items":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"array","title":"Values"}},"type":"object","required":["key","title","values"],"title":"UserStatsRowDto"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VisualType":{"type":"string","enum":["image","color"],"title":"VisualType"},"WindowAttributeValueDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value"}},"type":"object","required":["id"],"title":"WindowAttributeValueDto"},"WindowAttributesResponseDto":{"properties":{"sashes":{"items":{"$ref":"#/components/schemas/WindowAttributeValueDto"},"type":"array","title":"Sashes"},"shapes":{"items":{"$ref":"#/components/schemas/WindowAttributeValueDto"},"type":"array","title":"Shapes"}},"type":"object","required":["sashes","shapes"],"title":"WindowAttributesResponseDto"},"WindowProductCreateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"sashes":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"},"shape":{"type":"string","format":"uuid","title":"Shape"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","shape"],"title":"WindowProductCreateDto"},"WindowProductResponseDto":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"sashes":{"anyOf":[{"$ref":"#/components/schemas/WindowAttributeValueDto"},{"type":"null"}]},"shape":{"anyOf":[{"$ref":"#/components/schemas/WindowAttributeValueDto"},{"type":"null"}]},"media":{"$ref":"#/components/schemas/MediaResponseDto"}},"type":"object","required":["id","name","media"],"title":"WindowProductResponseDto"},"WindowProductUpdateDto":{"properties":{"name":{"type":"string","title":"Name"},"sku":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"sashes":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Sashes"},"shape":{"type":"string","format":"uuid","title":"Shape"},"media_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Url"}},"type":"object","required":["name","shape"],"title":"WindowProductUpdateDto"}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"Authentication token","scheme":"bearer"}}}}