macro_rules! imports {
($($name:ident),* $(,)?) => {$(
pub struct $name;
impl utoipa::PartialSchema for $name {
fn schema() -> utoipa::openapi::RefOr<utoipa::openapi::Schema> {
use utoipa::openapi::schema::{ObjectBuilder, SchemaType, Type};
ObjectBuilder::new()
.schema_type(SchemaType::Array(vec![
Type::Object, Type::Array, Type::String,
Type::Number, Type::Boolean,
]))
.extensions(Some([(
"x-dynamo-schema-import",
serde_json::json!({"crate": "async-openai", "type": stringify!($name)}),
)].into_iter().collect()))
.into()
}
}
impl utoipa::ToSchema for $name {
fn name() -> std::borrow::Cow<'static, str> {
concat!("async_openai.", stringify!($name)).into()
}
}
)*};
}
imports!(
FunctionType,
ImageDetail,
TopLogprobs,
FunctionObject,
ChatCompletionRequestMessageContentPartText,
ChatCompletionRequestMessageContentPartAudio,
ChatCompletionRequestSystemMessageContent,
ChatCompletionRequestAssistantMessageContent,
ChatCompletionRequestAssistantMessageAudio,
ChatCompletionRequestDeveloperMessage,
ChatCompletionRequestFunctionMessage,
Role,
ChatCompletionResponseMessageAudio,
ResponseModalities,
PredictionContent,
ChatCompletionAudio,
ResponseFormat,
ServiceTier,
ChatCompletionFunctionCall,
ChatCompletionFunctions,
WebSearchOptions,
FinishReason,
CompletionUsage,
Prompt,
);