use crate::*;
use semver::Version;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OpenRPC {
pub openrpc: Version,
pub info: Info,
#[serde(skip_serializing_if = "Option::is_none")]
pub servers: Option<Vec<Server>>,
pub methods: Vec<Method>,
#[serde(skip_serializing_if = "Option::is_none")]
pub components: Option<Components>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external_docs: Option<ExternalDocumentation>,
#[serde(flatten)]
pub extensions: SpecificationExtensions,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct Method {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<Tag>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external_docs: Option<ExternalDocumentation>,
pub params: Vec<ContentDescriptor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<ContentDescriptor>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub servers: Option<Vec<Server>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<Error>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub param_structure: Option<ParamStructure>,
#[serde(skip_serializing_if = "Option::is_none")]
pub examples: Option<Vec<ExamplePairing>>,
#[serde(flatten)]
pub extensions: SpecificationExtensions,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct ExamplePairing {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
pub params: Vec<Example>,
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<Example>,
#[serde(flatten)]
pub extensions: SpecificationExtensions,
}