Skip to main content

outfox_openai/spec/chat/
api.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6/// Sort order for listing chat completions.
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
8#[serde(rename_all = "lowercase")]
9pub enum ListChatCompletionsOrder {
10    /// Ascending order
11    Asc,
12    /// Descending order
13    Desc,
14}
15
16/// Query parameters for listing chat completions.
17#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
18#[builder(name = "ListChatCompletionsQueryArgs")]
19#[builder(pattern = "mutable")]
20#[builder(setter(into, strip_option), default)]
21#[builder(derive(Debug))]
22#[builder(build_fn(error = "OpenAIError"))]
23pub struct ListChatCompletionsQuery {
24    /// The model used to generate the Chat Completions.
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub model: Option<String>,
27    /// A list of metadata keys to filter the Chat Completions by.
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub metadata: Option<serde_json::Value>,
30    /// Identifier for the last chat completion from the previous pagination request.
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub after: Option<String>,
33    /// Number of Chat Completions to retrieve.
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub limit: Option<u32>,
36    /// Sort order for Chat Completions by timestamp. Use `asc` for ascending order or `desc` for
37    /// descending order. Defaults to `asc`.
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub order: Option<ListChatCompletionsOrder>,
40}
41
42/// Sort order for listing chat completion messages.
43#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
44#[serde(rename_all = "lowercase")]
45pub enum GetChatCompletionMessagesOrder {
46    /// Ascending order
47    Asc,
48    /// Descending order
49    Desc,
50}
51
52/// Query parameters for getting chat completion messages.
53#[derive(Debug, Serialize, Default, Clone, Builder, PartialEq)]
54#[builder(name = "GetChatCompletionMessagesQueryArgs")]
55#[builder(pattern = "mutable")]
56#[builder(setter(into, strip_option), default)]
57#[builder(derive(Debug))]
58#[builder(build_fn(error = "OpenAIError"))]
59pub struct GetChatCompletionMessagesQuery {
60    /// Identifier for the last message from the previous pagination request.
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub after: Option<String>,
63    /// Number of messages to retrieve.
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub limit: Option<u32>,
66    /// Sort order for messages by timestamp. Use `asc` for ascending order or `desc` for
67    /// descending order. Defaults to `asc`.
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub order: Option<GetChatCompletionMessagesOrder>,
70}