#[derive(Clone, serde::Serialize)]
pub struct Reply { pub choices: Vec<Choice> }
#[derive(Clone, serde::Serialize)]
pub struct Choice { pub message: Message }
#[derive(Clone, serde::Serialize)]
pub struct Message { pub content: Option<Body> }
#[derive(Clone, serde::Serialize)]
#[serde(untagged)]
pub enum Body { Text(String), Parts(Vec<Piece>) }
#[derive(Clone, serde::Serialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum Piece {
Text { {% if wire_key %}#[serde(rename = {{ wire_key }})] {% endif %}text: String },
Note { note: String },
}