client

package module
v2.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2023 License: Apache-2.0 Imports: 0 Imported by: 0

README

datadog-api-client-go

This repository contains a Go API client for the Datadog API.

Requirements

  • Go 1.19+

Layout

This repository contains per-major-version API client packages. Right now, Datadog has two API versions, v1, v2 and the common package.

The API v1 Client

The client library for Datadog API v1 is located in the api/datadogV1 directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
The API v2 Client

The client library for Datadog API v2 is located in the api/datadogV2 directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
The Datadog Package

The datadog package for Datadog API is located in the api/datadog directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadog"

Getting Started

Here's an example creating a user:

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() {
    ctx := context.WithValue(
        context.Background(),
        datadog.ContextAPIKeys,
        map[string]datadog.APIKey{
            "apiKeyAuth": {
                Key: os.Getenv("DD_CLIENT_API_KEY"),
            },
            "appKeyAuth": {
                Key: os.Getenv("DD_CLIENT_APP_KEY"),
            },
        },
    )

    body := *datadogV2.NewUserCreateRequest(*datadogV2.NewUserCreateData(*datadogV2.NewUserCreateAttributes("jane.doe@example.com"), datadogV2.UsersType("users")))

    configuration := datadog.NewConfiguration()
    apiClient := datadog.NewAPIClient(configuration)
    usersApi := datadogV2.NewUsersApi(apiClient)

    resp, r, err := usersApi.CreateUser(ctx, body)
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error creating user: %v\n", err)
        fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    }
    responseData := resp.GetData()
    fmt.Fprintf(os.Stdout, "User ID: %s", responseData.GetId())
}

Save it to example.go, then run go get github.com/DataDog/datadog-api-client-go/v2. Set the DD_CLIENT_API_KEY and DD_CLIENT_APP_KEY to your Datadog credentials, and then run go run example.go.

Unstable Endpoints

This client includes access to Datadog API endpoints while they are in an unstable state and may undergo breaking changes. An extra configuration step is required to enable these endpoints:

    configuration.SetUnstableOperationEnabled("<APIVersion>.<OperationName>", true)

where <OperationName> is the name of the method used to interact with that endpoint. For example: GetLogsIndex, or UpdateLogsIndex

Changing Server

When talking to a different server, like the eu instance, change the ContextServerVariables:

    ctx = context.WithValue(ctx,
        datadog.ContextServerVariables,
        map[string]string{
            "site": "datadoghq.eu",
    })
Disable compressed payloads

If you want to disable GZIP compressed responses, set the compress flag on your configuration object:

    configuration.Compress = false
Enable requests logging

If you want to enable requests logging, set the debug flag on your configuration object:

    configuration.Debug = true
Enable retry

If you want to enable retry when getting status code 429 rate-limited, set EnableRetry to true

    configuration.RetryConfiguration.EnableRetry = true

The default max retry is 3, you can change it with MaxRetries

    configuration.RetryConfiguration.MaxRetries = 3
Configure proxy

If you want to configure proxy, set env var HTTP_PROXY, and HTTPS_PROXY or set custom HTTPClient with proxy configured on configuration object:

    proxyUrl, _ := url.Parse("http://127.0.0.1:80")
    configuration.HTTPClient = &http.Client{
        Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
    }
Pagination

Several listing operations have a pagination method to help consume all the items available. For example, to retrieve all your incidents:

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() {
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.ListIncidents", true)
	apiClient := datadog.NewAPIClient(configuration)
	incidentsApi := datadogV2.NewIncidentsApi(apiClient)

	resp, _ := incidentsApi.ListIncidentsWithPagination(ctx, *datadog.NewListIncidentsOptionalParameters())
	for paginationResult := range resp {
		if paginationResult.Error != nil {
			fmt.Fprintf(os.Stderr, "Error when calling `IncidentsApi.ListIncidentsWithPagination`: %v\n", paginationResult.Error)
		}
		responseContent, _ := json.MarshalIndent(paginationResult.Item, "", "  ")
		fmt.Fprintf(os.Stdout, "%s\n", responseContent)
	}

}

Documentation

Developer documentation for API endpoints and models is available on Github pages. Released versions are available on pkg.go.dev.

Contributing

As most of the code in this repository is generated, we will only accept PRs for files that are not modified by our code-generation machinery (changes to the generated files would get overwritten). We happily accept contributions to files that are not autogenerated, such as tests and development tooling.

Author

support@datadoghq.com

Documentation

Overview

Package datadog-api-client-go.

