123 lines
3.8 KiB
Rust
123 lines
3.8 KiB
Rust
|
|
use codex_protocol::ConversationId;
|
||
|
|
use codex_protocol::account::PlanType;
|
||
|
|
use codex_protocol::config_types::ReasoningEffort;
|
||
|
|
use codex_protocol::protocol::RateLimitSnapshot;
|
||
|
|
use schemars::JsonSchema;
|
||
|
|
use serde::Deserialize;
|
||
|
|
use serde::Serialize;
|
||
|
|
use ts_rs::TS;
|
||
|
|
use uuid::Uuid;
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(tag = "type", rename_all = "camelCase")]
|
||
|
|
#[ts(tag = "type")]
|
||
|
|
pub enum Account {
|
||
|
|
#[serde(rename = "apiKey", rename_all = "camelCase")]
|
||
|
|
#[ts(rename = "apiKey", rename_all = "camelCase")]
|
||
|
|
ApiKey { api_key: String },
|
||
|
|
|
||
|
|
#[serde(rename = "chatgpt", rename_all = "camelCase")]
|
||
|
|
#[ts(rename = "chatgpt", rename_all = "camelCase")]
|
||
|
|
ChatGpt {
|
||
|
|
email: Option<String>,
|
||
|
|
plan_type: PlanType,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(tag = "type")]
|
||
|
|
#[ts(tag = "type")]
|
||
|
|
pub enum LoginAccountParams {
|
||
|
|
#[serde(rename = "apiKey")]
|
||
|
|
#[ts(rename = "apiKey")]
|
||
|
|
ApiKey {
|
||
|
|
#[serde(rename = "apiKey")]
|
||
|
|
#[ts(rename = "apiKey")]
|
||
|
|
api_key: String,
|
||
|
|
},
|
||
|
|
#[serde(rename = "chatgpt")]
|
||
|
|
#[ts(rename = "chatgpt")]
|
||
|
|
ChatGpt,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct LoginAccountResponse {
|
||
|
|
/// Only set if the login method is ChatGPT.
|
||
|
|
#[schemars(with = "String")]
|
||
|
|
pub login_id: Option<Uuid>,
|
||
|
|
|
||
|
|
/// URL the client should open in a browser to initiate the OAuth flow.
|
||
|
|
/// Only set if the login method is ChatGPT.
|
||
|
|
pub auth_url: Option<String>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct LogoutAccountResponse {}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct GetAccountRateLimitsResponse {
|
||
|
|
pub rate_limits: RateLimitSnapshot,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct GetAccountResponse {
|
||
|
|
pub account: Account,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct ListModelsParams {
|
||
|
|
/// Optional page size; defaults to a reasonable server-side value.
|
||
|
|
pub page_size: Option<usize>,
|
||
|
|
/// Opaque pagination cursor returned by a previous call.
|
||
|
|
pub cursor: Option<String>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct Model {
|
||
|
|
pub id: String,
|
||
|
|
pub model: String,
|
||
|
|
pub display_name: String,
|
||
|
|
pub description: String,
|
||
|
|
pub supported_reasoning_efforts: Vec<ReasoningEffortOption>,
|
||
|
|
pub default_reasoning_effort: ReasoningEffort,
|
||
|
|
// Only one model should be marked as default.
|
||
|
|
pub is_default: bool,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct ReasoningEffortOption {
|
||
|
|
pub reasoning_effort: ReasoningEffort,
|
||
|
|
pub description: String,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct ListModelsResponse {
|
||
|
|
pub items: Vec<Model>,
|
||
|
|
/// Opaque cursor to pass to the next call to continue after the last item.
|
||
|
|
/// if None, there are no more items to return.
|
||
|
|
pub next_cursor: Option<String>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct UploadFeedbackParams {
|
||
|
|
pub classification: String,
|
||
|
|
pub reason: Option<String>,
|
||
|
|
pub conversation_id: Option<ConversationId>,
|
||
|
|
pub include_logs: bool,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct UploadFeedbackResponse {
|
||
|
|
pub thread_id: String,
|
||
|
|
}
|