auto_generate_cdp 0.4.6

experimental crate to generate the Chrome Devtools Protocol.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
pub struct Protocol {
    #[serde(rename = "version")]
    pub version: Version,

    #[serde(rename = "domains")]
    pub domains: Vec<Domain>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Domain {
    #[serde(rename = "domain")]
    pub domain: String,

    #[serde(rename = "experimental")]
    pub experimental: Option<bool>,

    #[serde(rename = "dependencies")]
    pub dependencies: Option<Vec<String>>,

    #[serde(rename = "types")]
    pub types: Option<Vec<TypeElement>>,

    #[serde(rename = "commands")]
    pub commands: Vec<Command>,

    #[serde(rename = "events")]
    pub events: Option<Vec<Event>>,

    #[serde(rename = "description")]
    pub description: Option<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Command {
    #[serde(rename = "name")]
    pub name: String,

    #[serde(rename = "description")]
    pub description: Option<String>,

    #[serde(rename = "experimental")]
    pub experimental: Option<bool>,

    #[serde(rename = "parameters")]
    pub parameters: Option<Vec<Parameter>>,

    #[serde(rename = "returns")]
    pub returns: Option<Vec<Parameter>>,

    #[serde(rename = "deprecated")]
    pub deprecated: Option<bool>,

    #[serde(rename = "redirect")]
    pub redirect: Option<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Parameter {
    #[serde(rename = "name")]
    pub name: String,

    #[serde(rename = "description")]
    pub description: Option<String>,

    #[serde(rename = "optional")]
    pub optional: Option<bool>,

    #[serde(rename = "$ref")]
    pub parameter_ref: Option<String>,

    #[serde(rename = "type")]
    pub parameter_type: Option<TypeEnum>,

    #[serde(rename = "items")]
    pub items: Option<Items>,

    #[serde(rename = "enum")]
    pub parameter_enum: Option<Vec<String>>,

    #[serde(rename = "experimental")]
    pub experimental: Option<bool>,

    #[serde(rename = "deprecated")]
    pub deprecated: Option<bool>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Items {
    #[serde(rename = "type")]
    pub items_type: Option<TypeEnum>,

    #[serde(rename = "$ref")]
    pub items_ref: Option<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Event {
    #[serde(rename = "name")]
    pub name: String,

    #[serde(rename = "description")]
    pub description: Option<String>,

    #[serde(rename = "parameters")]
    pub parameters: Option<Vec<Parameter>>,

    #[serde(rename = "experimental")]
    pub experimental: Option<bool>,

    #[serde(rename = "deprecated")]
    pub deprecated: Option<bool>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct TypeElement {
    #[serde(rename = "id")]
    pub id: String,

    #[serde(rename = "description")]
    pub description: Option<String>,

    #[serde(rename = "type")]
    pub type_type: TypeEnum,

    #[serde(rename = "enum")]
    pub type_enum: Option<Vec<String>>,

    #[serde(rename = "properties")]
    pub properties: Option<Vec<Parameter>>,

    #[serde(rename = "experimental")]
    pub experimental: Option<bool>,

    #[serde(rename = "items")]
    pub items: Option<Items>,

    #[serde(rename = "deprecated")]
    pub deprecated: Option<bool>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct Version {
    #[serde(rename = "major")]
    pub major: String,

    #[serde(rename = "minor")]
    pub minor: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub enum TypeEnum {
    #[serde(rename = "any")]
    Any,

    #[serde(rename = "array")]
    Array,

    #[serde(rename = "boolean")]
    Boolean,

    #[serde(rename = "integer")]
    Integer,

    #[serde(rename = "number")]
    Number,

    #[serde(rename = "object")]
    Object,

    #[serde(rename = "string")]
    String,
}