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
82 changes: 69 additions & 13 deletions examples/v1/usage-metering/GetUsageSummary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,76 @@
* Get usage across your account returns "OK" response
*/

import { client, v1 } from "@datadog/datadog-api-client";
import { client, v1, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
const apiInstance = new v1.UsageMeteringApi(configuration);

const params: v1.UsageMeteringApiGetUsageSummaryRequest = {
startMonth: new Date(2021, 11, 11, 11, 11, 11, 111000),
};

apiInstance
.getUsageSummary(params)
.then((data: v1.UsageSummaryResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);

// Step 1: call v2 getUsageSummaryAvailableFields to enumerate all field names
const v2ApiInstance = new v2.UsageMeteringApi(configuration);

v2ApiInstance
.getUsageSummaryAvailableFields()
.then((fieldsData: v2.UsageSummaryAvailableFieldsResponse) => {
const attrs = fieldsData.data?.attributes;
const responseFields: string[] = attrs?.responseFields ?? [];
const dateFields: string[] = attrs?.dateFields ?? [];
const dateOrgFields: string[] = attrs?.dateOrgFields ?? [];

console.log(`responseFields count: ${responseFields.length}`);
console.log(`dateFields count: ${dateFields.length}`);
console.log(`dateOrgFields count: ${dateOrgFields.length}`);

// Step 2: call v1 getUsageSummary for approximately the last month
const v1ApiInstance = new v1.UsageMeteringApi(configuration);

const params: v1.UsageMeteringApiGetUsageSummaryRequest = {
startMonth: new Date(2021, 11, 11, 11, 11, 11, 111000),
includeOrgDetails: true,
};

v1ApiInstance
.getUsageSummary(params)
.then((data: v1.UsageSummaryResponse) => {
// --- Layer 1: top-level response additionalProperties ---
console.log("\n=== Top-level response additionalProperties ===");
const topProps = data.additionalProperties ?? {};
for (const field of responseFields) {
const value = topProps[field];
if (value !== undefined && value !== null) {
console.log(` ${field}: ${value}`);
}
}

// --- Layer 2: per-date entries ---
const usageDates = data.usage ?? [];
for (const dateEntry of usageDates) {
const dateLabel = dateEntry.date?.toISOString() ?? "(unknown date)";
console.log(`\n=== Date entry: ${dateLabel} ===`);

const dateProps = dateEntry.additionalProperties ?? {};
for (const field of dateFields) {
const value = dateProps[field];
if (value !== undefined && value !== null) {
console.log(` ${field}: ${value}`);
}
}

// --- Layer 3: per-date per-org entries ---
const orgs = dateEntry.orgs ?? [];
for (const orgEntry of orgs) {
const orgName = orgEntry.name ?? orgEntry.publicId ?? "(org)";
console.log(`\n === Org: ${orgName} ===`);

const orgProps = orgEntry.additionalProperties ?? {};
for (const field of dateOrgFields) {
const value = orgProps[field];
if (value !== undefined && value !== null) {
console.log(` ${field}: ${value}`);
}
}
}
}
})
.catch((error: any) => console.error(error));
})
.catch((error: any) => console.error(error));
19 changes: 15 additions & 4 deletions examples/v2/usage-metering/GetUsageSummaryAvailableFields.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Get available fields for usage summary returns "OK." response
* Get available fields for usage summary returns "OK" response
*/

import { client, v2 } from "@datadog/datadog-api-client";
Expand All @@ -10,8 +10,19 @@ const apiInstance = new v2.UsageMeteringApi(configuration);
apiInstance
.getUsageSummaryAvailableFields()
.then((data: v2.UsageSummaryAvailableFieldsResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
const attrs = data.data?.attributes;
if (!attrs) return;

const responseFields = attrs.responseFields ?? [];
console.log(`response_fields (${responseFields.length}):`);
for (const f of responseFields) console.log(` ${f}`);

const dateFields = attrs.dateFields ?? [];
console.log(`date_fields (${dateFields.length}):`);
for (const f of dateFields) console.log(` ${f}`);

const dateOrgFields = attrs.dateOrgFields ?? [];
console.log(`date_org_fields (${dateOrgFields.length}):`);
for (const f of dateOrgFields) console.log(` ${f}`);
})
.catch((error: any) => console.error(error));
Loading