Skip to main content

Collection of all Datadog Public endpoints

Project description

datadog-api-client-python

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

Requirements

Building and using the API client library requires Python 3.8+.

Installation

To install the API client library, simply execute:

pip install datadog-api-client

Getting Started

Please follow the installation instruction and execute the following Python code:

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.monitors_api import MonitorsApi
from datadog_api_client.v1.model.monitor import Monitor
from datadog_api_client.v1.model.monitor_type import MonitorType

body = Monitor(
    name="example",
    type=MonitorType("log alert"),
    query='logs("service:foo AND type:error").index("main").rollup("count").by("source").last("5m") > 2',
    message="some message Notify: @hipchat-channel",
    tags=["test:example", "env:ci"],
    priority=3,
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
    api_instance = MonitorsApi(api_client)
    response = api_instance.create_monitor(body=body)
    print(response)

Authentication

By default the library will use the DD_API_KEY and DD_APP_KEY environment variables to authenticate against the Datadog API. To provide your own set of credentials, you need to set some keys on the configuration:

configuration.api_key["apiKeyAuth"] = "<API KEY>"
configuration.api_key["appKeyAuth"] = "<APPLICATION KEY>"

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.unstable_operations["<OperationName>"] = True

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

Changing Server

When talking to a different server, like the eu instance, change the server_variables on your configuration object:

configuration.server_variables["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 enable_retry to True

    configuration.enable_retry = True

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

    configuration.max_retries = 5

Custom retry policy

You can provide a custom retry policy by passing a urllib3.util.Retry instance to the configuration. When a custom retry policy is provided, it takes precedence over the enable_retry, retry_backoff_factor, and max_retries settings.

import urllib3
from datadog_api_client import Configuration

# Create a custom retry policy
custom_retry = urllib3.util.Retry(
    total=5,
    backoff_factor=2,
    status_forcelist=[429, 500, 502, 503, 504],
    allowed_methods=["GET", "POST", "PUT", "DELETE"]
)

configuration = Configuration(retry_policy=custom_retry)

See urllib3.util.Retry documentation for more details.

Configure proxy

You can configure the client to use proxy by setting the proxy key on configuration object:

configuration.proxy = "http://127.0.0.1:80"

Threads support

You can run API calls in a thread by using ThreadedApiClient in place of ApiClient. API calls will then return a AsyncResult instance on which you can call get to retrieve the result:

from datadog_api_client import Configuration, ThreadedApiClient
from datadog_api_client.v1.api.dashboards_api import DashboardsApi

configuration = Configuration()
with ThreadedApiClient(configuration) as api_client:
    api_instance = DashboardsApi(api_client)
    result = api_instance.list_dashboards()
    dashboards = result.get()
    print(dashboards)

Asyncio support

The library supports asynchronous operations when using AsyncApiClient for the transport. When that client is used, the API methods will then return coroutines that you can wait for.

To make async support available, you need to install the extra async qualifiers during installation: pip install datadog-api-client[async].

import asyncio

from datadog_api_client import Configuration, AsyncApiClient
from datadog_api_client.v1.api.dashboards_api import DashboardsApi

async def main():
    configuration = Configuration()
    async with AsyncApiClient(configuration) as api_client:
        api_instance = DashboardsApi(api_client)
        dashboards = await api_instance.list_dashboards()
        print(dashboards)

asyncio.run(main())

Pagination

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

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.incidents_api import IncidentsApi

configuration = Configuration()
configuration.unstable_operations["list_incidents"] = True
with ApiClient(configuration) as api_client:
    api_instance = IncidentsApi(api_client)
    for incident in api_instance.list_incidents_with_pagination():
        print(incident.id)

Documentation for API Endpoints and Models

Documentation for API endpoints and models is available in the API Client docs.

Documentation for Authorization

Authenticate with the API by providing your API and Application keys in the configuration:

configuration.api_key["apiKeyAuth"] = "YOUR_API_KEY"
configuration.api_key["appKeyAuth"] = "YOUR_APPLICATION_KEY"

Author

support@datadoghq.com

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datadog_api_client-2.51.0.tar.gz (4.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datadog_api_client-2.51.0-py3-none-any.whl (5.4 MB view details)

Uploaded Python 3

File details

Details for the file datadog_api_client-2.51.0.tar.gz.

File metadata

  • Download URL: datadog_api_client-2.51.0.tar.gz
  • Upload date:
  • Size: 4.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for datadog_api_client-2.51.0.tar.gz
Algorithm Hash digest
SHA256 6ec0cda0f97754a4824ced63994e19d58eb37b9a02ea6c16da7a21cc1b3f71cd
MD5 53bc7854e2fb5fd11f0572eca92a96d0
BLAKE2b-256 14e97e2a3f0b3b9e6473afc1d5ad6ff0d410ee0ffba5f5656703090912a1f7ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for datadog_api_client-2.51.0.tar.gz:

Publisher: publish.yml on DataDog/datadog-api-client-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file datadog_api_client-2.51.0-py3-none-any.whl.

File metadata

File hashes

Hashes for datadog_api_client-2.51.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b665f7db3ce11cb01c4f51c70d2710fe7185d94b9318bc3e08702c0e893e7a4
MD5 f457e0ee890616aa3ede25d2c81aa401
BLAKE2b-256 5a8379d08078e81457f465d1962681753267b9876d17e8c5fa3660a68314ce77

See more details on using hashes here.

Provenance

The following attestation bundles were made for datadog_api_client-2.51.0-py3-none-any.whl:

Publisher: publish.yml on DataDog/datadog-api-client-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page