Skip to main content

gproxy_protocol/claude/count_tokens/
response.rs

1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3
4use crate::claude::count_tokens::types::BetaMessageTokensCount;
5use crate::claude::types::{BetaErrorResponse, ClaudeResponseHeaders};
6
7/// Successful body for Claude "Count Tokens" endpoint.
8pub type ResponseBody = BetaMessageTokensCount;
9
10/// Full HTTP response for Claude "Count Tokens" endpoint.
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(untagged)]
13pub enum ClaudeCountTokensResponse {
14    Success {
15        /// HTTP status code returned by server (should be `200 OK`).
16        #[serde(with = "crate::claude::types::status_code_serde")]
17        stats_code: StatusCode,
18        /// Response headers.
19        headers: ClaudeResponseHeaders,
20        /// Successful body.
21        body: ResponseBody,
22    },
23    Error {
24        /// HTTP status code returned by server (typically 400/401/403/404/413/429/500/529).
25        #[serde(with = "crate::claude::types::status_code_serde")]
26        stats_code: StatusCode,
27        /// Response headers.
28        headers: ClaudeResponseHeaders,
29        /// Error body.
30        body: BetaErrorResponse,
31    },
32}