gproxy_protocol/openai/create_response/websocket/
request.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::openai::create_response::websocket::types::{
6 HttpMethod, OpenAiCreateResponseWebSocketClientMessage,
7};
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
11pub struct OpenAiCreateResponseWebSocketConnectRequest {
12 pub method: HttpMethod,
14 pub path: PathParameters,
16 pub query: QueryParameters,
18 pub headers: RequestHeaders,
20 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub body: Option<RequestBody>,
23}
24
25impl Default for OpenAiCreateResponseWebSocketConnectRequest {
26 fn default() -> Self {
27 Self {
28 method: HttpMethod::Get,
29 path: PathParameters::default(),
30 query: QueryParameters::default(),
31 headers: RequestHeaders::default(),
32 body: None,
33 }
34 }
35}
36
37#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
38pub struct PathParameters {
39 #[serde(default)]
41 pub endpoint: OpenAiCreateResponseWebSocketEndpoint,
42}
43
44#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
45pub enum OpenAiCreateResponseWebSocketEndpoint {
46 #[default]
47 #[serde(rename = "responses")]
48 Responses,
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
52pub struct QueryParameters {
53 #[serde(
55 rename = "api-version",
56 default,
57 skip_serializing_if = "Option::is_none"
58 )]
59 pub api_version: Option<String>,
60 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
62 pub extra: BTreeMap<String, String>,
63}
64
65#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
66pub struct RequestHeaders {
67 #[serde(
68 rename = "Authorization",
69 default,
70 skip_serializing_if = "Option::is_none"
71 )]
72 pub authorization: Option<String>,
73 #[serde(
74 rename = "OpenAI-Beta",
75 default,
76 skip_serializing_if = "Option::is_none"
77 )]
78 pub openai_beta: Option<String>,
79 #[serde(
80 rename = "x-codex-turn-state",
81 default,
82 skip_serializing_if = "Option::is_none"
83 )]
84 pub x_codex_turn_state: Option<String>,
85 #[serde(
86 rename = "x-codex-turn-metadata",
87 default,
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub x_codex_turn_metadata: Option<String>,
91 #[serde(
92 rename = "session_id",
93 default,
94 skip_serializing_if = "Option::is_none"
95 )]
96 pub session_id: Option<String>,
97 #[serde(
98 rename = "ChatGPT-Account-ID",
99 default,
100 skip_serializing_if = "Option::is_none"
101 )]
102 pub chatgpt_account_id: Option<String>,
103 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
105 pub extra: BTreeMap<String, String>,
106}
107
108pub type RequestBody = OpenAiCreateResponseWebSocketClientMessage;