xai_openapi/
lib.rs

1#![deny(dead_code)]
2//! Rust types for the xAI API.
3//!
4//! This crate provides type definitions for interacting with the xAI API,
5//! including support for Grok models via chat completions, embeddings,
6//! image generation, and more.
7//!
8//! # Overview
9//!
10//! The types in this crate are organized by API endpoint:
11//!
12//! - [`chat`] - Chat completions API (`/v1/chat/completions`)
13//! - [`responses`] - Responses API (`/v1/responses`)
14//! - [`embeddings`] - Embeddings API (`/v1/embeddings`)
15//! - [`images`] - Image generation API (`/v1/images/generations`)
16//! - [`models`] - Models API (`/v1/models`, `/v1/language-models`, etc.)
17//! - [`messages`] - Anthropic-compatible messages API (`/v1/messages`)
18//! - [`search`] - Document search API (`/v1/documents/search`)
19//! - [`tokenize`] - Tokenization API (`/v1/tokenize-text`)
20//!
21//! # Features
22//!
23//! - `std` (default) - Enable std library support. Uses `std::collections::HashMap`.
24//! - When `std` is disabled (`no_std`), uses `hashbrown::HashMap` and requires `alloc`.
25//!
26//! # Example
27//!
28//! ```ignore
29//! use xai_openapi::chat::{ChatRequest, Message};
30//!
31//! let request = ChatRequest {
32//!     model: Some("grok-3".to_string()),
33//!     messages: vec![Message::User {
34//!         content: "Hello!".into(),
35//!         name: None,
36//!     }],
37//!     ..Default::default()
38//! };
39//! ```
40
41#![cfg_attr(not(feature = "std"), no_std)]
42
43#[cfg(not(feature = "std"))]
44extern crate alloc;
45
46mod prelude;
47
48pub mod chat;
49pub mod common;
50pub mod embeddings;
51pub mod images;
52pub mod messages;
53pub mod models;
54pub mod responses;
55pub mod search;
56pub mod tokenize;
57pub mod tools;
58pub mod usage;
59
60// Re-export HashMap based on feature flag
61#[cfg(feature = "std")]
62pub use std::collections::HashMap;
63
64#[cfg(not(feature = "std"))]
65pub use hashbrown::HashMap;
66
67// Re-export commonly used types at crate root for convenience
68pub use chat::{ChatRequest, ChatResponse, Message};
69pub use common::{Content, ImageUrl, StreamOptions};
70pub use embeddings::{EmbeddingRequest, EmbeddingResponse};
71pub use images::{GenerateImageRequest, GeneratedImageResponse};
72pub use messages::{MessageRequest, MessageResponse};
73pub use models::{LanguageModel, ListModelsResponse, Model};
74pub use responses::{ModelRequest, ModelResponse};
75pub use tools::{FunctionDefinition, Tool, ToolCall, ToolChoice};
76pub use usage::Usage;