summaryrefslogblamecommitdiff
path: root/makima/src/server/openapi.rs
blob: b946ff30a4b4ca81f97dd116d3efb4dc49e7198b (plain) (tree)
1
2
3
4
5
6
7
8



                                                     



                                                                                               




                                                                                                     
                             
                          
                                                                                  



                                  




                           







                              






                              


         
                                                                              
                                                                     


                  
//! OpenAPI documentation configuration using utoipa.

use utoipa::OpenApi;

use crate::db::models::{
    CreateFileRequest, File, FileListResponse, FileSummary, TranscriptEntry, UpdateFileRequest,
};
use crate::server::handlers::{files, listen};
use crate::server::messages::{ApiError, AudioEncoding, StartMessage, StopMessage, TranscriptMessage};

#[derive(OpenApi)]
#[openapi(
    info(
        title = "Makima API",
        version = "1.0.0",
        description = "Streaming audio APIs for speech-to-text with persistence.",
        license(name = "MIT"),
    ),
    paths(
        listen::websocket_handler,
        files::list_files,
        files::get_file,
        files::create_file,
        files::update_file,
        files::delete_file,
    ),
    components(
        schemas(
            ApiError,
            AudioEncoding,
            StartMessage,
            StopMessage,
            TranscriptMessage,
            // File schemas
            File,
            FileSummary,
            FileListResponse,
            CreateFileRequest,
            UpdateFileRequest,
            TranscriptEntry,
        )
    ),
    tags(
        (name = "Listen", description = "Speech-to-text streaming endpoints"),
        (name = "Files", description = "Transcript file management"),
    )
)]
pub struct ApiDoc;