Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/datadog/datadog-api-client-java
Java client for the Datadog API
https://github.com/datadog/datadog-api-client-java
datadog datadog-api java-client openapi
Last synced: 7 days ago
JSON representation
Java client for the Datadog API
- Host: GitHub
- URL: https://github.com/datadog/datadog-api-client-java
- Owner: DataDog
- License: apache-2.0
- Created: 2019-06-25T22:54:41.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-01-16T23:15:26.000Z (10 days ago)
- Last Synced: 2025-01-17T00:22:40.034Z (10 days ago)
- Topics: datadog, datadog-api, java-client, openapi
- Language: Java
- Homepage: https://www.javadoc.io/doc/com.datadoghq/datadog-api-client
- Size: 63.6 MB
- Stars: 64
- Watchers: 520
- Forks: 32
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Support: SUPPORT.md
Awesome Lists containing this project
README
# datadog-api-client-java
This repository contains a Java API client for the [Datadog API](https://docs.datadoghq.com/api/).
## Requirements
Building the API client library requires:
1. Java 1.8+
2. Maven/Gradle## Installation
To install the API client library to your local Maven repository, simply execute:
```shell
mvn clean install
```To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
```shell
mvn clean deploy
```Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information.
### Maven users
Add this dependency to your project's POM:
```xml
com.datadoghq
datadog-api-client
2.10.0
compile```
See the [Releases page](https://github.com/DataDog/datadog-api-client-java/releases) for the latest available version.
### Gradle users
Add this dependency to your project's build file:
```groovy
compile "com.datadoghq:datadog-api-client:2.0.0"
```See the [Releases page](https://github.com/DataDog/datadog-api-client-java/releases) for the latest available version.
### Others
At first generate the JAR by executing:
```shell
mvn clean package
```Then manually install the following JARs:
- `target/datadog-api-client-.jar`
- `target/lib/*.jar`## Getting Started
Please follow the [installation](#installation) instruction and execute the following Java code:
```java
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 MonitorCreatedExample {
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();
}
}
}```
### Asynchronous support
All API methods have asynchronous versions returning `CompletableFuture` when adding the `Async` suffix to their names:
```java
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;
});
}
}
```### 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:
```java
defaultClient.setUnstableOperationEnabled(".", true);
```where `` is the name of the method used to interact with that endpoint. For example: `listSLOCorrection`, or `getSLOHistory`
### Changing Server
When talking to a different server, like the `eu` instance, change the `serverVariables` on your client:
```java
HashMap serverVariables = new HashMap();
serverVariables.put("site", "datadoghq.eu");
defaultApiClient.setServerVariables(serverVariables);
```### Disable compressed payloads
If you want to disable GZIP compressed responses, set the `compress` flag
on your client:```java
defaultClient.setCompress(false)
```### Enable requests logging
If you want to enable requests logging, set the `debugging` flag on your client:
```java
defaultClient.setDebugging(true)
```### Enable Retry
To enable the client to retry when rate limited (status 429) or status 500 and above:
```java
defaultClient.enableRetry(true)
```The interval between 2 retry attempts will be the value of the `x-ratelimit-reset` response header when available. If not, it will be :
`Math.pow (multiplier_for_retry_backoff, current_retry_count)*base_for_retry_backoff`.### Configure proxy
You can provide custom `connectorProvider` implementation to `clientConfig` to use proxy. See example below using `ApacheConnectorProvider`:
```java
import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.DashboardsApi;
import com.datadog.api.client.v1.model.DashboardSummary;public class ProxyExample {
public static void main( String[] args ) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
ClientConfig clientConfig = defaultClient.getClientConfig().connectorProvider(new ApacheConnectorProvider());
clientConfig.property(ClientProperties.PROXY_URI, "http://127.0.0.1:80");
defaultClient.setClientConfig(clientConfig);DashboardsApi apiInstance = new DashboardsApi(defaultClient);
try {
DashboardSummary result =
apiInstance.listDashboards();
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling DashboardsApi#listDashboards");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
```### Using alternative artifacts
Outside of the regular JAR file we also release 2 artifacts that can be useful for development, namely:
- `jar-with-dependencies`, which contains all the dependencies of the client in a single JAR
- `shaded-jar`, which includes and renames the core dependencies of the client, allowing you to use different versions of those
libraries in your project.To use them in Maven, just add the `classifier` keyword in the dependency definition. For example:
```xml
com.datadoghq
datadog-api-client
2.10.0
shaded-jar
compile```
## Documentation for API Endpoints and Models
Javadoc is available on [javadoc.io](https://www.javadoc.io/doc/com.datadoghq/datadog-api-client/latest/).
## Documentation for Authorization
To programmatically defined authorization headers, calls the `configureApiKeys`
method with a map containing the required secrets for the operations:```java
HashMap secrets = new HashMap<>();
secrets.put("apiKeyAuth", "");
secrets.put("appKeyAuth", "");
generalApiClient.configureApiKeys(secrets);
```## Recommendation
It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues.
## Author