use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[allow(dead_code)] pub struct CodexPluginSchema {
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub description: Option<String>,
#[serde(default)]
pub skills: Option<String>,
#[serde(default)]
pub mcp_servers: Option<String>,
#[serde(default)]
pub apps: Option<String>,
#[serde(default)]
pub interface: Option<CodexPluginInterface>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[allow(dead_code)] pub struct CodexPluginInterface {
#[serde(default)]
pub display_name: Option<String>,
#[serde(default)]
pub short_description: Option<String>,
#[serde(default)]
pub long_description: Option<String>,
#[serde(default)]
pub developer_name: Option<String>,
#[serde(default)]
pub category: Option<String>,
#[serde(default)]
pub capabilities: Vec<String>,
#[serde(default, alias = "websiteURL")]
pub website_url: Option<String>,
#[serde(default, alias = "privacyPolicyURL")]
pub privacy_policy_url: Option<String>,
#[serde(default, alias = "termsOfServiceURL")]
pub terms_of_service_url: Option<String>,
#[serde(default)]
pub default_prompt: Option<serde_json::Value>,
#[serde(default)]
pub brand_color: Option<String>,
#[serde(default)]
pub composer_icon: Option<String>,
#[serde(default)]
pub logo: Option<String>,
#[serde(default)]
pub screenshots: Vec<String>,
}