Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 86 additions & 3 deletions examples/v1/usage-metering/GetUsageSummary.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,101 @@
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.UsageMeteringApi;
import com.datadog.api.client.v1.model.UsageSummaryDate;
import com.datadog.api.client.v1.model.UsageSummaryDateOrg;
import com.datadog.api.client.v1.model.UsageSummaryResponse;
import com.datadog.api.client.v2.model.UsageSummaryAvailableFieldsAttributes;
import com.datadog.api.client.v2.model.UsageSummaryAvailableFieldsResponse;
import java.time.OffsetDateTime;
import java.util.List;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient);

// Step 1: call v2 to discover every field name at each response level.
com.datadog.api.client.v2.api.UsageMeteringApi v2Api =
new com.datadog.api.client.v2.api.UsageMeteringApi(defaultClient);

List<String> responseFields = null;
List<String> dateFields = null;
List<String> dateOrgFields = null;

try {
UsageSummaryAvailableFieldsResponse fieldsResponse =
v2Api.getUsageSummaryAvailableFields();
if (fieldsResponse.getData() != null
&& fieldsResponse.getData().getAttributes() != null) {
UsageSummaryAvailableFieldsAttributes attrs =
fieldsResponse.getData().getAttributes();
responseFields = attrs.getResponseFields();
dateFields = attrs.getDateFields();
dateOrgFields = attrs.getDateOrgFields();
}
} catch (ApiException e) {
System.err.println(
"Exception when calling UsageMeteringApi#getUsageSummaryAvailableFields");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
return;
}

// Step 2: call v1 to get the actual usage summary, including per-org breakdowns.
UsageMeteringApi v1Api = new UsageMeteringApi(defaultClient);

try {
UsageSummaryResponse result =
apiInstance.getUsageSummary(OffsetDateTime.parse("2021-11-11T11:11:11.111+00:00"));
System.out.println(result);
v1Api.getUsageSummary(
OffsetDateTime.parse("2021-11-11T11:11:11.111+00:00"),
new UsageMeteringApi.GetUsageSummaryOptionalParameters()
.includeOrgDetails(true));

// Layer 1: read response-level additionalProperties using the discovered field names.
System.out.println("=== Response-level additionalProperties ===");
if (responseFields != null) {
for (String field : responseFields) {
Object value = result.getAdditionalProperty(field);
if (value instanceof Number) {
System.out.println(field + ": " + value);
}
}
}

// Layer 2: iterate over each usage date and read date-level additionalProperties.
if (result.getUsage() != null) {
for (UsageSummaryDate dateEntry : result.getUsage()) {
System.out.println(
"\n=== Date-level additionalProperties for " + dateEntry.getDate() + " ===");
if (dateFields != null) {
for (String field : dateFields) {
Object value = dateEntry.getAdditionalProperty(field);
if (value != null) {
System.out.println(" " + field + ": " + value);
}
}
}

// Layer 3: iterate over each org within the date and read org-level additionalProperties.
if (dateEntry.getOrgs() != null) {
for (UsageSummaryDateOrg orgEntry : dateEntry.getOrgs()) {
System.out.println(
"\n === Org-level additionalProperties for org "
+ orgEntry.getId()
+ " ===");
if (dateOrgFields != null) {
for (String field : dateOrgFields) {
Object value = orgEntry.getAdditionalProperty(field);
if (value != null) {
System.out.println(" " + field + ": " + value);
}
}
}
}
}
}
}
} catch (ApiException e) {
System.err.println("Exception when calling UsageMeteringApi#getUsageSummary");
System.err.println("Status code: " + e.getCode());
Expand Down
20 changes: 18 additions & 2 deletions examples/v2/usage-metering/GetUsageSummaryAvailableFields.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// Get available fields for usage summary returns "OK." response
// Get available fields for usage summary returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.UsageMeteringApi;
import com.datadog.api.client.v2.model.UsageSummaryAvailableFieldsAttributes;
import com.datadog.api.client.v2.model.UsageSummaryAvailableFieldsResponse;

public class Example {
Expand All @@ -12,7 +13,22 @@ public static void main(String[] args) {

try {
UsageSummaryAvailableFieldsResponse result = apiInstance.getUsageSummaryAvailableFields();
System.out.println(result);
UsageSummaryAvailableFieldsAttributes attrs = result.getData().getAttributes();

System.out.printf("response_fields (%d):%n", attrs.getResponseFields().size());
for (String f : attrs.getResponseFields()) {
System.out.println(" " + f);
}

System.out.printf("date_fields (%d):%n", attrs.getDateFields().size());
for (String f : attrs.getDateFields()) {
System.out.println(" " + f);
}

System.out.printf("date_org_fields (%d):%n", attrs.getDateOrgFields().size());
for (String f : attrs.getDateOrgFields()) {
System.out.println(" " + f);
}
} catch (ApiException e) {
System.err.println("Exception when calling UsageMeteringApi#getUsageSummaryAvailableFields");
System.err.println("Status code: " + e.getCode());
Expand Down
Loading