use serde::Deserialize;
use std::collections::HashMap;
#[derive(Deserialize, Debug)]
pub struct GetModel {
pub url: String,
pub owner: String,
pub name: String,
pub description: String,
pub visibility: String,
pub github_url: Option<String>,
pub paper_url: Option<String>,
pub license_url: Option<String>,
pub run_count: Option<u32>,
pub cover_image_url: Option<String>,
pub default_example: Option<GetPrediction>,
pub latest_version: Option<GetModelVersion>,
}
#[derive(serde::Deserialize, Debug)]
pub struct GetCollectionModels {
pub name: String,
pub slug: String,
pub description: String,
pub models: Vec<GetModel>,
}
#[derive(serde::Deserialize, Debug)]
pub struct PredictionsUrls {
pub cancel: String,
pub get: String,
}
#[derive(serde::Deserialize, Debug)]
pub struct GetPrediction {
pub id: String,
pub version: String,
pub urls: PredictionsUrls,
pub created_at: String,
pub started_at: String,
pub completed_at: Option<String>,
pub source: Option<PredictionSource>,
pub status: PredictionStatus,
pub input: HashMap<String, serde_json::Value>,
pub output: Option<serde_json::Value>,
pub error: Option<String>,
pub logs: Option<String>,
pub metrics: Option<HashMap<String, serde_json::Value>>,
}
#[derive(Debug, serde::Deserialize)]
pub struct GetTraining {
pub id: String,
pub version: String,
pub status: PredictionStatus,
pub input: Option<HashMap<String, String>>,
pub output: Option<HashMap<String, String>>,
pub error: Option<String>,
pub logs: Option<String>,
pub webhook_completed: Option<String>,
pub started_at: Option<String>,
pub created_at: String,
pub completed_at: Option<String>,
}
#[derive(Debug, serde::Deserialize)]
pub struct CreateTraining {
pub id: String,
pub version: String,
pub status: PredictionStatus,
pub input: Option<HashMap<String, String>>,
pub output: Option<HashMap<String, String>>,
pub logs: Option<String>,
pub started_at: Option<String>,
pub created_at: String,
pub completed_at: Option<String>,
}
#[derive(serde::Deserialize, Debug)]
pub struct CreatePrediction {
pub id: String,
pub version: String,
pub urls: PredictionsUrls,
pub created_at: String,
pub status: PredictionStatus,
pub input: HashMap<String, serde_json::Value>,
pub error: Option<String>,
pub logs: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct GetModelVersion {
pub id: String,
pub created_at: String,
pub cog_version: String,
pub openapi_schema: HashMap<String, serde_json::Value>,
}
#[derive(Deserialize, Debug)]
pub struct ListCollectionModelsItem {
pub name: String,
pub slug: String,
pub description: String,
}
#[derive(Deserialize, Debug)]
pub struct ListCollectionModels {
pub previous: Option<String>,
pub next: Option<String>,
pub results: Vec<ListCollectionModelsItem>,
}
#[derive(serde::Deserialize, Debug)]
pub struct PredictionsListItem {
pub id: String,
pub version: String,
pub urls: PredictionsUrls,
pub created_at: String,
pub started_at: String,
pub completed_at: Option<String>,
pub source: Option<PredictionSource>,
pub status: PredictionStatus,
}
#[derive(serde::Deserialize, Debug)]
pub struct ListPredictions {
pub previous: Option<String>,
pub next: Option<String>,
pub results: Vec<PredictionsListItem>,
}
#[derive(serde::Deserialize, Debug)]
pub struct ListModelVersions {
pub previous: Option<String>,
pub next: Option<String>,
pub results: Vec<GetModelVersion>,
}
#[derive(Debug, serde::Deserialize)]
pub struct ListTrainingItem {
pub id: String,
pub version: String,
pub urls: PredictionsUrls,
pub created_at: String,
pub started_at: String,
pub completed_at: String,
pub source: PredictionSource,
pub status: PredictionStatus,
}
#[derive(Debug, serde::Deserialize)]
pub struct ListTraining {
pub previous: Option<String>,
pub next: Option<String>,
pub results: Vec<ListTrainingItem>,
}
#[derive(serde::Deserialize, Debug)]
#[allow(non_camel_case_types)]
pub enum PredictionSource {
api,
web,
}
#[derive(serde::Deserialize, Debug)]
#[allow(non_camel_case_types)]
pub enum PredictionStatus {
starting,
processing,
succeeded,
failed,
canceled,
}
#[allow(non_camel_case_types)]
pub enum WebhookEvents {
start,
output,
logs,
completed,
}