CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-data-dog--datadog-api-client-go-v2

Comprehensive Go API client for the Datadog monitoring and analytics platform with strongly-typed interfaces for all Datadog API v1 and v2 endpoints

Overview
Eval results
Files

index.mddocs/

DataDog Go API Client

The DataDog Go API client provides comprehensive, strongly-typed access to the complete Datadog REST API. This is a generated client that supports both API v1 (31 API clients) and API v2 (86 API clients) endpoints, covering monitoring, dashboards, logs, security, incidents, and more.

Package Information

  • Package Name: github.com/DataDog/datadog-api-client-go/v2
  • Package Type: golang
  • Language: Go
  • Version: 2.54.0
  • Installation: go get github.com/DataDog/datadog-api-client-go/v2
  • Requirements: Go 1.22+

Core Imports

import (
    "context"
    "github.com/DataDog/datadog-api-client-go/v2/api/datadog"
    "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
    "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

The package is organized into three main imports:

  • datadog - Common configuration, authentication, client infrastructure
  • datadogV1 - API v1 endpoints (31 API clients)
  • datadogV2 - API v2 endpoints (86 API clients)

Basic Usage

package main

import (
    "context"
    "fmt"
    "os"
    "github.com/DataDog/datadog-api-client-go/v2/api/datadog"
    "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

func main() {
    // Create context with API authentication
    ctx := context.WithValue(
        context.Background(),
        datadog.ContextAPIKeys,
        map[string]datadog.APIKey{
            "apiKeyAuth": {Key: "YOUR_API_KEY"},
            "appKeyAuth": {Key: "YOUR_APP_KEY"},
        },
    )

    // Create configuration and client
    configuration := datadog.NewConfiguration()
    apiClient := datadog.NewAPIClient(configuration)

    // Use API - example: list incidents
    incidentsApi := datadogV2.NewIncidentsApi(apiClient)
    resp, r, err := incidentsApi.ListIncidents(ctx, *datadogV2.NewListIncidentsOptionalParameters())
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error: %v\n", err)
        fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
        return
    }

    // Process response
    for _, incident := range resp.GetData() {
        fmt.Printf("Incident: %s\n", incident.Attributes.GetTitle())
    }
}

Using environment variables for authentication:

// Reads DD_API_KEY and DD_APP_KEY from environment
ctx := datadog.NewDefaultContext(context.Background())

Architecture

The DataDog Go API client follows a generated OpenAPI client architecture:

Package Structure

github.com/DataDog/datadog-api-client-go/v2/
├── api/
│   ├── datadog/          # Common client, config, auth
│   ├── datadogV1/        # API v1 endpoints (31 clients)
│   └── datadogV2/        # API v2 endpoints (86 clients)

Core Components

  1. Configuration (datadog.Configuration) - Stores API host, authentication, HTTP client, retry settings, compression options
  2. APIClient (datadog.APIClient) - Central client that manages HTTP communication
  3. API Clients - Specific API clients for each service area (e.g., IncidentsApi, MonitorsApi)
  4. Model Types - Strongly-typed request/response structs (969 in v1, 3,812 in v2)
  5. Context Keys - Context values for authentication and configuration

Authentication

The client supports multiple authentication methods:

  • API Key Authentication (primary) - Using DD_API_KEY and DD_APP_KEY
  • AWS Delegated Token - For AWS-based authentication
  • OAuth2 - Standard OAuth2 authentication
  • HTTP Signature - HTTP signature-based authentication

Request Flow

  1. Create context with authentication credentials
  2. Configure client settings (optional: retry, compression, debug)
  3. Instantiate API client for specific service area
  4. Call API method with context and parameters
  5. Handle response or error

API Versioning

  • v1 APIs - Legacy endpoints, stable, widely used
  • v2 APIs - Newer endpoints with enhanced features, some marked as unstable

Use v2 APIs for new features like incident management, case management, RUM, and modern integrations.

Capabilities

Common Package

Core client infrastructure, configuration, and authentication.

// Create configuration
func NewConfiguration() *Configuration

// Create API client
func NewAPIClient(cfg *Configuration) *APIClient

Common Package Documentation

Monitoring and Alerting

Monitor creation, downtime scheduling, and alert management.

V1 APIs:

  • Monitors - Create, update, delete monitors; validate configurations
  • Downtimes - Schedule maintenance windows
  • Service Level Objectives - Define and track SLOs

V2 APIs:

  • Monitor Config Policies - Enterprise monitor management
  • Monitor Notification Rules - Advanced notification routing

V1 Monitoring Documentation

V2 Observability Core Documentation

Dashboards and Visualization

Dashboard creation and management.

V1 APIs:

  • Dashboards - CRUD operations for dashboards
  • Dashboard Lists - Organize dashboards
  • Notebooks - Interactive notebooks

V2 APIs:

  • Dashboard Lists - Enhanced dashboard organization
  • Powerpacks - Reusable dashboard components

V1 Dashboards Documentation

V2 Observability Core Documentation

Logs Management

Log ingestion, querying, and pipeline configuration.

V1 APIs:

  • Logs - Submit and query logs
  • Logs Indexes - Index configuration
  • Logs Pipelines - Processing pipelines

V2 APIs:

  • Logs - Enhanced log querying with aggregation
  • Logs Archives - Archive configuration
  • Logs Metrics - Logs-based metrics
  • Logs Custom Destinations - Custom log forwarding

V1 Logs, Metrics, and Events Documentation

V2 Observability Core Documentation

Metrics and Timeseries

Metric submission, querying, and configuration.

V1 APIs:

  • Metrics - Submit and query metrics
  • Timeseries - Query timeseries data

V2 APIs:

  • Metrics - Enhanced metric management with tag configuration
  • Spans Metrics - APM span-based metrics

V1 Logs, Metrics, and Events Documentation

V2 Observability Core Documentation

Incident Management

Incident tracking and response (V2 only).

V2 APIs:

  • Incidents - Create, update, track incidents
  • Incident Services - Service catalog for incidents
  • Incident Teams - Team management for incident response

V2 Incident and Case Management Documentation

Security Monitoring

Security rules, signals, and threat detection.

V1 APIs:

  • Security Monitoring - Basic signal management

V2 APIs:

  • Security Monitoring - Comprehensive security rule management
  • Application Security - WAF rules and exclusion filters
  • CSM Threats - Cloud Security Management
  • Sensitive Data Scanner - PII/sensitive data detection

V1 Additional APIs Documentation

V2 Additional APIs Documentation

Synthetics Testing

Synthetic monitoring and testing.

V1 APIs:

  • Synthetics - API tests, browser tests, mobile tests, global variables, private locations

V2 APIs:

  • Synthetics - Concurrency management and advanced features

V1 Additional APIs Documentation

V2 Additional APIs Documentation

Cloud Integrations

AWS, Azure, GCP, and other cloud provider integrations.

V1 APIs:

  • AWS Integration - AWS account integration
  • AWS Logs Integration - AWS log collection
  • Azure Integration - Azure subscription integration
  • GCP Integration - GCP project integration

V2 APIs:

  • AWS Integration - Enhanced AWS integration with IAM permissions
  • GCP Integration - STS-based GCP integration
  • Cloudflare Integration - Cloudflare account integration
  • Confluent Cloud - Confluent Cloud integration
  • Fastly Integration - Fastly CDN integration

V1 Additional APIs Documentation

V2 Additional APIs Documentation

User and Organization Management

User, role, and organization administration.

V1 APIs:

  • Users - User CRUD operations
  • Organizations - Organization management
  • Key Management - API and application keys

V2 APIs:

  • Users - Enhanced user management
  • Roles - RBAC role management
  • Teams - Team collaboration features
  • Organizations - Organization configuration
  • Service Accounts - Service account management

V1 Additional APIs Documentation

V2 Additional APIs Documentation

RUM (Real User Monitoring)

Real user monitoring and session replay (V2 only).

V2 APIs:

  • RUM - RUM application and event management
  • RUM Metrics - RUM-based metrics
  • RUM Retention Filters - Data retention policies
  • RUM Audience Management - User segmentation

V2 Observability Core Documentation

APM (Application Performance Monitoring)

Application performance monitoring and tracing.

V2 APIs:

  • APM - Service list and APM data
  • APM Retention Filters - Trace retention configuration
  • Spans - Span querying and aggregation
  • Service Definition - Service catalog definitions

V2 Observability Core Documentation

CI/CD and Testing

CI visibility and test optimization.

V2 APIs:

  • CI Visibility Pipelines - Pipeline execution data
  • CI Visibility Tests - Test execution data
  • Test Optimization - Flaky test detection

V2 Additional APIs Documentation

Events and Audit

Event management and audit logging.

V1 APIs:

  • Events - Event submission and querying

V2 APIs:

  • Events - Enhanced event querying
  • Audit - Audit log querying

V1 Logs, Metrics, and Events Documentation

V2 Additional APIs Documentation

Infrastructure and Hosts

Host and container monitoring.

V1 APIs:

  • Hosts - Host inventory and tagging
  • Tags - Tag management

V2 APIs:

  • Containers - Container inventory
  • Container Images - Container image metadata
  • Processes - Process monitoring
  • Network Device Monitoring - Network device data

V1 Additional APIs Documentation

V2 Additional APIs Documentation

Cost Management

Cloud cost tracking and attribution (V2 only).

V2 APIs:

  • Cloud Cost Management - Cost data, attribution, custom costs
  • Usage Metering - Usage tracking and billing

V2 Additional APIs Documentation

Case Management

Case and project management (V2 only).

V2 APIs:

  • Case Management - Case CRUD operations
  • Case Management Attribute - Custom attributes
  • Case Management Type - Case type management

V2 Incident and Case Management Documentation

Workflow Automation

Workflow and automation features (V2 only).

V2 APIs:

  • Workflow Automation - Workflow execution
  • Fleet Automation - Agent fleet management
  • Action Connection - External action integration
  • Actions Datastores - Workflow data storage

V2 Additional APIs Documentation

Additional V2 Capabilities

Additional specialized features:

  • On-Call Management - On-call scheduling and paging
  • DORA Metrics - DevOps research metrics
  • Service Scorecards - Service quality scoring
  • Software Catalog - Service catalog management
  • Reference Tables - Reference data management
  • Observability Pipelines - Data pipeline configuration
  • Deployment Gates - Deployment approval workflows
  • API Management - OpenAPI management
  • App Builder - Custom app development
  • Static Analysis - Code analysis integration
  • Product Analytics - Product event tracking
  • Error Tracking - Error and issue tracking
  • Data Deletion - GDPR data deletion requests
  • Datasets - Custom dataset management
  • Domain Allowlist - Email domain allowlisting
  • IP Allowlist - IP allowlisting

V2 Additional APIs Documentation

Key Features

Retry Configuration

Automatic retry with exponential backoff for transient failures.

type RetryConfiguration struct {
    EnableRetry       bool
    BackOffMultiplier float64
    BackOffBase       float64
    HTTPRetryTimeout  time.Duration
    MaxRetries        int
}

Request Compression

Enable GZIP compression for requests and responses.

configuration := datadog.NewConfiguration()
configuration.Compress = true

Unstable Operation Management

Enable access to unstable/beta API endpoints.

configuration.SetUnstableOperationEnabled("v2.ListIncidents", true)

Pagination

Automatic pagination support for list operations.

resp, _ := incidentsApi.ListIncidentsWithPagination(ctx, optionalParams)
for paginationResult := range resp {
    if paginationResult.Error != nil {
        // handle error
    }
    // process paginationResult.Item
}

Multiple Server/Region Support

Configure API endpoints for different Datadog regions.

// Use EU region
ctx := context.WithValue(ctx,
    datadog.ContextServerVariables,
    map[string]string{"site": "datadoghq.eu"},
)

Debug Logging

Enable debug mode to log HTTP requests and responses.

configuration := datadog.NewConfiguration()
configuration.Debug = true

Error Handling

All API methods return errors that can be type-asserted to access detailed error information.

resp, r, err := api.ListIncidents(ctx, params)
if err != nil {
    if apiErr, ok := err.(datadog.GenericOpenAPIError); ok {
        fmt.Printf("API Error: %s\n", apiErr.Error())
        fmt.Printf("Error Body: %s\n", apiErr.Body())
        if model := apiErr.Model(); model != nil {
            // Access structured error model
        }
    }
    return
}

Model Type Patterns

All model types follow consistent patterns:

  • Constructor Functions - New*() functions create instances with required fields
  • Getter Methods - Get*() methods safely access fields
  • Setter Methods - Set*() fluent methods for building objects
  • Has Methods - Has*() methods check if optional fields are set
// Creating a model
incident := datadogV2.NewIncidentCreateRequest(
    datadogV2.NewIncidentCreateData(
        datadogV2.INCIDENTTYPE_INCIDENT,
        datadogV2.NewIncidentCreateAttributes("title"),
    ),
)

// Setting optional fields
incident.Data.Attributes.SetCustomerImpacted(true)

// Checking optional fields
if incident.Data.Attributes.HasCustomerImpacted() {
    impacted := incident.Data.Attributes.GetCustomerImpacted()
}

Authentication Methods

API Key Authentication (Primary)

ctx := context.WithValue(
    context.Background(),
    datadog.ContextAPIKeys,
    map[string]datadog.APIKey{
        "apiKeyAuth": {Key: "YOUR_API_KEY"},
        "appKeyAuth": {Key: "YOUR_APP_KEY"},
    },
)

Environment Variables

// Reads DD_API_KEY and DD_APP_KEY
ctx := datadog.NewDefaultContext(context.Background())

AWS Delegated Token

config := datadog.NewConfiguration()
config.DelegatedTokenConfig = &datadog.DelegatedTokenConfig{
    OrgUUID:  "your-org-uuid",
    Provider: datadog.ProviderAWS,
    ProviderAuth: &datadog.AWSAuth{
        AwsRegion: "us-east-1",
    },
}

Common Context Keys

Context keys for per-request configuration:

var (
    ContextAPIKeys                   contextKey  // API key authentication
    ContextServerIndex               contextKey  // Server configuration index
    ContextServerVariables           contextKey  // Server variable overrides
    ContextOperationServerIndices    contextKey  // Per-operation server index
    ContextOperationServerVariables  contextKey  // Per-operation server variables
    ContextDelegatedToken            contextKey  // Delegated token authentication
    ContextAWSVariables              contextKey  // AWS credentials
)

Pointer Helper Functions

Helper functions to create pointers for optional parameters:

func PtrBool(v bool) *bool
func PtrInt(v int) *int
func PtrInt32(v int32) *int32
func PtrInt64(v int64) *int64
func PtrFloat32(v float32) *float32
func PtrFloat64(v float64) *float64
func PtrString(v string) *string
func PtrTime(v time.Time) *time.Time

Usage:

optionalParams := datadogV2.NewListIncidentsOptionalParameters()
optionalParams.PageSize = datadog.PtrInt64(50)

Install with Tessl CLI

npx tessl i tessl/golang-github-com-data-dog--datadog-api-client-go-v2

docs

common-package.md

index.md

tile.json