diff --git a/host/src/server/api/mod.rs b/host/src/server/api/mod.rs index 7ae9e6774..b40f05233 100644 --- a/host/src/server/api/mod.rs +++ b/host/src/server/api/mod.rs @@ -1,3 +1,4 @@ +use alloy_primitives::FixedBytes; use axum::{ body::HttpBody, extract::Request, @@ -6,6 +7,8 @@ use axum::{ response::Response, Router, }; +use raiko_lib::input::{GuestOutput, WrappedHeader}; +use serde::Serialize; use tower::ServiceBuilder; use tower_http::{ compression::CompressionLayer, @@ -13,7 +16,7 @@ use tower_http::{ set_header::SetResponseHeaderLayer, trace::TraceLayer, }; -use utoipa::OpenApi; +use utoipa::{OpenApi, ToSchema}; use utoipa_swagger_ui::SwaggerUi; use crate::ProverState; @@ -42,7 +45,10 @@ mod proof; schemas( crate::request::ProofRequestOpt, crate::error::HostError, - crate::request::ProverSpecificOpts + crate::request::ProverSpecificOpts, + WrappedHeaderDoc, + GuestOutputDoc, + ProofResponse, ) ), tags( @@ -54,6 +60,39 @@ mod proof; /// The root API struct which is generated from the `OpenApi` derive macro. pub struct Docs; +#[derive(Debug, Serialize, ToSchema)] +/// The response body of a proof request. +pub enum ProofResponse { + Native { + #[schema(value_type = GuestOutputDoc)] + output: GuestOutput, + }, + Sgx { + proof: String, + quote: String, + }, + Sp1 { + proof: String, + #[schema(value_type = GuestOutputDoc)] + output: GuestOutput, + }, + Risc0 { + proof: String, + }, +} + +#[derive(Debug, Serialize, ToSchema)] +pub enum GuestOutputDoc { + #[schema(value_type = (WrappedHeaderDoc, String))] + Success((WrappedHeader, FixedBytes<32>)), + Failure, +} + +#[derive(Debug, Serialize, ToSchema)] +pub struct WrappedHeaderDoc { + pub header: Vec, +} + #[must_use] pub fn create_docs() -> utoipa::openapi::OpenApi { [ diff --git a/host/src/server/api/proof.rs b/host/src/server/api/proof.rs index 6a6c61e0b..7bee281cf 100644 --- a/host/src/server/api/proof.rs +++ b/host/src/server/api/proof.rs @@ -61,7 +61,7 @@ fn set_cached_input( #[utoipa::path(post, path = "/proof", tag = "Proving", responses ( - (status = 200, description = "Successfully created proof for request") + (status = 200, description = "Successfully created proof for request", body = ProofResponse) ) )] #[debug_handler(state = ProverState)]