idd / API_REFERENCE.md
esmaill1
feat: implement image processing core, FastAPI backend, and full-stack integration tests
f19ba0f
|
Raw
History Blame Contribute Delete
6.85 kB
# EL HELAL Studio API Reference
This document provides a comprehensive overview of all available REST API endpoints for the headless EL HELAL Studio image processing backend.
The backend is built with **FastAPI**. All JSON responses follow standard HTTP status codes. By default, the API runs on `http://localhost:8000`.
An interactive Swagger UI is also automatically generated and available at `http://localhost:8000/docs`.
---
## Table of Contents
1. [Core Pipeline](#1-core-pipeline)
2. [Global Settings](#2-global-settings)
3. [Frames & Assets](#3-frames--assets)
4. [State & Utility](#4-state--utility)
5. [Backup & Restore](#5-backup--restore)
6. [Static Files](#6-static-files)
---
## 1. Core Pipeline
These endpoints manage the actual upload and processing of images through the AI pipeline.
### Upload Image
Uploads an initial image, corrects EXIF orientation, and generates a lightweight thumbnail for UI previews.
- **URL:** `/upload`
- **Method:** `POST`
- **Content-Type:** `multipart/form-data`
- **Parameters:**
- `file` (File, required): The raw image file (JPG/PNG/etc).
- **Success Response:** (200 OK)
```json
{
"id": "uuid-string",
"filename": "original_name.jpg",
"thumb_url": "/static/uploads/uuid-string_thumb.jpg",
"width": 4000,
"height": 3000
}
```
### Process Image
Passes an uploaded image through the configured AI processing steps (Restoration, Crop, Background Removal, AI Color Correction, Retouching, and Layout Generation).
- **URL:** `/process/{file_id}`
- **Method:** `POST`
- **Content-Type:** `application/x-www-form-urlencoded` or `multipart/form-data`
- **Path Parameters:**
- `file_id` (string, required): The UUID returned from the `/upload` endpoint.
- **Form Parameters (All Optional with defaults):**
- `name` (string): Text string to render in the layout.
- `id_number` (string): ID string to render in the layout.
- `do_restore` (bool, default: `false`): Enable GFPGAN/CodeFormer face restoration.
- `fidelity` (float, default: `0.5`): Restoration fidelity balance.
- `do_rmbg` (bool, default: `true`): Enable BRIA-RMBG-2.0 background removal.
- `do_color` (bool, default: `true`): Enable AI ColorUNet color correction.
- `do_retouch` (bool, default: `true`): Enable skin blemish retouching.
- `do_crop` (bool, default: `true`): Enable auto-cropping to 4x6.
- `add_studio_name` (bool, default: `true`): Render studio name on layout.
- `add_logo` (bool, default: `true`): Render studio logo on layout.
- `add_date` (bool, default: `true`): Render current date on layout.
- `frame_color` (string): Custom hex color for the layout frame (e.g., `#ffffff`).
- `frame_name` (string): Filename of a custom overlay frame.
- `x1`, `y1`, `x2`, `y2` (int): Bounding box coordinates for a manual crop override.
- **Success Response:** (200 OK)
```json
{
"id": "uuid-string",
"result_url": "/static/results/uuid-string_layout.jpg",
"preview_url": "/static/results/uuid-string_preview.jpg"
}
```
- **Error Responses:**
- `404 Not Found`: If the `file_id` does not exist in the uploads directory.
- `503 Service Unavailable`: If the AI models are still loading (`models["ready"] == False`).
- `500 Internal Server Error`: For pipeline processing exceptions.
---
## 2. Global Settings
Manage system-wide configuration such as retouching sensitivity and text defaults.
### Get Settings
Fetches the current backend configuration.
- **URL:** `/settings`
- **Method:** `GET`
- **Success Response:** (200 OK)
```json
{
"retouch": {
"enabled": true,
"sensitivity": 3.0,
"tone_smoothing": 0.6
},
"layout": {
"default_frame_color": "#ffffff"
}
}
```
### Update Settings
Merges a JSON payload into the existing `config/settings.json`.
- **URL:** `/settings`
- **Method:** `POST`
- **Content-Type:** `application/json`
- **Body:** A partial or complete settings JSON object.
- **Success Response:** (200 OK)
```json
{
"status": "success"
}
```
---
## 3. Frames & Assets
Manage custom layout overlay frames.
### List Frames
- **URL:** `/frames`
- **Method:** `GET`
- **Success Response:** (200 OK)
```json
{
"frames": [
{
"filename": "frame-example.png",
"url": "/assets/frame-example.png"
}
]
}
```
### Upload Frame
- **URL:** `/frames`
- **Method:** `POST`
- **Content-Type:** `multipart/form-data`
- **Parameters:**
- `file` (File, required): A PNG/JPG/WEBP image file.
- **Success Response:** (200 OK)
```json
{
"status": "success",
"frame": {
"filename": "frame-1234abcd.png",
"url": "/assets/frame-1234abcd.png"
}
}
```
### Delete Frame
- **URL:** `/frames/{filename}`
- **Method:** `DELETE`
- **Path Parameters:**
- `filename` (string, required): The exact internal filename (must start with `frame-`).
- **Success Response:** (200 OK)
```json
{
"status": "success"
}
```
---
## 4. State & Utility
### Get API Status
Check if background initialization (like loading the PyTorch machine learning models) is complete. You should ping this endpoint before allowing a user to click "Process".
- **URL:** `/status`
- **Method:** `GET`
- **Success Response:** (200 OK)
```json
{
"ai_ready": true
}
```
### Clear All Storage
Manually purges all stored files (`uploads/`, `processed/`, and `results/`). Normally, a background cleanup task does this atomically for files older than 24 hours.
- **URL:** `/clear-all`
- **Method:** `POST`
- **Success Response:** (200 OK)
```json
{
"status": "success",
"removed_count": 15
}
```
---
## 5. Backup & Restore
### Export Backup
Packages the configurations, uploaded frames, and an optionally provided frontend client state into a `.zip` archive.
- **URL:** `/backup/export`
- **Method:** `POST`
- **Content-Type:** `application/json`
- **Body:**
- `client_data` (dict, optional): Any frontend state to include in the backup zip.
- **Success Response:** (200 OK)
- Returns a binary `.zip` file download via `StreamingResponse`.
### Import Backup
Restores configuration and assets from a previously exported `.zip`.
- **URL:** `/backup/import`
- **Method:** `POST`
- **Content-Type:** `multipart/form-data`
- **Parameters:**
- `file` (File, required): The `.zip` backup file.
- **Success Response:** (200 OK)
```json
{
"status": "success",
"client_data": { ... }
}
```
---
## 6. Static Files
The FastAPI server mounts internal directories for direct read-only access.
- **Images & Results:** `GET /static/...`
- Maps to the `./storage/` directory.
- _Usage:_ `/static/uploads/{id}_thumb.jpg` or `/static/results/{id}_layout.jpg`
- **App Assets:** `GET /assets/...`
- Maps to the `./assets/` directory.
- _Usage:_ `/assets/frame-custom.png`