Skip to content

hauntsaninja/datadog-api-client-python

Repository files navigation

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.7+.

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:

fromdatadog_api_clientimportApiClient, Configurationfromdatadog_api_client.v1.api.monitors_apiimportMonitorsApifromdatadog_api_client.v1.model.monitorimportMonitorfromdatadog_api_client.v1.model.monitor_typeimportMonitorTypebody=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() withApiClient(configuration) asapi_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

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:

fromdatadog_api_clientimportConfiguration, ThreadedApiClientfromdatadog_api_client.v1.api.dashboards_apiimportDashboardsApiconfiguration=Configuration() withThreadedApiClient(configuration) asapi_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].

importasynciofromdatadog_api_clientimportConfiguration, AsyncApiClientfromdatadog_api_client.v1.api.dashboards_apiimportDashboardsApiasyncdefmain(): configuration=Configuration() asyncwithAsyncApiClient(configuration) asapi_client: api_instance=DashboardsApi(api_client) dashboards=awaitapi_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:

fromdatadog_api_clientimportApiClient, Configurationfromdatadog_api_client.v2.api.incidents_apiimportIncidentsApiconfiguration=Configuration() configuration.unstable_operations["list_incidents"] =TruewithApiClient(configuration) asapi_client: api_instance=IncidentsApi(api_client) forincidentinapi_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

[email protected]

About

Python client for the Datadog API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python88.0%
  • Gherkin10.4%
  • Jinja1.6%