Skip to main content

gproxy_protocol/wire/openai/
conversation.rs

1//! Conversation creation; source: Create Conversation.md. Response metadata is
2//! documented as arbitrary JSON, unlike the request metadata string map.
3use super::responses::input::InputItem;
4use crate::Rest;
5use serde::{Deserialize, Serialize};
6use std::collections::BTreeMap;
7
8#[derive(
9    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
10)]
11#[serde(rename_all = "snake_case")]
12#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
13#[derive(gproxy_protocol_macros::DeclaredFields)]
14#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15pub struct CreateConversationRequestBody {
16    #[serde(
17        default,
18        deserialize_with = "super::responses::input::present_nullable",
19        skip_serializing_if = "Option::is_none"
20    )]
21    pub items: Option<Option<Vec<InputItem>>>,
22    #[serde(
23        default,
24        deserialize_with = "super::responses::input::present_nullable",
25        skip_serializing_if = "Option::is_none"
26    )]
27    pub metadata: Option<Option<BTreeMap<String, String>>>,
28    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
29    pub rest: Rest,
30}
31pub type CreateConversationRequest = crate::WireRequest<CreateConversationRequestBody>;
32#[derive(
33    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
34)]
35#[serde(rename_all = "snake_case")]
36#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
37#[derive(gproxy_protocol_macros::DeclaredFields)]
38#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
39pub struct ConversationResponseBody {
40    pub id: String,
41    pub created_at: i64,
42    pub metadata: serde_json::Value,
43    pub object: ConversationObject,
44    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
45    pub rest: Rest,
46}
47pub type CreateConversationResponse = crate::WireResponse<ConversationResponseBody>;
48#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
49#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
50#[derive(gproxy_protocol_macros::DeclaredFields)]
51#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
52pub enum ConversationObject {
53    #[serde(rename = "conversation")]
54    Conversation,
55}