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)]
14pub struct CreateConversationRequestBody {
15    #[serde(
16        default,
17        deserialize_with = "super::responses::input::present_nullable",
18        skip_serializing_if = "Option::is_none"
19    )]
20    pub items: Option<Option<Vec<InputItem>>>,
21    #[serde(
22        default,
23        deserialize_with = "super::responses::input::present_nullable",
24        skip_serializing_if = "Option::is_none"
25    )]
26    pub metadata: Option<Option<BTreeMap<String, String>>>,
27    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
28    pub rest: Rest,
29}
30pub type CreateConversationRequest = crate::WireRequest<CreateConversationRequestBody>;
31#[derive(
32    Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
33)]
34#[serde(rename_all = "snake_case")]
35#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
36#[derive(gproxy_protocol_macros::DeclaredFields)]
37pub struct ConversationResponseBody {
38    pub id: String,
39    pub created_at: i64,
40    pub metadata: serde_json::Value,
41    pub object: ConversationObject,
42    #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
43    pub rest: Rest,
44}
45pub type CreateConversationResponse = crate::WireResponse<ConversationResponseBody>;
46#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
47#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
48#[derive(gproxy_protocol_macros::DeclaredFields)]
49pub enum ConversationObject {
50    #[serde(rename = "conversation")]
51    Conversation,
52}