Skip to content
Merged
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
111 changes: 86 additions & 25 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70492,6 +70492,8 @@ components:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit"
maxItems: 100
type: array
tracking_mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode"
type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorType"
value_limit:
Expand All @@ -70506,6 +70508,7 @@ components:
- type
- include
- limit_exceeded_action
- tracking_mode
- value_limit
- enabled
type: object
Expand All @@ -70520,6 +70523,16 @@ components:
x-enum-varnames:
- DROP_TAG
- DROP_EVENT
ObservabilityPipelineTagCardinalityLimitProcessorOverrideType:
description: How the override is applied. `limit_override` enforces a custom limit; `excluded` omits the metric or tag from cardinality tracking.
enum:
- limit_override
- excluded
example: limit_override
type: string
x-enum-varnames:
- LIMIT_OVERRIDE
- EXCLUDED
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit:
description: A cardinality override applied to a specific metric.
properties:
Expand All @@ -70529,65 +70542,63 @@ components:
description: The name of the metric this override applies to.
example: "system.cpu.user"
type: string
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode"
override_type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"
per_tag_limits:
description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `mode` is `excluded`.
description: A list of per-tag cardinality overrides that apply within this metric. Must be omitted when `override_type` is `excluded`.
items:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit"
maxItems: 50
type: array
value_limit:
description: The maximum number of distinct tag value combinations allowed for this metric. Required when `mode` is `tracked`. Must be omitted when `mode` is `excluded`.
description: The maximum number of distinct tag value combinations allowed for this metric. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`.
example: 10000
format: int64
maximum: 1000000
minimum: 0
type: integer
required:
- metric_name
- mode
- override_type
type: object
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricMode:
description: How the per-metric override is applied. `tracked` enforces a custom limit; `excluded` skips the metric entirely.
enum:
- tracked
- excluded
example: tracked
type: string
x-enum-varnames:
- TRACKED
- EXCLUDED
ObservabilityPipelineTagCardinalityLimitProcessorPerTagLimit:
description: A cardinality override for a specific tag key within a per-metric limit.
properties:
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode"
override_type:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorOverrideType"
tag_key:
description: The tag key this override applies to.
example: "host"
type: string
value_limit:
description: The maximum number of distinct values allowed for this tag. Required when `mode` is `limit_override`. Must be omitted when `mode` is `excluded`.
description: The maximum number of distinct values allowed for this tag. Required when `override_type` is `limit_override`. Must be omitted when `override_type` is `excluded`.
example: 5000
format: int64
maximum: 1000000
minimum: 0
type: integer
required:
- tag_key
- override_type
type: object
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode:
description: Controls whether the processor uses exact or probabilistic tag tracking.
properties:
mode:
$ref: "#/components/schemas/ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode"
required:
- mode
type: object
ObservabilityPipelineTagCardinalityLimitProcessorPerTagMode:
description: How the per-tag override is applied. `limit_override` enforces a custom limit on the tag; `excluded` skips the tag from cardinality tracking.
ObservabilityPipelineTagCardinalityLimitProcessorTrackingModeMode:
description: The cardinality tracking algorithm to use.
enum:
- limit_override
- excluded
example: limit_override
- exact_fingerprint
- probabilistic
example: exact_fingerprint
type: string
x-enum-varnames:
- LIMIT_OVERRIDE
- EXCLUDED
- EXACT_FINGERPRINT
- PROBABILISTIC
ObservabilityPipelineTagCardinalityLimitProcessorType:
default: tag_cardinality_limit
description: The processor type. The value must be `tag_cardinality_limit`.
Expand Down Expand Up @@ -127284,6 +127295,56 @@ paths:
x-unstable: |-
**Note**: This endpoint is in preview and is subject to change.
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
get:
description: Get the custom forecast for a budget.
operationId: GetCustomForecast
parameters:
- $ref: "#/components/parameters/BudgetID"
responses:
"200":
content:
application/json:
examples:
default:
value:
data:
attributes:
budget_uid: 00000000-0000-0000-0000-000000000001
created_at: 1738258683590
created_by: 00000000-0a0a-0a0a-aaa0-00000000000a
entries:
- amount: 400
month: 202501
tag_filters:
- tag_key: service
tag_value: ec2
- amount: 450
month: 202502
tag_filters:
- tag_key: service
tag_value: ec2
updated_at: 1738258683590
updated_by: 00000000-0a0a-0a0a-aaa0-00000000000a
id: 11111111-1111-1111-1111-111111111111
type: custom_forecast
schema:
$ref: "#/components/schemas/CustomForecastResponse"
description: OK
"400":
$ref: "#/components/responses/BadRequestResponse"
"404":
$ref: "#/components/responses/NotFoundResponse"
"429":
$ref: "#/components/responses/TooManyRequestsResponse"
security:
- apiKeyAuth: []
appKeyAuth: []
summary: Get a budget's custom forecast
tags:
- Cloud Cost Management
x-unstable: |-
**Note**: This endpoint is in preview and is subject to change.
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cost/budgets:
get:
description: List budgets.
Expand Down
23 changes: 15 additions & 8 deletions docs/datadog_api_client.v2.model.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29201,17 +29201,17 @@ datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_
:members:
:show-inheritance:

datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_limit module
--------------------------------------------------------------------------------------------------------------------
datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_override\_type module
----------------------------------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit
.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_override_type
:members:
:show-inheritance:

datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_mode module
-------------------------------------------------------------------------------------------------------------------
datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_metric\_limit module
--------------------------------------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_mode
.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit
:members:
:show-inheritance:

Expand All @@ -29222,10 +29222,17 @@ datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_
:members:
:show-inheritance:

datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_per\_tag\_mode module
datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_tracking\_mode module
----------------------------------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_tag_mode
.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode
:members:
:show-inheritance:

datadog\_api\_client.v2.model.observability\_pipeline\_tag\_cardinality\_limit\_processor\_tracking\_mode\_mode module
----------------------------------------------------------------------------------------------------------------------

.. automodule:: datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode_mode
:members:
:show-inheritance:

Expand Down
16 changes: 16 additions & 0 deletions examples/v2/cloud-cost-management/GetCustomForecast.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""
Get a budget's custom forecast returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.cloud_cost_management_api import CloudCostManagementApi

configuration = Configuration()
configuration.unstable_operations["get_custom_forecast"] = True
with ApiClient(configuration) as api_client:
api_instance = CloudCostManagementApi(api_client)
response = api_instance.get_custom_forecast(
budget_id="budget_id",
)

print(response)
1 change: 1 addition & 0 deletions src/datadog_api_client/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,7 @@ def __init__(
"v2.get_commitments_utilization_timeseries": False,
"v2.get_cost_anomaly": False,
"v2.get_cost_tag_metadata_currency": False,
"v2.get_custom_forecast": False,
"v2.list_cost_anomalies": False,
"v2.list_cost_tag_key_sources": False,
"v2.list_cost_tag_metadata": False,
Expand Down
40 changes: 40 additions & 0 deletions src/datadog_api_client/v2/api/cloud_cost_management_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1085,6 +1085,29 @@ def __init__(self, api_client=None):
api_client=api_client,
)

self._get_custom_forecast_endpoint = _Endpoint(
settings={
"response_type": (CustomForecastResponse,),
"auth": ["apiKeyAuth", "appKeyAuth"],
"endpoint_path": "/api/v2/cost/budget/{budget_id}/custom-forecast",
"operation_id": "get_custom_forecast",
"http_method": "GET",
"version": "v2",
},
params_map={
"budget_id": {
"required": True,
"openapi_types": (str,),
"attribute": "budget_id",
"location": "path",
},
},
headers_map={
"accept": ["application/json"],
},
api_client=api_client,
)

self._get_tag_pipelines_ruleset_endpoint = _Endpoint(
settings={
"response_type": (RulesetResp,),
Expand Down Expand Up @@ -2791,6 +2814,23 @@ def get_custom_costs_file(

return self._get_custom_costs_file_endpoint.call_with_http_info(**kwargs)

def get_custom_forecast(
self,
budget_id: str,
) -> CustomForecastResponse:
"""Get a budget's custom forecast.

Get the custom forecast for a budget.

:param budget_id: Budget id.
:type budget_id: str
:rtype: CustomForecastResponse
"""
kwargs: Dict[str, Any] = {}
kwargs["budget_id"] = budget_id

return self._get_custom_forecast_endpoint.call_with_http_info(**kwargs)

def get_tag_pipelines_ruleset(
self,
ruleset_id: str,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,9 @@ def __init__(self, **kwargs):
:param per_metric_limits: A list of per-metric cardinality overrides that take precedence over the default `value_limit`.
:type per_metric_limits: [ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit], optional

:param tracking_mode: Controls whether the processor uses exact or probabilistic tag tracking.
:type tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode

:param value_limit: The default maximum number of distinct tag value combinations allowed per metric.
:type value_limit: int
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit import (
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit,
)
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode import (
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode,
)
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_type import (
ObservabilityPipelineTagCardinalityLimitProcessorType,
)
Expand All @@ -44,6 +47,9 @@ def openapi_types(_):
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_per_metric_limit import (
ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit,
)
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_tracking_mode import (
ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode,
)
from datadog_api_client.v2.model.observability_pipeline_tag_cardinality_limit_processor_type import (
ObservabilityPipelineTagCardinalityLimitProcessorType,
)
Expand All @@ -55,6 +61,7 @@ def openapi_types(_):
"include": (str,),
"limit_exceeded_action": (ObservabilityPipelineTagCardinalityLimitProcessorAction,),
"per_metric_limits": ([ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit],),
"tracking_mode": (ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode,),
"type": (ObservabilityPipelineTagCardinalityLimitProcessorType,),
"value_limit": (int,),
}
Expand All @@ -66,6 +73,7 @@ def openapi_types(_):
"include": "include",
"limit_exceeded_action": "limit_exceeded_action",
"per_metric_limits": "per_metric_limits",
"tracking_mode": "tracking_mode",
"type": "type",
"value_limit": "value_limit",
}
Expand All @@ -76,6 +84,7 @@ def __init__(
id: str,
include: str,
limit_exceeded_action: ObservabilityPipelineTagCardinalityLimitProcessorAction,
tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode,
type: ObservabilityPipelineTagCardinalityLimitProcessorType,
value_limit: int,
display_name: Union[str, UnsetType] = unset,
Expand Down Expand Up @@ -107,6 +116,9 @@ def __init__(
:param per_metric_limits: A list of per-metric cardinality overrides that take precedence over the default ``value_limit``.
:type per_metric_limits: [ObservabilityPipelineTagCardinalityLimitProcessorPerMetricLimit], optional

:param tracking_mode: Controls whether the processor uses exact or probabilistic tag tracking.
:type tracking_mode: ObservabilityPipelineTagCardinalityLimitProcessorTrackingMode

:param type: The processor type. The value must be ``tag_cardinality_limit``.
:type type: ObservabilityPipelineTagCardinalityLimitProcessorType

Expand All @@ -123,5 +135,6 @@ def __init__(
self_.id = id
self_.include = include
self_.limit_exceeded_action = limit_exceeded_action
self_.tracking_mode = tracking_mode
self_.type = type
self_.value_limit = value_limit
Loading
Loading