Skip to main content

gproxy_protocol/openai/compact_response/
request.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::openai::compact_response::types::{HttpMethod, ResponseInput};
6
7/// Request descriptor for OpenAI `responses.compact` endpoint.
8#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9pub struct OpenAiCompactRequest {
10    /// HTTP method.
11    pub method: HttpMethod,
12    /// Path parameters.
13    pub path: PathParameters,
14    /// Query parameters.
15    pub query: QueryParameters,
16    /// Request headers.
17    pub headers: RequestHeaders,
18    /// Request body.
19    pub body: RequestBody,
20}
21
22impl Default for OpenAiCompactRequest {
23    fn default() -> Self {
24        Self {
25            method: HttpMethod::Post,
26            path: PathParameters::default(),
27            query: QueryParameters::default(),
28            headers: RequestHeaders::default(),
29            body: RequestBody::default(),
30        }
31    }
32}
33
34/// `responses.compact` does not define path params.
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
36pub struct PathParameters {}
37
38/// `responses.compact` does not define query params.
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
40pub struct QueryParameters {}
41
42/// Proxy-side request model does not carry auth headers.
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
44pub struct RequestHeaders {
45    #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
46    pub extra: BTreeMap<String, String>,
47}
48
49/// Request body for `POST /responses/compact`.
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
51pub struct RequestBody {
52    /// Model ID used to compact the response.
53    pub model: String,
54    /// Optional input override for compaction.
55    #[serde(default, skip_serializing_if = "Option::is_none")]
56    pub input: Option<ResponseInput>,
57    /// Optional system/developer instructions inserted into context.
58    #[serde(default, skip_serializing_if = "Option::is_none")]
59    pub instructions: Option<String>,
60    /// Previous response ID to compact.
61    #[serde(default, skip_serializing_if = "Option::is_none")]
62    pub previous_response_id: Option<String>,
63}