Skip to content

Commit 8e83c8f

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
and
ci.datadog-api-spec
authored
Documentation for beta /v2/usage/billing_dimension_mapping (#1995)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 2dc45ad commit 8e83c8f

16 files changed

+783
-4
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-10-31 15:33:01.721264",
8-
"spec_repo_commit": "a7602fa1"
7+
"regenerated": "2024-10-31 16:03:55.097621",
8+
"spec_repo_commit": "a11da7b5"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-10-31 15:33:01.739608",
13-
"spec_repo_commit": "a7602fa1"
12+
"regenerated": "2024-10-31 16:03:55.116103",
13+
"spec_repo_commit": "a11da7b5"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,6 +2186,74 @@ components:
21862186
- storage_account
21872187
- storage_container
21882188
type: object
2189+
BillingDimensionsMappingBody:
2190+
description: Billing dimensions mapping data.
2191+
items:
2192+
$ref: '#/components/schemas/BillingDimensionsMappingBodyItem'
2193+
type: array
2194+
BillingDimensionsMappingBodyItem:
2195+
description: The mapping data for each billing dimension.
2196+
properties:
2197+
attributes:
2198+
$ref: '#/components/schemas/BillingDimensionsMappingBodyItemAttributes'
2199+
id:
2200+
description: ID of the billing dimension.
2201+
type: string
2202+
type:
2203+
$ref: '#/components/schemas/ActiveBillingDimensionsType'
2204+
type: object
2205+
BillingDimensionsMappingBodyItemAttributes:
2206+
description: Mapping of billing dimensions to endpoint keys.
2207+
properties:
2208+
endpoints:
2209+
description: List of supported endpoints with their keys mapped to the billing_dimension.
2210+
items:
2211+
$ref: '#/components/schemas/BillingDimensionsMappingBodyItemAttributesEndpointsItems'
2212+
type: array
2213+
in_app_label:
2214+
description: Label used for the billing dimension in the Plan & Usage charts.
2215+
example: APM Hosts
2216+
type: string
2217+
timestamp:
2218+
description: 'Month in ISO-8601 format, UTC, and precise to the second:
2219+
`[YYYY-MM-DDThh:mm:ss]`.'
2220+
format: date-time
2221+
type: string
2222+
type: object
2223+
BillingDimensionsMappingBodyItemAttributesEndpointsItems:
2224+
description: An endpoint's keys mapped to the billing_dimension.
2225+
properties:
2226+
id:
2227+
description: The URL for the endpoint.
2228+
example: api/v1/usage/billable-summary
2229+
type: string
2230+
keys:
2231+
description: The billing dimension.
2232+
example:
2233+
- apm_host_top99p
2234+
- apm_host_sum
2235+
items:
2236+
example: apm_host_top99p
2237+
type: string
2238+
type: array
2239+
status:
2240+
$ref: '#/components/schemas/BillingDimensionsMappingBodyItemAttributesEndpointsItemsStatus'
2241+
type: object
2242+
BillingDimensionsMappingBodyItemAttributesEndpointsItemsStatus:
2243+
description: Denotes whether mapping keys were available for this endpoint.
2244+
enum:
2245+
- OK
2246+
- NOT_FOUND
2247+
type: string
2248+
x-enum-varnames:
2249+
- OK
2250+
- NOT_FOUND
2251+
BillingDimensionsMappingResponse:
2252+
description: Billing dimensions mapping response.
2253+
properties:
2254+
data:
2255+
$ref: '#/components/schemas/BillingDimensionsMappingBody'
2256+
type: object
21892257
BulkMuteFindingsRequest:
21902258
description: The new bulk mute finding request.
21912259
properties:
@@ -41037,6 +41105,70 @@ paths:
4103741105
operator: OR
4103841106
permissions:
4103941107
- usage_read
41108+
/api/v2/usage/billing_dimension_mapping:
41109+
get:
41110+
description: 'Get a mapping of billing dimensions to the corresponding keys
41111+
for the supported usage metering public API endpoints.
41112+
41113+
Mapping data is updated on a monthly cadence.
41114+
41115+
41116+
This endpoint is only accessible to [parent-level organizations](https://docs.datadoghq.com/account_management/multi_organization/).'
41117+
operationId: GetBillingDimensionMapping
41118+
parameters:
41119+
- description: Datetime in ISO-8601 format, UTC, and for mappings beginning
41120+
this month. Defaults to the current month.
41121+
in: query
41122+
name: filter[month]
41123+
required: false
41124+
schema:
41125+
format: date-time
41126+
type: string
41127+
- description: String to specify whether to retrieve active billing dimension
41128+
mappings for the contract or for all available mappings. Allowed views have
41129+
the string `active` or `all`. Defaults to `active`.
41130+
in: query
41131+
name: filter[view]
41132+
required: false
41133+
schema:
41134+
default: active
41135+
type: string
41136+
responses:
41137+
'200':
41138+
content:
41139+
application/json;datetime-format=rfc3339:
41140+
schema:
41141+
$ref: '#/components/schemas/BillingDimensionsMappingResponse'
41142+
description: OK
41143+
'400':
41144+
content:
41145+
application/json;datetime-format=rfc3339:
41146+
schema:
41147+
$ref: '#/components/schemas/APIErrorResponse'
41148+
description: Bad Request
41149+
'403':
41150+
content:
41151+
application/json;datetime-format=rfc3339:
41152+
schema:
41153+
$ref: '#/components/schemas/APIErrorResponse'
41154+
description: Forbidden - User is not authorized
41155+
'429':
41156+
content:
41157+
application/json;datetime-format=rfc3339:
41158+
schema:
41159+
$ref: '#/components/schemas/APIErrorResponse'
41160+
description: Too many requests
41161+
security:
41162+
- apiKeyAuth: []
41163+
appKeyAuth: []
41164+
- AuthZ:
41165+
- usage_read
41166+
summary: Get billing dimension mapping for usage endpoints
41167+
tags:
41168+
- Usage Metering
41169+
x-unstable: '**Note**: This endpoint is in Preview.
41170+
41171+
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).'
4104041172
/api/v2/usage/cost_by_org:
4104141173
get:
4104241174
deprecated: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-10-28T16:04:40.774Z

cassettes/features/v2/usage_metering/Get-billing-dimension-mapping-for-usage-endpoints-returns-Bad-Request-response.yml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Get billing dimension mapping for usage endpoints returns "OK" response
2+
3+
require "datadog_api_client"
4+
DatadogAPIClient.configure do |config|
5+
config.unstable_operations["v2.get_billing_dimension_mapping".to_sym] = true
6+
end
7+
api_instance = DatadogAPIClient::V2::UsageMeteringAPI.new
8+
p api_instance.get_billing_dimension_mapping()

features/scenarios_model_mapping.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1129,6 +1129,10 @@
11291129
"start_hr" => "Time",
11301130
"end_hr" => "Time",
11311131
},
1132+
"v2.GetBillingDimensionMapping" => {
1133+
"filter_month" => "Time",
1134+
"filter_view" => "String",
1135+
},
11321136
"v2.GetCostByOrg" => {
11331137
"start_month" => "Time",
11341138
"end_month" => "Time",

features/v2/undo.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2494,6 +2494,12 @@
24942494
"type": "safe"
24952495
}
24962496
},
2497+
"GetBillingDimensionMapping": {
2498+
"tag": "Usage Metering",
2499+
"undo": {
2500+
"type": "safe"
2501+
}
2502+
},
24972503
"GetCostByOrg": {
24982504
"tag": "Usage Metering",
24992505
"undo": {

features/v2/usage_metering.feature

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ Feature: Usage Metering
4848
When the request is sent
4949
Then the response status is 200 OK
5050

51+
@team:DataDog/revenue-query
52+
Scenario: Get billing dimension mapping for usage endpoints returns "Bad Request" response
53+
Given operation "GetBillingDimensionMapping" enabled
54+
And new "GetBillingDimensionMapping" request
55+
When the request is sent
56+
Then the response status is 400 Bad Request
57+
58+
@skip @team:DataDog/revenue-query
59+
Scenario: Get billing dimension mapping for usage endpoints returns "OK" response
60+
Given operation "GetBillingDimensionMapping" enabled
61+
And new "GetBillingDimensionMapping" request
62+
When the request is sent
63+
Then the response status is 200 OK
64+
5165
@generated @skip @team:DataDog/revenue-query
5266
Scenario: Get cost across multi-org account returns "Bad Request" response
5367
Given new "GetCostByOrg" request

lib/datadog_api_client/configuration.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def initialize
195195
"v2.list_apis": false,
196196
"v2.update_open_api": false,
197197
"v2.get_active_billing_dimensions": false,
198+
"v2.get_billing_dimension_mapping": false,
198199
"v2.get_monthly_cost_attribution": false,
199200
"v2.create_dora_deployment": false,
200201
"v2.create_dora_incident": false,

lib/datadog_api_client/inflector.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,11 @@ def overrides
10071007
"v2.azure_uc_config_post_request_type" => "AzureUCConfigPostRequestType",
10081008
"v2.azure_uc_configs_response" => "AzureUCConfigsResponse",
10091009
"v2.bill_config" => "BillConfig",
1010+
"v2.billing_dimensions_mapping_body_item" => "BillingDimensionsMappingBodyItem",
1011+
"v2.billing_dimensions_mapping_body_item_attributes" => "BillingDimensionsMappingBodyItemAttributes",
1012+
"v2.billing_dimensions_mapping_body_item_attributes_endpoints_items" => "BillingDimensionsMappingBodyItemAttributesEndpointsItems",
1013+
"v2.billing_dimensions_mapping_body_item_attributes_endpoints_items_status" => "BillingDimensionsMappingBodyItemAttributesEndpointsItemsStatus",
1014+
"v2.billing_dimensions_mapping_response" => "BillingDimensionsMappingResponse",
10101015
"v2.bulk_mute_findings_request" => "BulkMuteFindingsRequest",
10111016
"v2.bulk_mute_findings_request_attributes" => "BulkMuteFindingsRequestAttributes",
10121017
"v2.bulk_mute_findings_request_data" => "BulkMuteFindingsRequestData",

lib/datadog_api_client/v2/api/usage_metering_api.rb

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,79 @@ def get_active_billing_dimensions_with_http_info(opts = {})
8989
return data, status_code, headers
9090
end
9191

92+
# Get billing dimension mapping for usage endpoints.
93+
#
94+
# @see #get_billing_dimension_mapping_with_http_info
95+
def get_billing_dimension_mapping(opts = {})
96+
data, _status_code, _headers = get_billing_dimension_mapping_with_http_info(opts)
97+
data
98+
end
99+
100+
# Get billing dimension mapping for usage endpoints.
101+
#
102+
# Get a mapping of billing dimensions to the corresponding keys for the supported usage metering public API endpoints.
103+
# Mapping data is updated on a monthly cadence.
104+
#
105+
# This endpoint is only accessible to [parent-level organizations](https://docs.datadoghq.com/account_management/multi_organization/).
106+
#
107+
# @param opts [Hash] the optional parameters
108+
# @option opts [Time] :filter_month Datetime in ISO-8601 format, UTC, and for mappings beginning this month. Defaults to the current month.
109+
# @option opts [String] :filter_view String to specify whether to retrieve active billing dimension mappings for the contract or for all available mappings. Allowed views have the string `active` or `all`. Defaults to `active`.
110+
# @return [Array<(BillingDimensionsMappingResponse, Integer, Hash)>] BillingDimensionsMappingResponse data, response status code and response headers
111+
def get_billing_dimension_mapping_with_http_info(opts = {})
112+
unstable_enabled = @api_client.config.unstable_operations["v2.get_billing_dimension_mapping".to_sym]
113+
if unstable_enabled
114+
@api_client.config.logger.warn format("Using unstable operation '%s'", "v2.get_billing_dimension_mapping")
115+
else
116+
raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.get_billing_dimension_mapping"))
117+
end
118+
119+
if @api_client.config.debugging
120+
@api_client.config.logger.debug 'Calling API: UsageMeteringAPI.get_billing_dimension_mapping ...'
121+
end
122+
# resource path
123+
local_var_path = '/api/v2/usage/billing_dimension_mapping'
124+
125+
# query parameters
126+
query_params = opts[:query_params] || {}
127+
query_params[:'filter[month]'] = opts[:'filter_month'] if !opts[:'filter_month'].nil?
128+
query_params[:'filter[view]'] = opts[:'filter_view'] if !opts[:'filter_view'].nil?
129+
130+
# header parameters
131+
header_params = opts[:header_params] || {}
132+
# HTTP header 'Accept' (if needed)
133+
header_params['Accept'] = @api_client.select_header_accept(['application/json;datetime-format=rfc3339'])
134+
135+
# form parameters
136+
form_params = opts[:form_params] || {}
137+
138+
# http body (model)
139+
post_body = opts[:debug_body]
140+
141+
# return_type
142+
return_type = opts[:debug_return_type] || 'BillingDimensionsMappingResponse'
143+
144+
# auth_names
145+
auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth, :AuthZ]
146+
147+
new_options = opts.merge(
148+
:operation => :get_billing_dimension_mapping,
149+
:header_params => header_params,
150+
:query_params => query_params,
151+
:form_params => form_params,
152+
:body => post_body,
153+
:auth_names => auth_names,
154+
:return_type => return_type,
155+
:api_version => "V2"
156+
)
157+
158+
data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options)
159+
if @api_client.config.debugging
160+
@api_client.config.logger.debug "API called: UsageMeteringAPI#get_billing_dimension_mapping\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
161+
end
162+
return data, status_code, headers
163+
end
164+
92165
# Get cost across multi-org account.
93166
#
94167
# @see #get_cost_by_org_with_http_info

0 commit comments

Comments
 (0)