This repository contains a Java API client for the Datadog API.
Building the API client library requires:
- Java 1.8+
- Maven/Gradle
To install the API client library to your local Maven repository, simply execute:
mvn clean installTo deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
mvn clean deployRefer to the OSSRH Guide for more information.
Add this dependency to your project's POM:
<dependency>
<groupId>com.datadoghq</groupId>
<artifactId>datadog-api-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>See the Releases page for the latest available version.
Add this dependency to your project's build file:
compile "com.datadoghq:datadog-api-client:2.0.0"See the Releases page for the latest available version.
At first generate the JAR by executing:
mvn clean packageThen manually install the following JARs:
target/datadog-api-client-<VERSION>.jartarget/lib/*.jar
Please follow the installation instruction and execute the following Java code:
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.MonitorsApi;
import com.datadog.api.client.v1.model.Monitor;
import com.datadog.api.client.v1.model.MonitorType;
import java.util.Arrays;
public class MonitorCreatetExample {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
MonitorsApi apiInstance = new MonitorsApi(defaultClient);
Monitor body =
new Monitor()
.name("my-monitor")
.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(Arrays.asList("test:example", "env:ci"))
.priority(3L));
try {
Monitor result = apiInstance.createMonitor(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling MonitorsApi#createMonitor");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}All API methods have asynchronous versions returning CompletableFuture when adding the Async suffix to their names:
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.v1.api.MonitorsApi;
public class ListMonitorsAsyncExample {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
MonitorsApi apiInstance = new MonitorsApi(defaultClient);
apiInstance.listMonitorsAsync().thenApply(monitors -> {
System.out.println(monitors);
return null;
}).exceptionally(error -> {
System.out.println(error);
return null;
});
}
}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:
defaultClient.setUnstableOperationEnabled("<Version>.<OperationName>", true);where <OperationName> is the name of the method used to interact with that endpoint. For example: listSLOCorrection, or getSLOHistory
When talking to a different server, like the eu instance, change the serverVariables on your client:
HashMap<String, String> serverVariables = new HashMap<String, String>();
serverVariables.put("site", "datadoghq.eu");
defaultApiClient.setServerVariables(serverVariables);If you want to disable GZIP compressed responses, set the compress flag
on your client:
defaultClient.setCompress(false)If you want to enable requests logging, set the debugging flag on your client:
defaultClient.setDebugging(true)Javadoc is available on javadoc.io.
To programmatically defined authorization headers, calls the configureApiKeys
method with a map containing the required secrets for the operations:
HashMap<String, String> secrets = new HashMap<>();
secrets.put("apiKeyAuth", "<YOUR API KEY>");
secrets.put("appKeyAuth", "<YOUR APPLICATION KEY>");
generalApiClient.configureApiKeys(secrets);It's recommended to create an instance of ApiClient per thread in a multithreaded environment to avoid any potential issues.