Module types

Source
Expand description

ยงCore Types and Data Structures

This module contains all the core types, enums, and data structures used throughout the OpenRouter SDK. These types provide type-safe representations of API requests, responses, and configuration options.

ยง๐Ÿ“‹ Type Categories

ยงRequest/Response Types (completion)

  • Chat Completions: Modern conversational AI request/response structures
  • Text Completions: Legacy prompt-based completion types
  • Streaming: Types for handling real-time response streams
  • Reasoning: Advanced reasoning and chain-of-thought structures

ยงProvider Information (provider)

  • Model Metadata: Provider-specific model information
  • Capabilities: Model feature and parameter support
  • Pricing: Cost information and token usage

ยงResponse Formatting (response_format)

  • JSON Schema: Structured output formatting
  • Content Types: Different response content formats
  • Validation: Response format validation rules

ยง๐ŸŽฏ Core Enums

ยงRole

Defines the role of a message in a conversation:

use openrouter_rs::types::Role;

let system_role = Role::System;    // System instructions
let user_role = Role::User;        // User input
let assistant_role = Role::Assistant; // AI response
let tool_role = Role::Tool;        // Tool/function results
let developer_role = Role::Developer; // Developer context

ยงEffort

Specifies reasoning effort levels for chain-of-thought models:

use openrouter_rs::types::Effort;

let high_effort = Effort::High;    // Maximum reasoning depth
let medium_effort = Effort::Medium; // Balanced reasoning
let low_effort = Effort::Low;      // Quick reasoning

ยง๐Ÿ”ง Configuration Types

ยงReasoningConfig

Configuration for advanced reasoning capabilities:

use openrouter_rs::types::{ReasoningConfig, Effort};

let reasoning = ReasoningConfig::builder()
    .enabled(true)
    .effort(Effort::High)
    .max_tokens(1000)
    .build()?;

ยงProviderPreferences

Specify preferences for model provider selection:

use openrouter_rs::types::ProviderPreferences;

let prefs = ProviderPreferences {
    allow_fallbacks: true,
    require_parameters: Some(vec!["tools".to_string()]),
    data_collection: Some("deny".to_string()),
};

ยง๐Ÿ“Š Model Categories

Categories for filtering and organizing models:

use openrouter_rs::types::ModelCategory;

// Filter models by use case
let programming_models = ModelCategory::Programming;
let reasoning_models = ModelCategory::Reasoning;
let image_models = ModelCategory::Image;

ยง๐Ÿ—๏ธ Builder Patterns

Most complex types support the builder pattern for ergonomic construction:

use openrouter_rs::types::{ReasoningConfig, Effort};

let config = ReasoningConfig::builder()
    .enabled(true)
    .effort(Effort::High)
    .max_tokens(2000)
    .exclude(false)
    .build()?;

ยง๐Ÿ”„ Serialization Support

All types implement Serialize and Deserialize for JSON compatibility:

use openrouter_rs::types::Role;
use serde_json;

let role = Role::Assistant;
let json = serde_json::to_string(&role)?;
let parsed: Role = serde_json::from_str(&json)?;

ยง๐ŸŽจ Display Formatting

Common enums implement Display for human-readable output:

use openrouter_rs::types::{Role, Effort};

println!("Role: {}", Role::User);        // "user"
println!("Effort: {}", Effort::High);    // "high"

Re-exportsยง

pub use completion::*;
pub use provider::*;
pub use response_format::*;

Modulesยง

completion
provider
response_format

Structsยง

ApiResponse
ReasoningConfig

Enumsยง

Effort
Reasoning effort level for chain-of-thought models
ModelCategory
Role
Message role in a conversation
SupportedParameters