1 changed files with 473 additions and 0 deletions
@ -0,0 +1,473 @@ |
|||||
|
{ |
||||
|
"openapi": "3.1.0", |
||||
|
"info": { |
||||
|
"title": "Face Swap API", |
||||
|
"description": "Face swapping with GFPGAN v1.4 restoration using filesystem paths", |
||||
|
"version": "1.0.0" |
||||
|
}, |
||||
|
"paths": { |
||||
|
"/": { |
||||
|
"get": { |
||||
|
"summary": "Root", |
||||
|
"description": "API information and documentation", |
||||
|
"operationId": "root__get", |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"type": "object", |
||||
|
"title": "Response Root Get" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/health": { |
||||
|
"get": { |
||||
|
"summary": "Health Check", |
||||
|
"description": "Health check endpoint with cache statistics", |
||||
|
"operationId": "health_check_health_get", |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/HealthResponse" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/process-image": { |
||||
|
"post": { |
||||
|
"summary": "Process Image", |
||||
|
"description": "Process a single image with face swapping and GFPGAN restoration\n\n- **input_image_path**: Path to the image to process\n- **source_face_path**: Path to the source face image\n- **output_path**: Optional path for output (default: output.jpg)", |
||||
|
"operationId": "process_image_process_image_post", |
||||
|
"requestBody": { |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/ProcessImageRequest" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"required": true |
||||
|
}, |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/ProcessResponse" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"422": { |
||||
|
"description": "Validation Error", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/HTTPValidationError" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/process-folder": { |
||||
|
"post": { |
||||
|
"summary": "Process Folder", |
||||
|
"description": "Process all images in a folder with face swapping and GFPGAN restoration\n\n- **input_folder_path**: Path to folder containing images\n- **source_face_path**: Path to the source face image\n- **output_folder_path**: Optional path to output folder (default: <input_folder>/swap)", |
||||
|
"operationId": "process_folder_process_folder_post", |
||||
|
"requestBody": { |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/ProcessFolderRequest" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"required": true |
||||
|
}, |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/FolderProcessResponse" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"422": { |
||||
|
"description": "Validation Error", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/HTTPValidationError" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/process-video": { |
||||
|
"post": { |
||||
|
"summary": "Process Video", |
||||
|
"description": "Process a video file with face swapping and GFPGAN restoration\n\n- **input_video_path**: Path to the video to process\n- **source_face_path**: Path to the source face image\n- **output_path**: Optional path for output video (default: output.mp4)", |
||||
|
"operationId": "process_video_process_video_post", |
||||
|
"requestBody": { |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/ProcessVideoRequest" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"required": true |
||||
|
}, |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/ProcessResponse" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"422": { |
||||
|
"description": "Validation Error", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"$ref": "#/components/schemas/HTTPValidationError" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/cache/clear": { |
||||
|
"post": { |
||||
|
"summary": "Clear Cache", |
||||
|
"description": "Clear the model cache\n\nThis endpoint clears all cached models from memory.\nUseful for freeing GPU memory or forcing model reload.", |
||||
|
"operationId": "clear_cache_cache_clear_post", |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"type": "object", |
||||
|
"title": "Response Clear Cache Cache Clear Post" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"/cache/stats": { |
||||
|
"get": { |
||||
|
"summary": "Get Cache Stats", |
||||
|
"description": "Get detailed cache statistics\n\nReturns information about cached models and cache performance.", |
||||
|
"operationId": "get_cache_stats_cache_stats_get", |
||||
|
"responses": { |
||||
|
"200": { |
||||
|
"description": "Successful Response", |
||||
|
"content": { |
||||
|
"application/json": { |
||||
|
"schema": { |
||||
|
"type": "object", |
||||
|
"title": "Response Get Cache Stats Cache Stats Get" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"components": { |
||||
|
"schemas": { |
||||
|
"FolderProcessResponse": { |
||||
|
"properties": { |
||||
|
"success": { |
||||
|
"type": "boolean", |
||||
|
"title": "Success" |
||||
|
}, |
||||
|
"message": { |
||||
|
"type": "string", |
||||
|
"title": "Message" |
||||
|
}, |
||||
|
"output_folder": { |
||||
|
"type": "string", |
||||
|
"title": "Output Folder" |
||||
|
}, |
||||
|
"total_images": { |
||||
|
"type": "integer", |
||||
|
"title": "Total Images" |
||||
|
}, |
||||
|
"success_count": { |
||||
|
"type": "integer", |
||||
|
"title": "Success Count" |
||||
|
}, |
||||
|
"failed_count": { |
||||
|
"type": "integer", |
||||
|
"title": "Failed Count" |
||||
|
}, |
||||
|
"processing_time": { |
||||
|
"type": "number", |
||||
|
"title": "Processing Time" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"success", |
||||
|
"message", |
||||
|
"output_folder", |
||||
|
"total_images", |
||||
|
"success_count", |
||||
|
"failed_count", |
||||
|
"processing_time" |
||||
|
], |
||||
|
"title": "FolderProcessResponse" |
||||
|
}, |
||||
|
"HTTPValidationError": { |
||||
|
"properties": { |
||||
|
"detail": { |
||||
|
"items": { |
||||
|
"$ref": "#/components/schemas/ValidationError" |
||||
|
}, |
||||
|
"type": "array", |
||||
|
"title": "Detail" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"title": "HTTPValidationError" |
||||
|
}, |
||||
|
"HealthResponse": { |
||||
|
"properties": { |
||||
|
"status": { |
||||
|
"type": "string", |
||||
|
"title": "Status" |
||||
|
}, |
||||
|
"version": { |
||||
|
"type": "string", |
||||
|
"title": "Version" |
||||
|
}, |
||||
|
"cache_stats": { |
||||
|
"type": "object", |
||||
|
"title": "Cache Stats" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"status", |
||||
|
"version", |
||||
|
"cache_stats" |
||||
|
], |
||||
|
"title": "HealthResponse" |
||||
|
}, |
||||
|
"ProcessFolderRequest": { |
||||
|
"properties": { |
||||
|
"input_folder_path": { |
||||
|
"type": "string", |
||||
|
"title": "Input Folder Path", |
||||
|
"description": "Path to folder containing images" |
||||
|
}, |
||||
|
"source_face_path": { |
||||
|
"type": "string", |
||||
|
"title": "Source Face Path", |
||||
|
"description": "Path to source face image" |
||||
|
}, |
||||
|
"output_folder_path": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "string" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "null" |
||||
|
} |
||||
|
], |
||||
|
"title": "Output Folder Path", |
||||
|
"description": "Path to output folder (default: <input_folder>/swap)" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"input_folder_path", |
||||
|
"source_face_path" |
||||
|
], |
||||
|
"title": "ProcessFolderRequest", |
||||
|
"example": { |
||||
|
"input_folder_path": "./images", |
||||
|
"output_folder_path": "./output", |
||||
|
"source_face_path": "./faces/source.png" |
||||
|
} |
||||
|
}, |
||||
|
"ProcessImageRequest": { |
||||
|
"properties": { |
||||
|
"input_image_path": { |
||||
|
"type": "string", |
||||
|
"title": "Input Image Path", |
||||
|
"description": "Path to input image file" |
||||
|
}, |
||||
|
"source_face_path": { |
||||
|
"type": "string", |
||||
|
"title": "Source Face Path", |
||||
|
"description": "Path to source face image" |
||||
|
}, |
||||
|
"output_path": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "string" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "null" |
||||
|
} |
||||
|
], |
||||
|
"title": "Output Path", |
||||
|
"description": "Path to output image (default: output.jpg)" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"input_image_path", |
||||
|
"source_face_path" |
||||
|
], |
||||
|
"title": "ProcessImageRequest", |
||||
|
"example": { |
||||
|
"input_image_path": "./images/target.jpg", |
||||
|
"output_path": "./output/result.jpg", |
||||
|
"source_face_path": "./faces/source.png" |
||||
|
} |
||||
|
}, |
||||
|
"ProcessResponse": { |
||||
|
"properties": { |
||||
|
"success": { |
||||
|
"type": "boolean", |
||||
|
"title": "Success" |
||||
|
}, |
||||
|
"message": { |
||||
|
"type": "string", |
||||
|
"title": "Message" |
||||
|
}, |
||||
|
"output_path": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "string" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "null" |
||||
|
} |
||||
|
], |
||||
|
"title": "Output Path" |
||||
|
}, |
||||
|
"processing_time": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "number" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "null" |
||||
|
} |
||||
|
], |
||||
|
"title": "Processing Time" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"success", |
||||
|
"message" |
||||
|
], |
||||
|
"title": "ProcessResponse" |
||||
|
}, |
||||
|
"ProcessVideoRequest": { |
||||
|
"properties": { |
||||
|
"input_video_path": { |
||||
|
"type": "string", |
||||
|
"title": "Input Video Path", |
||||
|
"description": "Path to input video file" |
||||
|
}, |
||||
|
"source_face_path": { |
||||
|
"type": "string", |
||||
|
"title": "Source Face Path", |
||||
|
"description": "Path to source face image" |
||||
|
}, |
||||
|
"output_path": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "string" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "null" |
||||
|
} |
||||
|
], |
||||
|
"title": "Output Path", |
||||
|
"description": "Path to output video (default: output.mp4)" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"input_video_path", |
||||
|
"source_face_path" |
||||
|
], |
||||
|
"title": "ProcessVideoRequest", |
||||
|
"example": { |
||||
|
"input_video_path": "./videos/target.mp4", |
||||
|
"output_path": "./output/result.mp4", |
||||
|
"source_face_path": "./faces/source.png" |
||||
|
} |
||||
|
}, |
||||
|
"ValidationError": { |
||||
|
"properties": { |
||||
|
"loc": { |
||||
|
"items": { |
||||
|
"anyOf": [ |
||||
|
{ |
||||
|
"type": "string" |
||||
|
}, |
||||
|
{ |
||||
|
"type": "integer" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
"type": "array", |
||||
|
"title": "Location" |
||||
|
}, |
||||
|
"msg": { |
||||
|
"type": "string", |
||||
|
"title": "Message" |
||||
|
}, |
||||
|
"type": { |
||||
|
"type": "string", |
||||
|
"title": "Error Type" |
||||
|
} |
||||
|
}, |
||||
|
"type": "object", |
||||
|
"required": [ |
||||
|
"loc", |
||||
|
"msg", |
||||
|
"type" |
||||
|
], |
||||
|
"title": "ValidationError" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue