| """ | |
| # ============================================================================== | |
| # API Schemas | |
| # ============================================================================== | |
| This module defines the schemas for the public-facing API endpoints used | |
| by the Salamandra Vision 7B application. Each schema specifies the HTTP | |
| method, endpoint path, expected input fields, and default values where | |
| applicable. These schemas are used for client integration, validation, | |
| and automatic documentation generation. | |
| The endpoints defined here cover multiple types of input, including | |
| multipart form-data for file uploads and JSON bodies for structured requests. | |
| Each schema is structured as a dictionary to provide all necessary metadata | |
| for request construction, validation, and automatic client use. | |
| # ============================================================================== | |
| """ | |
| DESCRIBE_RAW_MULTIPART = { | |
| "method": "POST", | |
| "path": "/api/describe_raw", | |
| "multipart_fields": [ | |
| {"name": "image", "type": "file"}, | |
| {"name": "text", "type": "text", "default": "Describe la imagen con detalle."}, | |
| {"name": "max_new_tokens", "type": "int", "default": 256}, | |
| {"name": "temperature", "type": "float", "default": 0.7} | |
| ] | |
| } | |
| PREDICT_JSON = { | |
| "method": "POST", | |
| "path": "/api/predict/describe", | |
| "json_body": {"data": ["<file or url>", "prompt text", 256, 0.7]} | |
| } | |
| FACE_IMAGE_EMBEDDING = { | |
| "method": "POST", | |
| "path": "/api/face_image_embedding", | |
| "multipart_fields": [ | |
| {"name": "image", "type": "file"} | |
| ] | |
| } | |
| SCENES_EXTRACTION = { | |
| "method": "POST", | |
| "path": "/api/scenes_extraction", | |
| "multipart_fields": [ | |
| {"name": "video_file", "type": "str"}, | |
| {"name": "threshold", "type": "float", "default": 30.0, "description": "Sensibilidad para identificar escenas diferentes"}, | |
| {"name": "offset_frames", "type": "int", "default": 10, "description": "En vez de te coja la primera imagen de la escena te la coja un poco avanzada en la escena" }, | |
| {"name": "crop_ratio", "type": "float", "default": 0.1, "description": "Recorte en los bordes de la imagen (para evitar marcas de agua)"} | |
| ] | |
| } | |
| IMAGES_EVERY_SECOND_EXTRACTION = { | |
| "method": "POST", | |
| "path": "/api/keyframes_every_second_extraction", | |
| "multipart_fields": [ | |
| {"name": "video_file", "type": "str"}, | |
| {"name": "crop_ratio", "type": "float", "default": 0.1, "description": "Recorte en los bordes de la imagen (para evitar marcas de agua)"} | |
| ] | |
| } | |
| IMAGE_LIST_DESCRIPTION = { | |
| "method": "POST", | |
| "path": "/api/describe_images", | |
| "multipart_fields": [ | |
| {"name": "image", "type": "file"} | |
| ] | |
| } | |
| ADD_OCR_CHARACTERS = { | |
| "method": "POST", | |
| "path": "/api/add_ocr_characters_to_image", | |
| "multipart_fields": [ | |
| {"name": "image", "type": "file"}, | |
| {"name": "informacion_image", "type": "string"}, | |
| {"name": "face_col", "type": "string"} | |
| ] | |
| } |