Crate datadog_api

Crate datadog_api 

Source
Expand description

§Datadog API Client Library

A Rust client for the Datadog API with type-safe access to monitors, dashboards, metrics, logs, synthetics, and more.

§Architecture

┌─────────────────────────────────────────────────────────────┐
│                      datadog-api                            │
├─────────────────────────────────────────────────────────────┤
│  config.rs          │  Configuration & credentials         │
│  ├─ DatadogConfig   │  API keys, site, retry settings      │
│  └─ SecretString    │  Zeroize-on-drop credential wrapper  │
├─────────────────────────────────────────────────────────────┤
│  client.rs          │  HTTP client with middleware         │
│  └─ DatadogClient   │  Retry logic, auth headers, gzip     │
├─────────────────────────────────────────────────────────────┤
│  apis/              │  Domain-specific API modules         │
│  ├─ monitors        │  Monitor CRUD operations             │
│  ├─ dashboards      │  Dashboard management                │
│  ├─ metrics         │  Metrics queries                     │
│  ├─ logs            │  Log search                          │
│  ├─ synthetics      │  Synthetic tests                     │
│  ├─ events          │  Event stream                        │
│  ├─ infrastructure  │  Hosts and tags                      │
│  ├─ downtimes       │  Scheduled downtimes                 │
│  ├─ incidents       │  Incident management                 │
│  ├─ slos            │  Service Level Objectives            │
│  ├─ security        │  Security rules                      │
│  ├─ notebooks       │  Notebooks                           │
│  ├─ teams/users     │  Team and user management            │
│  └─ traces          │  APM traces                          │
├─────────────────────────────────────────────────────────────┤
│  models/            │  Request/response types (Serde)      │
├─────────────────────────────────────────────────────────────┤
│  error.rs           │  Error types with helper methods     │
│  └─ Error           │  is_retryable, is_not_found, etc.    │
└─────────────────────────────────────────────────────────────┘

§Quick Start

use datadog_api::{DatadogClient, DatadogConfig};
use datadog_api::apis::MetricsApi;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = DatadogConfig::from_env()?;
    let client = DatadogClient::new(config)?;
    let metrics_api = MetricsApi::new(client);
    let metrics = metrics_api.list_metrics("system.cpu").await?;
    println!("Found {} metrics", metrics.metrics.unwrap_or_default().len());
    Ok(())
}

§Configuration Sources

Credentials load from (in order):

  1. File: ~/.datadog-mcp/credentials.json
  2. Keyring: System credential storage (requires keyring feature)
  3. Environment: DD_API_KEY, DD_APP_KEY, DD_SITE

Use DatadogConfig::from_env_or_file() to try all sources.

§Error Handling

fn handle(e: &Error) {
    if e.is_not_found() { /* 404 */ }
    else if e.is_rate_limited() { /* 429 - back off */ }
    else if e.is_retryable() { /* transient - retry */ }
}

§Supported Sites

  • US1: datadoghq.com (default)
  • US3: us3.datadoghq.com
  • US5: us5.datadoghq.com
  • EU: datadoghq.eu
  • AP1: ap1.datadoghq.com
  • US1-FED: ddog-gov.com

§Cargo Features

  • keyring (default): Secure credential storage in system keyring

Re-exports§

pub use client::CacheInfo;
pub use client::CachedResponse;
pub use client::DatadogClient;
pub use config::DatadogConfig;
pub use config::HttpConfig;
pub use config::RetryConfig;
pub use error::Error;
pub use error::Result;
pub use models::GroupDefinition;
pub use models::HeatmapDefinition;
pub use models::NoteDefinition;
pub use models::QueryTableDefinition;
pub use models::QueryValueDefinition;
pub use models::TemplateVariable;
pub use models::TimeseriesDefinition;
pub use models::ToplistDefinition;
pub use models::Widget;
pub use models::WidgetDefinition;
pub use models::WidgetLayout;
pub use pagination::CursorParams;
pub use pagination::PageParams;
pub use pagination::PaginatedResponse;
pub use pagination::PaginationMeta;
pub use rate_limit::RateLimitConfig;
pub use rate_limit::RateLimiter;
pub use timestamp::TimestampMillis;
pub use timestamp::TimestampNanos;
pub use timestamp::TimestampSecs;

Modules§

apis
client
config
error
models
pagination
Pagination utilities for Datadog API responses
rate_limit
Client-side rate limiting for Datadog API requests
timestamp
Type-safe timestamp wrappers for Datadog API