#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct GrammarlyVersion(pub String);
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct ApiVersion(pub u64);
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct Software {
pub name: String,
pub version: GrammarlyVersion,
#[serde(rename = "apiVersion")]
pub api_version: ApiVersion,
pub premium: bool,
#[serde(rename = "premiumHint")]
pub premium_hint: String,
pub status: String,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct Warnings {
#[serde(rename = "incompleteResults")]
pub incomplete_results: bool,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct DetectedLanguage {
pub name: String,
pub code: String,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct LanguageDetails {
pub name: String,
pub code: String,
#[serde(rename = "detectedLanguage")]
pub detected_language: DetectedLanguage,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct Replacement {
pub value: String,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct Context {
pub text: String,
pub offset: u64,
pub length: u64,
}
#[derive(Debug, Default, Clone, serde::Deserialize)]
pub struct Match {
pub message: String,
#[serde(rename = "shortMessage")]
pub short_message: String,
pub replacements: Vec<Replacement>,
pub offset: u64,
pub length: u64,
pub context: Context,
pub sentence: String,
}
#[derive(Debug, Clone, serde::Deserialize)]
#[serde(untagged)]
pub enum Response {
Success {
software: Software,
warnings: Warnings,
language: LanguageDetails,
matches: Vec<Match>,
},
Failure {
message: String,
},
}