Skip to main content

gproxy_protocol/openai/count_tokens/
response.rs

1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3
4use crate::openai::count_tokens::types::{OpenAiApiErrorResponse, OpenAiResponseHeaders};
5
6/// Successful body returned by count-tokens endpoint.
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct ResponseBody {
9    pub input_tokens: u64,
10    pub object: OpenAiCountTokensObject,
11}
12
13#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
14pub enum OpenAiCountTokensObject {
15    #[serde(rename = "response.input_tokens")]
16    ResponseInputTokens,
17}
18
19/// Full HTTP response for OpenAI `responses.input_tokens.count` endpoint.
20#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
21#[serde(untagged)]
22pub enum OpenAiCountTokensResponse {
23    Success {
24        /// HTTP status code returned by server (should be `200 OK`).
25        #[serde(with = "crate::openai::types::status_code_serde")]
26        stats_code: StatusCode,
27        /// Response headers.
28        headers: OpenAiResponseHeaders,
29        /// Successful body.
30        body: ResponseBody,
31    },
32    Error {
33        /// HTTP status code returned by server (typically non-2xx).
34        #[serde(with = "crate::openai::types::status_code_serde")]
35        stats_code: StatusCode,
36        /// Response headers.
37        headers: OpenAiResponseHeaders,
38        /// Error body.
39        body: OpenAiApiErrorResponse,
40    },
41}