This repository contains a Go API client for the Datadog API (https://docs.datadoghq.com/api/).

Requirements

• Go 1.19+

Layout

This repository contains per-major-version API client packages. Right now, Datadog has two API versions, v1, v2 and the common package.

The API v1 Client

The client library for Datadog API v1 is located in the api/datadogV1 directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"

The API v2 Client

The client library for Datadog API v2 is located in the api/datadogV2 directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"

The Datadog Package

The datadog package for Datadog API is located in the api/datadog directory. Import it with

import "github.com/DataDog/datadog-api-client-go/v2/api/datadog"

Getting Started

Here's an example creating a user:

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() {
    ctx := context.WithValue(
        context.Background(),
        datadog.ContextAPIKeys,
        map[string]datadog.APIKey{
            "apiKeyAuth": {
                Key: os.Getenv("DD_CLIENT_API_KEY"),
            },
            "appKeyAuth": {
                Key: os.Getenv("DD_CLIENT_APP_KEY"),
            },
        },
    )

    body := *datadogV2.NewUserCreateRequest(*datadogV2.NewUserCreateData(*datadogV2.NewUserCreateAttributes("jane.doe@example.com"), datadogV2.UsersType("users")))

    configuration := datadog.NewConfiguration()
    apiClient := datadog.NewAPIClient(configuration)
    usersApi := datadogV2.NewUsersApi(apiClient)

    resp, r, err := usersApi.CreateUser(ctx, body)
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error creating user: %v\n", err)
        fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    }
    responseData := resp.GetData()
    fmt.Fprintf(os.Stdout, "User ID: %s", responseData.GetId())
}

Save it to example.go, then run go get github.com/DataDog/datadog-api-client-go/v2. Set the DD_CLIENT_API_KEY and DD_CLIENT_APP_KEY to your Datadog credentials, and then run go run example.go.

Unstable Endpoints

This client includes access to Datadog API endpoints while they are in an unstable state and may undergo breaking changes. An extra configuration step is required to enable these endpoints:

configuration.SetUnstableOperationEnabled("<APIVersion>.<OperationName>", true)

where <OperationName> is the name of the method used to interact with that endpoint. For example: GetLogsIndex, or UpdateLogsIndex

Changing Server

When talking to a different server, like the eu instance, change the ContextServerVariables:

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

Disable compressed payloads

If you want to disable GZIP compressed responses, set the compress flag on your configuration object:

configuration.Compress = false

Enable requests logging

If you want to enable requests logging, set the debug flag on your configuration object:

configuration.Debug = true

Enable retry

If you want to enable retry when getting status code 429 rate-limited, set EnableRetry to true

configuration.RetryConfiguration.EnableRetry = true

The default max retry is 3, you can change it with MaxRetries

configuration.RetryConfiguration.MaxRetries = 3

Configure proxy

If you want to configure proxy, set env var HTTP_PROXY, and HTTPS_PROXY or set custom HTTPClient with proxy configured on configuration object:

proxyUrl, _ := url.Parse("http://127.0.0.1:80")
configuration.HTTPClient = &http.Client{
    Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}
}

Pagination

Several listing operations have a pagination method to help consume all the items available. For example, to retrieve all your incidents:

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() {
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.ListIncidents", true)
	apiClient := datadog.NewAPIClient(configuration)
	incidentsApi := datadogV2.NewIncidentsApi(apiClient)

	resp, _ := incidentsApi.ListIncidentsWithPagination(ctx, *datadog.NewListIncidentsOptionalParameters())
	for paginationResult := range resp {
		if paginationResult.Error != nil {
			fmt.Fprintf(os.Stderr, "Error when calling `IncidentsApi.ListIncidentsWithPagination`: %v\n", paginationResult.Error)
		}
		responseContent, _ := json.MarshalIndent(paginationResult.Item, "", "  ")
		fmt.Fprintf(os.Stdout, "%s\n", responseContent)
	}

}

Documentation

Developer documentation for API endpoints and models is available on Github pages (https://datadoghq.dev/datadog-api-client-go/pkg/github.com/DataDog/datadog-api-client-go/v2/). Released versions are available on pkg.go.dev (https://pkg.go.dev/github.com/DataDog/datadog-api-client-go/v2).

Contributing

As most of the code in this repository is generated, we will only accept PRs for files that are not modified by our code-generation machinery (changes to the generated files would get overwritten). We happily accept contributions to files that are not autogenerated, such as tests and development tooling.

Author

support@datadoghq.com

Index

Constants

View Source
const Version = "2.16.0"

Version used in User-Agent header.

Variables

This section is empty.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL