From 9ac18126ce6616649002648a664d60785615d1ff Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Wed, 25 Feb 2026 15:23:00 +0000 Subject: [PATCH] Regenerate client from commit 0e8eecc of spec repo --- .generator/schemas/v2/openapi.yaml | 562 ++++++++++++++++++ docs/datadog_api_client.v2.model.rst | 259 ++++++++ .../QueryProductAnalyticsScalar.py | 45 ++ .../QueryProductAnalyticsTimeseries.py | 45 ++ .../v2/api/product_analytics_api.py | 78 +++ .../product_analytics_analytics_query.py | 93 +++ .../product_analytics_analytics_request.py | 44 ++ ..._analytics_analytics_request_attributes.py | 78 +++ ...roduct_analytics_analytics_request_data.py | 61 ++ ...roduct_analytics_analytics_request_type.py | 37 ++ ...uct_analytics_audience_account_subquery.py | 43 ++ .../product_analytics_audience_filters.py | 86 +++ ...uct_analytics_audience_segment_subquery.py | 40 ++ ...roduct_analytics_audience_user_subquery.py | 43 ++ .../v2/model/product_analytics_base_query.py | 45 ++ .../v2/model/product_analytics_compute.py | 56 ++ .../v2/model/product_analytics_event_query.py | 54 ++ ...oduct_analytics_event_query_data_source.py | 35 ++ .../model/product_analytics_event_search.py | 36 ++ .../model/product_analytics_execution_type.py | 44 ++ .../v2/model/product_analytics_group_by.py | 78 +++ .../model/product_analytics_group_by_sort.py | 62 ++ .../v2/model/product_analytics_interval.py | 64 ++ .../product_analytics_occurrence_filter.py | 49 ++ .../product_analytics_occurrence_query.py | 57 ++ ..._analytics_occurrence_query_data_source.py | 37 ++ .../product_analytics_occurrence_search.py | 54 ++ .../model/product_analytics_response_meta.py | 56 ++ .../product_analytics_response_meta_status.py | 41 ++ .../model/product_analytics_scalar_column.py | 76 +++ .../product_analytics_scalar_column_meta.py | 43 ++ .../product_analytics_scalar_column_type.py | 38 ++ .../product_analytics_scalar_response.py | 58 ++ ...ct_analytics_scalar_response_attributes.py | 42 ++ .../product_analytics_scalar_response_data.py | 70 +++ .../product_analytics_scalar_response_type.py | 35 ++ .../v2/model/product_analytics_serie.py | 62 ++ .../product_analytics_timeseries_response.py | 60 ++ ...nalytics_timeseries_response_attributes.py | 73 +++ ...duct_analytics_timeseries_response_data.py | 72 +++ ...duct_analytics_timeseries_response_type.py | 37 ++ .../v2/model/product_analytics_unit.py | 80 +++ src/datadog_api_client/v2/models/__init__.py | 90 +++ tests/v2/features/product_analytics.feature | 42 +- tests/v2/features/undo.json | 12 + 45 files changed, 3170 insertions(+), 2 deletions(-) create mode 100644 examples/v2/product-analytics/QueryProductAnalyticsScalar.py create mode 100644 examples/v2/product-analytics/QueryProductAnalyticsTimeseries.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_analytics_query.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_analytics_request.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_analytics_request_attributes.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_analytics_request_data.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_analytics_request_type.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_audience_account_subquery.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_audience_filters.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_audience_segment_subquery.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_audience_user_subquery.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_base_query.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_compute.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_event_query.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_event_query_data_source.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_event_search.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_execution_type.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_group_by.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_group_by_sort.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_interval.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_occurrence_filter.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_occurrence_query.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_occurrence_query_data_source.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_occurrence_search.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_response_meta.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_response_meta_status.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_column.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_column_meta.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_column_type.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_response.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_response_attributes.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_response_data.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_scalar_response_type.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_serie.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_timeseries_response.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_timeseries_response_attributes.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_timeseries_response_data.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_timeseries_response_type.py create mode 100644 src/datadog_api_client/v2/model/product_analytics_unit.py diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 4857ca25ab..e2256f32bd 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -48138,6 +48138,430 @@ components: type: string x-enum-varnames: - PROCESS + ProductAnalyticsAnalyticsQuery: + description: The analytics query definition containing a base query, compute + rule, and optional grouping. + properties: + audience_filters: + $ref: '#/components/schemas/ProductAnalyticsAudienceFilters' + compute: + $ref: '#/components/schemas/ProductAnalyticsCompute' + group_by: + description: Group-by rules for segmenting results. + items: + $ref: '#/components/schemas/ProductAnalyticsGroupBy' + type: array + indexes: + description: Restrict the query to specific indexes. Max 1 entry. + items: + type: string + maxItems: 1 + type: array + query: + $ref: '#/components/schemas/ProductAnalyticsBaseQuery' + required: + - query + - compute + type: object + ProductAnalyticsAnalyticsRequest: + description: Request for computing analytics results (scalar or timeseries). + example: + data: + attributes: + from: 1771232048460 + query: + compute: + aggregation: count + query: + data_source: product_analytics + search: + query: '@type:view' + to: 1771836848262 + type: formula_analytics_extended_request + properties: + data: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsRequestData' + required: + - data + type: object + ProductAnalyticsAnalyticsRequestAttributes: + description: Attributes for an analytics request. + properties: + enforced_execution_type: + $ref: '#/components/schemas/ProductAnalyticsExecutionType' + from: + description: Start time in epoch milliseconds. Must be less than `to`. + example: 1771232048460 + format: int64 + type: integer + query: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsQuery' + request_id: + description: Optional request ID for multi-step query continuation. + type: string + to: + description: End time in epoch milliseconds. + example: 1771836848262 + format: int64 + type: integer + required: + - from + - to + - query + type: object + ProductAnalyticsAnalyticsRequestData: + description: Data object for an analytics request. + properties: + attributes: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsRequestAttributes' + type: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsRequestType' + required: + - type + - attributes + type: object + ProductAnalyticsAnalyticsRequestType: + description: The resource type for analytics requests. + enum: + - formula_analytics_extended_request + example: formula_analytics_extended_request + type: string + x-enum-varnames: + - FORMULA_ANALYTICS_EXTENDED_REQUEST + ProductAnalyticsAudienceAccountSubquery: + description: An account-based audience query. + properties: + name: + description: Name of this query, referenced in the formula. + example: '' + type: string + query: + description: Search query for filtering accounts. + type: string + required: + - name + type: object + ProductAnalyticsAudienceFilters: + description: Audience filter definitions for targeting specific user segments. + properties: + accounts: + description: Account audience queries. + items: + $ref: '#/components/schemas/ProductAnalyticsAudienceAccountSubquery' + type: array + formula: + description: Boolean formula combining audience queries by name. + example: u + type: string + segments: + description: Segment audience queries. + items: + $ref: '#/components/schemas/ProductAnalyticsAudienceSegmentSubquery' + type: array + users: + description: User audience queries. + items: + $ref: '#/components/schemas/ProductAnalyticsAudienceUserSubquery' + type: array + type: object + ProductAnalyticsAudienceSegmentSubquery: + description: A segment-based audience query. + properties: + name: + description: Name of this query, referenced in the formula. + example: '' + type: string + segment_id: + description: UUID of the segment to filter by. + example: '' + format: uuid + type: string + required: + - name + - segment_id + type: object + ProductAnalyticsAudienceUserSubquery: + description: A user-based audience query. + properties: + name: + description: Name of this query, referenced in the formula. + example: u + type: string + query: + description: Search query for filtering users. + example: '*' + type: string + required: + - name + type: object + ProductAnalyticsBaseQuery: + description: 'A query definition discriminated by the `data_source` field. + + Use `product_analytics` for standard event queries, or + + `product_analytics_occurrence` for occurrence-filtered queries.' + oneOf: + - $ref: '#/components/schemas/ProductAnalyticsEventQuery' + - $ref: '#/components/schemas/ProductAnalyticsOccurrenceQuery' + ProductAnalyticsCompute: + description: A compute rule for aggregating data. + properties: + aggregation: + description: The aggregation function (count, cardinality, avg, sum, min, + max, etc.). + example: count + type: string + interval: + description: Time bucket size in milliseconds. Required for timeseries queries. + example: 3600000 + format: int64 + type: integer + metric: + description: The metric to aggregate on. Required for non-count aggregations. + example: '@session.time_spent' + type: string + required: + - aggregation + type: object + ProductAnalyticsEventQuery: + description: A standard Product Analytics event query. + properties: + data_source: + $ref: '#/components/schemas/ProductAnalyticsEventQueryDataSource' + search: + $ref: '#/components/schemas/ProductAnalyticsEventSearch' + required: + - data_source + - search + type: object + ProductAnalyticsEventQueryDataSource: + description: The data source identifier. + enum: + - product_analytics + example: product_analytics + type: string + x-enum-varnames: + - PRODUCT_ANALYTICS + ProductAnalyticsEventSearch: + description: Search parameters for an event query. + properties: + query: + description: The search query using Datadog search syntax. + example: '@type:view' + type: string + type: object + ProductAnalyticsExecutionType: + description: Override the query execution strategy. + enum: + - simple + - background + - trino-multistep + - materialized-view + type: string + x-enum-varnames: + - SIMPLE + - BACKGROUND + - TRINO_MULTISTEP + - MATERIALIZED_VIEW + ProductAnalyticsGroupBy: + description: A group-by rule for segmenting results by facet values. + properties: + facet: + description: The facet to group by. + example: '@view.name' + type: string + limit: + description: Maximum number of groups to return. + example: 10 + format: int64 + type: integer + should_exclude_missing: + default: false + description: Exclude results with missing facet values. + type: boolean + sort: + $ref: '#/components/schemas/ProductAnalyticsGroupBySort' + source: + description: The source for audience-filter-based group-by. + type: string + required: + - facet + type: object + ProductAnalyticsGroupBySort: + description: Sort configuration for group-by results. + properties: + aggregation: + description: The aggregation function to sort by. + example: count + type: string + metric: + description: The metric to sort by. + type: string + order: + $ref: '#/components/schemas/QuerySortOrder' + type: object + ProductAnalyticsInterval: + description: An interval definition in a timeseries response. + properties: + milliseconds: + format: int64 + type: integer + start_time: + format: int64 + type: integer + times: + items: + format: int64 + type: integer + type: array + type: + type: string + type: object + ProductAnalyticsOccurrenceFilter: + description: Filter for occurrence-based queries. + properties: + meta: + additionalProperties: + type: string + description: Additional metadata. + type: object + operator: + description: Comparison operator (=, >=, <=, >, <). + example: '>=' + type: string + value: + description: The occurrence count threshold as a string. + example: '1' + type: string + required: + - operator + - value + type: object + ProductAnalyticsOccurrenceQuery: + description: A Product Analytics occurrence-filtered query. + properties: + data_source: + $ref: '#/components/schemas/ProductAnalyticsOccurrenceQueryDataSource' + search: + $ref: '#/components/schemas/ProductAnalyticsOccurrenceSearch' + required: + - data_source + - search + type: object + ProductAnalyticsOccurrenceQueryDataSource: + description: The data source identifier for occurrence queries. + enum: + - product_analytics_occurrence + example: product_analytics_occurrence + type: string + x-enum-varnames: + - PRODUCT_ANALYTICS_OCCURRENCE + ProductAnalyticsOccurrenceSearch: + description: Search parameters for an occurrence query. + properties: + occurrences: + $ref: '#/components/schemas/ProductAnalyticsOccurrenceFilter' + query: + description: The search query using Datadog search syntax. + example: '@type:action' + type: string + type: object + ProductAnalyticsResponseMeta: + description: Metadata for a Product Analytics query response. + properties: + request_id: + type: string + status: + $ref: '#/components/schemas/ProductAnalyticsResponseMetaStatus' + type: object + ProductAnalyticsResponseMetaStatus: + enum: + - done + - running + - timeout + type: string + x-enum-varnames: + - DONE + - RUNNING + - TIMEOUT + ProductAnalyticsScalarColumn: + description: A column in a scalar response. + properties: + meta: + $ref: '#/components/schemas/ProductAnalyticsScalarColumnMeta' + name: + description: Column name (facet name for group-by, or "query"). + type: string + type: + $ref: '#/components/schemas/ProductAnalyticsScalarColumnType' + values: + description: Column values. + items: {} + type: array + type: object + ProductAnalyticsScalarColumnMeta: + properties: + unit: + items: + $ref: '#/components/schemas/ProductAnalyticsUnit' + nullable: true + type: array + type: object + ProductAnalyticsScalarColumnType: + description: Column type. + enum: + - number + - group + type: string + x-enum-varnames: + - NUMBER + - GROUP + ProductAnalyticsScalarResponse: + description: Response for a scalar analytics query. + properties: + data: + $ref: '#/components/schemas/ProductAnalyticsScalarResponseData' + meta: + $ref: '#/components/schemas/ProductAnalyticsResponseMeta' + type: object + ProductAnalyticsScalarResponseAttributes: + properties: + columns: + items: + $ref: '#/components/schemas/ProductAnalyticsScalarColumn' + type: array + type: object + ProductAnalyticsScalarResponseData: + description: Data object for a scalar response. + properties: + attributes: + $ref: '#/components/schemas/ProductAnalyticsScalarResponseAttributes' + id: + type: string + type: + $ref: '#/components/schemas/ProductAnalyticsScalarResponseType' + type: object + ProductAnalyticsScalarResponseType: + enum: + - scalar_response + type: string + x-enum-varnames: + - SCALAR_RESPONSE + ProductAnalyticsSerie: + description: A series in a timeseries response. + properties: + group_tags: + items: + type: string + type: array + query_index: + format: int64 + type: integer + unit: + items: + $ref: '#/components/schemas/ProductAnalyticsUnit' + type: array + type: object ProductAnalyticsServerSideEventError: description: Error details. properties: @@ -48246,6 +48670,75 @@ components: required: - id type: object + ProductAnalyticsTimeseriesResponse: + description: Response for a timeseries analytics query. + properties: + data: + $ref: '#/components/schemas/ProductAnalyticsTimeseriesResponseData' + meta: + $ref: '#/components/schemas/ProductAnalyticsResponseMeta' + type: object + ProductAnalyticsTimeseriesResponseAttributes: + properties: + intervals: + items: + $ref: '#/components/schemas/ProductAnalyticsInterval' + type: array + series: + items: + $ref: '#/components/schemas/ProductAnalyticsSerie' + type: array + times: + description: Timestamps for each data point (epoch milliseconds). + items: + format: int64 + type: integer + type: array + values: + description: Values for each series at each time point. + items: + items: + format: double + nullable: true + type: number + type: array + type: array + type: object + ProductAnalyticsTimeseriesResponseData: + properties: + attributes: + $ref: '#/components/schemas/ProductAnalyticsTimeseriesResponseAttributes' + id: + type: string + type: + $ref: '#/components/schemas/ProductAnalyticsTimeseriesResponseType' + type: object + ProductAnalyticsTimeseriesResponseType: + enum: + - timeseries_response + type: string + x-enum-varnames: + - TIMESERIES_RESPONSE + ProductAnalyticsUnit: + description: A unit definition for metric values. + properties: + family: + example: time + type: string + id: + format: int64 + type: integer + name: + example: nanosecond + type: string + plural: + type: string + scale_factor: + format: double + type: number + short_name: + type: string + type: object Project: description: A Project properties: @@ -92643,6 +93136,75 @@ paths: tags: - Rum Audience Management x-unstable: '**Note**: This endpoint may be subject to changes.' + /api/v2/product-analytics/analytics/scalar: + post: + description: 'Compute scalar analytics results for Product Analytics data. + + Returns aggregated values (counts, averages, percentiles) optionally grouped + by facets.' + operationId: QueryProductAnalyticsScalar + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ProductAnalyticsScalarResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Compute scalar analytics + tags: + - Product Analytics + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - rum_apps_read + /api/v2/product-analytics/analytics/timeseries: + post: + description: 'Compute timeseries analytics results for Product Analytics data. + + Returns time-bucketed values for charts and trend analysis. + + The `compute.interval` field (milliseconds) is required for time bucketing.' + operationId: QueryProductAnalyticsTimeseries + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProductAnalyticsAnalyticsRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ProductAnalyticsTimeseriesResponse' + description: OK + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/NotAuthorizedResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Compute timeseries analytics + tags: + - Product Analytics + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - rum_apps_read /api/v2/product-analytics/users/event_filtered_query: post: description: Query users filtered by both user properties and event platform diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 9f25414941..deb71c283a 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -20829,6 +20829,230 @@ datadog\_api\_client.v2.model.process\_summary\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.product\_analytics\_analytics\_query module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_analytics_query + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_analytics\_request module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_analytics_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_analytics\_request\_attributes module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_analytics_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_analytics\_request\_data module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_analytics_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_analytics\_request\_type module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_analytics_request_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_audience\_account\_subquery module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.product_analytics_audience_account_subquery + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_audience\_filters module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_audience_filters + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_audience\_segment\_subquery module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.product_analytics_audience_segment_subquery + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_audience\_user\_subquery module +--------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_audience_user_subquery + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_base\_query module +-------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_base_query + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_compute module +---------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_compute + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_event\_query module +--------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_event_query + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_event\_query\_data\_source module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_event_query_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_event\_search module +---------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_event_search + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_execution\_type module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.product_analytics_execution_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_group\_by module +------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.product_analytics_group_by + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_group\_by\_sort module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.product_analytics_group_by_sort + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_interval module +----------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_interval + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_occurrence\_filter module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_occurrence_filter + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_occurrence\_query module +-------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_occurrence_query + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_occurrence\_query\_data\_source module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_occurrence_query_data_source + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_occurrence\_search module +--------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_occurrence_search + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_response\_meta module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_response_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_response\_meta\_status module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_response_meta_status + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_column module +----------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_column + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_column\_meta module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_column_meta + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_column\_type module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_column_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_response module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_response\_attributes module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_response\_data module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_scalar\_response\_type module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_scalar_response_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_serie module +-------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_serie + :members: + :show-inheritance: + datadog\_api\_client.v2.model.product\_analytics\_server\_side\_event\_error module ----------------------------------------------------------------------------------- @@ -20892,6 +21116,41 @@ datadog\_api\_client.v2.model.product\_analytics\_server\_side\_event\_item\_usr :members: :show-inheritance: +datadog\_api\_client.v2.model.product\_analytics\_timeseries\_response module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_timeseries_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_timeseries\_response\_attributes module +----------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_timeseries_response_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_timeseries\_response\_data module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_timeseries_response_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_timeseries\_response\_type module +----------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_timeseries_response_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.product\_analytics\_unit module +------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.product_analytics_unit + :members: + :show-inheritance: + datadog\_api\_client.v2.model.project module -------------------------------------------- diff --git a/examples/v2/product-analytics/QueryProductAnalyticsScalar.py b/examples/v2/product-analytics/QueryProductAnalyticsScalar.py new file mode 100644 index 0000000000..c4f670bc63 --- /dev/null +++ b/examples/v2/product-analytics/QueryProductAnalyticsScalar.py @@ -0,0 +1,45 @@ +""" +Compute scalar analytics returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.product_analytics_api import ProductAnalyticsApi +from datadog_api_client.v2.model.product_analytics_analytics_query import ProductAnalyticsAnalyticsQuery +from datadog_api_client.v2.model.product_analytics_analytics_request import ProductAnalyticsAnalyticsRequest +from datadog_api_client.v2.model.product_analytics_analytics_request_attributes import ( + ProductAnalyticsAnalyticsRequestAttributes, +) +from datadog_api_client.v2.model.product_analytics_analytics_request_data import ProductAnalyticsAnalyticsRequestData +from datadog_api_client.v2.model.product_analytics_analytics_request_type import ProductAnalyticsAnalyticsRequestType +from datadog_api_client.v2.model.product_analytics_compute import ProductAnalyticsCompute +from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery +from datadog_api_client.v2.model.product_analytics_event_query_data_source import ProductAnalyticsEventQueryDataSource +from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch + +body = ProductAnalyticsAnalyticsRequest( + data=ProductAnalyticsAnalyticsRequestData( + attributes=ProductAnalyticsAnalyticsRequestAttributes( + _from=1771232048460, + query=ProductAnalyticsAnalyticsQuery( + compute=ProductAnalyticsCompute( + aggregation="count", + ), + query=ProductAnalyticsEventQuery( + data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS, + search=ProductAnalyticsEventSearch( + query="@type:view", + ), + ), + ), + to=1771836848262, + ), + type=ProductAnalyticsAnalyticsRequestType.FORMULA_ANALYTICS_EXTENDED_REQUEST, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = ProductAnalyticsApi(api_client) + response = api_instance.query_product_analytics_scalar(body=body) + + print(response) diff --git a/examples/v2/product-analytics/QueryProductAnalyticsTimeseries.py b/examples/v2/product-analytics/QueryProductAnalyticsTimeseries.py new file mode 100644 index 0000000000..bd536b24aa --- /dev/null +++ b/examples/v2/product-analytics/QueryProductAnalyticsTimeseries.py @@ -0,0 +1,45 @@ +""" +Compute timeseries analytics returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.product_analytics_api import ProductAnalyticsApi +from datadog_api_client.v2.model.product_analytics_analytics_query import ProductAnalyticsAnalyticsQuery +from datadog_api_client.v2.model.product_analytics_analytics_request import ProductAnalyticsAnalyticsRequest +from datadog_api_client.v2.model.product_analytics_analytics_request_attributes import ( + ProductAnalyticsAnalyticsRequestAttributes, +) +from datadog_api_client.v2.model.product_analytics_analytics_request_data import ProductAnalyticsAnalyticsRequestData +from datadog_api_client.v2.model.product_analytics_analytics_request_type import ProductAnalyticsAnalyticsRequestType +from datadog_api_client.v2.model.product_analytics_compute import ProductAnalyticsCompute +from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery +from datadog_api_client.v2.model.product_analytics_event_query_data_source import ProductAnalyticsEventQueryDataSource +from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch + +body = ProductAnalyticsAnalyticsRequest( + data=ProductAnalyticsAnalyticsRequestData( + attributes=ProductAnalyticsAnalyticsRequestAttributes( + _from=1771232048460, + query=ProductAnalyticsAnalyticsQuery( + compute=ProductAnalyticsCompute( + aggregation="count", + ), + query=ProductAnalyticsEventQuery( + data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS, + search=ProductAnalyticsEventSearch( + query="@type:view", + ), + ), + ), + to=1771836848262, + ), + type=ProductAnalyticsAnalyticsRequestType.FORMULA_ANALYTICS_EXTENDED_REQUEST, + ), +) + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = ProductAnalyticsApi(api_client) + response = api_instance.query_product_analytics_timeseries(body=body) + + print(response) diff --git a/src/datadog_api_client/v2/api/product_analytics_api.py b/src/datadog_api_client/v2/api/product_analytics_api.py index 4731973b92..a3ad76ce34 100644 --- a/src/datadog_api_client/v2/api/product_analytics_api.py +++ b/src/datadog_api_client/v2/api/product_analytics_api.py @@ -8,6 +8,9 @@ from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint from datadog_api_client.configuration import Configuration from datadog_api_client.v2.model.product_analytics_server_side_event_item import ProductAnalyticsServerSideEventItem +from datadog_api_client.v2.model.product_analytics_scalar_response import ProductAnalyticsScalarResponse +from datadog_api_client.v2.model.product_analytics_analytics_request import ProductAnalyticsAnalyticsRequest +from datadog_api_client.v2.model.product_analytics_timeseries_response import ProductAnalyticsTimeseriesResponse class ProductAnalyticsApi: @@ -23,6 +26,46 @@ def __init__(self, api_client=None): api_client = ApiClient(Configuration()) self.api_client = api_client + self._query_product_analytics_scalar_endpoint = _Endpoint( + settings={ + "response_type": (ProductAnalyticsScalarResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/product-analytics/analytics/scalar", + "operation_id": "query_product_analytics_scalar", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (ProductAnalyticsAnalyticsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._query_product_analytics_timeseries_endpoint = _Endpoint( + settings={ + "response_type": (ProductAnalyticsTimeseriesResponse,), + "auth": ["apiKeyAuth", "appKeyAuth"], + "endpoint_path": "/api/v2/product-analytics/analytics/timeseries", + "operation_id": "query_product_analytics_timeseries", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (ProductAnalyticsAnalyticsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._submit_product_analytics_event_endpoint = _Endpoint( settings={ "response_type": (dict,), @@ -92,6 +135,41 @@ def __init__(self, api_client=None): api_client=api_client, ) + def query_product_analytics_scalar( + self, + body: ProductAnalyticsAnalyticsRequest, + ) -> ProductAnalyticsScalarResponse: + """Compute scalar analytics. + + Compute scalar analytics results for Product Analytics data. + Returns aggregated values (counts, averages, percentiles) optionally grouped by facets. + + :type body: ProductAnalyticsAnalyticsRequest + :rtype: ProductAnalyticsScalarResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._query_product_analytics_scalar_endpoint.call_with_http_info(**kwargs) + + def query_product_analytics_timeseries( + self, + body: ProductAnalyticsAnalyticsRequest, + ) -> ProductAnalyticsTimeseriesResponse: + """Compute timeseries analytics. + + Compute timeseries analytics results for Product Analytics data. + Returns time-bucketed values for charts and trend analysis. + The ``compute.interval`` field (milliseconds) is required for time bucketing. + + :type body: ProductAnalyticsAnalyticsRequest + :rtype: ProductAnalyticsTimeseriesResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._query_product_analytics_timeseries_endpoint.call_with_http_info(**kwargs) + def submit_product_analytics_event( self, body: ProductAnalyticsServerSideEventItem, diff --git a/src/datadog_api_client/v2/model/product_analytics_analytics_query.py b/src/datadog_api_client/v2/model/product_analytics_analytics_query.py new file mode 100644 index 0000000000..76661836fb --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_analytics_query.py @@ -0,0 +1,93 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters + from datadog_api_client.v2.model.product_analytics_compute import ProductAnalyticsCompute + from datadog_api_client.v2.model.product_analytics_group_by import ProductAnalyticsGroupBy + from datadog_api_client.v2.model.product_analytics_base_query import ProductAnalyticsBaseQuery + from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery + from datadog_api_client.v2.model.product_analytics_occurrence_query import ProductAnalyticsOccurrenceQuery + + +class ProductAnalyticsAnalyticsQuery(ModelNormal): + validations = { + "indexes": { + "max_items": 1, + }, + } + + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters + from datadog_api_client.v2.model.product_analytics_compute import ProductAnalyticsCompute + from datadog_api_client.v2.model.product_analytics_group_by import ProductAnalyticsGroupBy + from datadog_api_client.v2.model.product_analytics_base_query import ProductAnalyticsBaseQuery + + return { + "audience_filters": (ProductAnalyticsAudienceFilters,), + "compute": (ProductAnalyticsCompute,), + "group_by": ([ProductAnalyticsGroupBy],), + "indexes": ([str],), + "query": (ProductAnalyticsBaseQuery,), + } + + attribute_map = { + "audience_filters": "audience_filters", + "compute": "compute", + "group_by": "group_by", + "indexes": "indexes", + "query": "query", + } + + def __init__( + self_, + compute: ProductAnalyticsCompute, + query: Union[ProductAnalyticsBaseQuery, ProductAnalyticsEventQuery, ProductAnalyticsOccurrenceQuery], + audience_filters: Union[ProductAnalyticsAudienceFilters, UnsetType] = unset, + group_by: Union[List[ProductAnalyticsGroupBy], UnsetType] = unset, + indexes: Union[List[str], UnsetType] = unset, + **kwargs, + ): + """ + The analytics query definition containing a base query, compute rule, and optional grouping. + + :param audience_filters: Audience filter definitions for targeting specific user segments. + :type audience_filters: ProductAnalyticsAudienceFilters, optional + + :param compute: A compute rule for aggregating data. + :type compute: ProductAnalyticsCompute + + :param group_by: Group-by rules for segmenting results. + :type group_by: [ProductAnalyticsGroupBy], optional + + :param indexes: Restrict the query to specific indexes. Max 1 entry. + :type indexes: [str], optional + + :param query: A query definition discriminated by the ``data_source`` field. + Use ``product_analytics`` for standard event queries, or + ``product_analytics_occurrence`` for occurrence-filtered queries. + :type query: ProductAnalyticsBaseQuery + """ + if audience_filters is not unset: + kwargs["audience_filters"] = audience_filters + if group_by is not unset: + kwargs["group_by"] = group_by + if indexes is not unset: + kwargs["indexes"] = indexes + super().__init__(kwargs) + + self_.compute = compute + self_.query = query diff --git a/src/datadog_api_client/v2/model/product_analytics_analytics_request.py b/src/datadog_api_client/v2/model/product_analytics_analytics_request.py new file mode 100644 index 0000000000..df361dcb9c --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_analytics_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_analytics_request_data import ( + ProductAnalyticsAnalyticsRequestData, + ) + + +class ProductAnalyticsAnalyticsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_analytics_request_data import ( + ProductAnalyticsAnalyticsRequestData, + ) + + return { + "data": (ProductAnalyticsAnalyticsRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: ProductAnalyticsAnalyticsRequestData, **kwargs): + """ + Request for computing analytics results (scalar or timeseries). + + :param data: Data object for an analytics request. + :type data: ProductAnalyticsAnalyticsRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/product_analytics_analytics_request_attributes.py b/src/datadog_api_client/v2/model/product_analytics_analytics_request_attributes.py new file mode 100644 index 0000000000..7633d04b3d --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_analytics_request_attributes.py @@ -0,0 +1,78 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_execution_type import ProductAnalyticsExecutionType + from datadog_api_client.v2.model.product_analytics_analytics_query import ProductAnalyticsAnalyticsQuery + + +class ProductAnalyticsAnalyticsRequestAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_execution_type import ProductAnalyticsExecutionType + from datadog_api_client.v2.model.product_analytics_analytics_query import ProductAnalyticsAnalyticsQuery + + return { + "enforced_execution_type": (ProductAnalyticsExecutionType,), + "_from": (int,), + "query": (ProductAnalyticsAnalyticsQuery,), + "request_id": (str,), + "to": (int,), + } + + attribute_map = { + "enforced_execution_type": "enforced_execution_type", + "_from": "from", + "query": "query", + "request_id": "request_id", + "to": "to", + } + + def __init__( + self_, + _from: int, + query: ProductAnalyticsAnalyticsQuery, + to: int, + enforced_execution_type: Union[ProductAnalyticsExecutionType, UnsetType] = unset, + request_id: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for an analytics request. + + :param enforced_execution_type: Override the query execution strategy. + :type enforced_execution_type: ProductAnalyticsExecutionType, optional + + :param _from: Start time in epoch milliseconds. Must be less than ``to``. + :type _from: int + + :param query: The analytics query definition containing a base query, compute rule, and optional grouping. + :type query: ProductAnalyticsAnalyticsQuery + + :param request_id: Optional request ID for multi-step query continuation. + :type request_id: str, optional + + :param to: End time in epoch milliseconds. + :type to: int + """ + if enforced_execution_type is not unset: + kwargs["enforced_execution_type"] = enforced_execution_type + if request_id is not unset: + kwargs["request_id"] = request_id + super().__init__(kwargs) + + self_._from = _from + self_.query = query + self_.to = to diff --git a/src/datadog_api_client/v2/model/product_analytics_analytics_request_data.py b/src/datadog_api_client/v2/model/product_analytics_analytics_request_data.py new file mode 100644 index 0000000000..1e0f4edab4 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_analytics_request_data.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_analytics_request_attributes import ( + ProductAnalyticsAnalyticsRequestAttributes, + ) + from datadog_api_client.v2.model.product_analytics_analytics_request_type import ( + ProductAnalyticsAnalyticsRequestType, + ) + + +class ProductAnalyticsAnalyticsRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_analytics_request_attributes import ( + ProductAnalyticsAnalyticsRequestAttributes, + ) + from datadog_api_client.v2.model.product_analytics_analytics_request_type import ( + ProductAnalyticsAnalyticsRequestType, + ) + + return { + "attributes": (ProductAnalyticsAnalyticsRequestAttributes,), + "type": (ProductAnalyticsAnalyticsRequestType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, + attributes: ProductAnalyticsAnalyticsRequestAttributes, + type: ProductAnalyticsAnalyticsRequestType, + **kwargs, + ): + """ + Data object for an analytics request. + + :param attributes: Attributes for an analytics request. + :type attributes: ProductAnalyticsAnalyticsRequestAttributes + + :param type: The resource type for analytics requests. + :type type: ProductAnalyticsAnalyticsRequestType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/product_analytics_analytics_request_type.py b/src/datadog_api_client/v2/model/product_analytics_analytics_request_type.py new file mode 100644 index 0000000000..13cb5514a6 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_analytics_request_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsAnalyticsRequestType(ModelSimple): + """ + The resource type for analytics requests. + + :param value: If omitted defaults to "formula_analytics_extended_request". Must be one of ["formula_analytics_extended_request"]. + :type value: str + """ + + allowed_values = { + "formula_analytics_extended_request", + } + FORMULA_ANALYTICS_EXTENDED_REQUEST: ClassVar["ProductAnalyticsAnalyticsRequestType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsAnalyticsRequestType.FORMULA_ANALYTICS_EXTENDED_REQUEST = ProductAnalyticsAnalyticsRequestType( + "formula_analytics_extended_request" +) diff --git a/src/datadog_api_client/v2/model/product_analytics_audience_account_subquery.py b/src/datadog_api_client/v2/model/product_analytics_audience_account_subquery.py new file mode 100644 index 0000000000..d80a050a55 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_audience_account_subquery.py @@ -0,0 +1,43 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsAudienceAccountSubquery(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "query": (str,), + } + + attribute_map = { + "name": "name", + "query": "query", + } + + def __init__(self_, name: str, query: Union[str, UnsetType] = unset, **kwargs): + """ + An account-based audience query. + + :param name: Name of this query, referenced in the formula. + :type name: str + + :param query: Search query for filtering accounts. + :type query: str, optional + """ + if query is not unset: + kwargs["query"] = query + super().__init__(kwargs) + + self_.name = name diff --git a/src/datadog_api_client/v2/model/product_analytics_audience_filters.py b/src/datadog_api_client/v2/model/product_analytics_audience_filters.py new file mode 100644 index 0000000000..70ae219acf --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_audience_filters.py @@ -0,0 +1,86 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_audience_account_subquery import ( + ProductAnalyticsAudienceAccountSubquery, + ) + from datadog_api_client.v2.model.product_analytics_audience_segment_subquery import ( + ProductAnalyticsAudienceSegmentSubquery, + ) + from datadog_api_client.v2.model.product_analytics_audience_user_subquery import ( + ProductAnalyticsAudienceUserSubquery, + ) + + +class ProductAnalyticsAudienceFilters(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_audience_account_subquery import ( + ProductAnalyticsAudienceAccountSubquery, + ) + from datadog_api_client.v2.model.product_analytics_audience_segment_subquery import ( + ProductAnalyticsAudienceSegmentSubquery, + ) + from datadog_api_client.v2.model.product_analytics_audience_user_subquery import ( + ProductAnalyticsAudienceUserSubquery, + ) + + return { + "accounts": ([ProductAnalyticsAudienceAccountSubquery],), + "formula": (str,), + "segments": ([ProductAnalyticsAudienceSegmentSubquery],), + "users": ([ProductAnalyticsAudienceUserSubquery],), + } + + attribute_map = { + "accounts": "accounts", + "formula": "formula", + "segments": "segments", + "users": "users", + } + + def __init__( + self_, + accounts: Union[List[ProductAnalyticsAudienceAccountSubquery], UnsetType] = unset, + formula: Union[str, UnsetType] = unset, + segments: Union[List[ProductAnalyticsAudienceSegmentSubquery], UnsetType] = unset, + users: Union[List[ProductAnalyticsAudienceUserSubquery], UnsetType] = unset, + **kwargs, + ): + """ + Audience filter definitions for targeting specific user segments. + + :param accounts: Account audience queries. + :type accounts: [ProductAnalyticsAudienceAccountSubquery], optional + + :param formula: Boolean formula combining audience queries by name. + :type formula: str, optional + + :param segments: Segment audience queries. + :type segments: [ProductAnalyticsAudienceSegmentSubquery], optional + + :param users: User audience queries. + :type users: [ProductAnalyticsAudienceUserSubquery], optional + """ + if accounts is not unset: + kwargs["accounts"] = accounts + if formula is not unset: + kwargs["formula"] = formula + if segments is not unset: + kwargs["segments"] = segments + if users is not unset: + kwargs["users"] = users + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_audience_segment_subquery.py b/src/datadog_api_client/v2/model/product_analytics_audience_segment_subquery.py new file mode 100644 index 0000000000..75c65efced --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_audience_segment_subquery.py @@ -0,0 +1,40 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + UUID, +) + + +class ProductAnalyticsAudienceSegmentSubquery(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "segment_id": (UUID,), + } + + attribute_map = { + "name": "name", + "segment_id": "segment_id", + } + + def __init__(self_, name: str, segment_id: UUID, **kwargs): + """ + A segment-based audience query. + + :param name: Name of this query, referenced in the formula. + :type name: str + + :param segment_id: UUID of the segment to filter by. + :type segment_id: UUID + """ + super().__init__(kwargs) + + self_.name = name + self_.segment_id = segment_id diff --git a/src/datadog_api_client/v2/model/product_analytics_audience_user_subquery.py b/src/datadog_api_client/v2/model/product_analytics_audience_user_subquery.py new file mode 100644 index 0000000000..01f5a79a7a --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_audience_user_subquery.py @@ -0,0 +1,43 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsAudienceUserSubquery(ModelNormal): + @cached_property + def openapi_types(_): + return { + "name": (str,), + "query": (str,), + } + + attribute_map = { + "name": "name", + "query": "query", + } + + def __init__(self_, name: str, query: Union[str, UnsetType] = unset, **kwargs): + """ + A user-based audience query. + + :param name: Name of this query, referenced in the formula. + :type name: str + + :param query: Search query for filtering users. + :type query: str, optional + """ + if query is not unset: + kwargs["query"] = query + super().__init__(kwargs) + + self_.name = name diff --git a/src/datadog_api_client/v2/model/product_analytics_base_query.py b/src/datadog_api_client/v2/model/product_analytics_base_query.py new file mode 100644 index 0000000000..8a45c672cf --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_base_query.py @@ -0,0 +1,45 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ProductAnalyticsBaseQuery(ModelComposed): + def __init__(self, **kwargs): + """ + A query definition discriminated by the ``data_source`` field. + Use ``product_analytics`` for standard event queries, or + ``product_analytics_occurrence`` for occurrence-filtered queries. + + :param data_source: The data source identifier. + :type data_source: ProductAnalyticsEventQueryDataSource + + :param search: Search parameters for an event query. + :type search: ProductAnalyticsEventSearch + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery + from datadog_api_client.v2.model.product_analytics_occurrence_query import ProductAnalyticsOccurrenceQuery + + return { + "oneOf": [ + ProductAnalyticsEventQuery, + ProductAnalyticsOccurrenceQuery, + ], + } diff --git a/src/datadog_api_client/v2/model/product_analytics_compute.py b/src/datadog_api_client/v2/model/product_analytics_compute.py new file mode 100644 index 0000000000..225f2b1c82 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_compute.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsCompute(ModelNormal): + @cached_property + def openapi_types(_): + return { + "aggregation": (str,), + "interval": (int,), + "metric": (str,), + } + + attribute_map = { + "aggregation": "aggregation", + "interval": "interval", + "metric": "metric", + } + + def __init__( + self_, + aggregation: str, + interval: Union[int, UnsetType] = unset, + metric: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A compute rule for aggregating data. + + :param aggregation: The aggregation function (count, cardinality, avg, sum, min, max, etc.). + :type aggregation: str + + :param interval: Time bucket size in milliseconds. Required for timeseries queries. + :type interval: int, optional + + :param metric: The metric to aggregate on. Required for non-count aggregations. + :type metric: str, optional + """ + if interval is not unset: + kwargs["interval"] = interval + if metric is not unset: + kwargs["metric"] = metric + super().__init__(kwargs) + + self_.aggregation = aggregation diff --git a/src/datadog_api_client/v2/model/product_analytics_event_query.py b/src/datadog_api_client/v2/model/product_analytics_event_query.py new file mode 100644 index 0000000000..67e981d493 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_event_query.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_event_query_data_source import ( + ProductAnalyticsEventQueryDataSource, + ) + from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch + + +class ProductAnalyticsEventQuery(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_event_query_data_source import ( + ProductAnalyticsEventQueryDataSource, + ) + from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch + + return { + "data_source": (ProductAnalyticsEventQueryDataSource,), + "search": (ProductAnalyticsEventSearch,), + } + + attribute_map = { + "data_source": "data_source", + "search": "search", + } + + def __init__( + self_, data_source: ProductAnalyticsEventQueryDataSource, search: ProductAnalyticsEventSearch, **kwargs + ): + """ + A standard Product Analytics event query. + + :param data_source: The data source identifier. + :type data_source: ProductAnalyticsEventQueryDataSource + + :param search: Search parameters for an event query. + :type search: ProductAnalyticsEventSearch + """ + super().__init__(kwargs) + + self_.data_source = data_source + self_.search = search diff --git a/src/datadog_api_client/v2/model/product_analytics_event_query_data_source.py b/src/datadog_api_client/v2/model/product_analytics_event_query_data_source.py new file mode 100644 index 0000000000..a4dff13be6 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_event_query_data_source.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsEventQueryDataSource(ModelSimple): + """ + The data source identifier. + + :param value: If omitted defaults to "product_analytics". Must be one of ["product_analytics"]. + :type value: str + """ + + allowed_values = { + "product_analytics", + } + PRODUCT_ANALYTICS: ClassVar["ProductAnalyticsEventQueryDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS = ProductAnalyticsEventQueryDataSource("product_analytics") diff --git a/src/datadog_api_client/v2/model/product_analytics_event_search.py b/src/datadog_api_client/v2/model/product_analytics_event_search.py new file mode 100644 index 0000000000..b21133f901 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_event_search.py @@ -0,0 +1,36 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsEventSearch(ModelNormal): + @cached_property + def openapi_types(_): + return { + "query": (str,), + } + + attribute_map = { + "query": "query", + } + + def __init__(self_, query: Union[str, UnsetType] = unset, **kwargs): + """ + Search parameters for an event query. + + :param query: The search query using Datadog search syntax. + :type query: str, optional + """ + if query is not unset: + kwargs["query"] = query + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_execution_type.py b/src/datadog_api_client/v2/model/product_analytics_execution_type.py new file mode 100644 index 0000000000..8e6a787207 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_execution_type.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsExecutionType(ModelSimple): + """ + Override the query execution strategy. + + :param value: Must be one of ["simple", "background", "trino-multistep", "materialized-view"]. + :type value: str + """ + + allowed_values = { + "simple", + "background", + "trino-multistep", + "materialized-view", + } + SIMPLE: ClassVar["ProductAnalyticsExecutionType"] + BACKGROUND: ClassVar["ProductAnalyticsExecutionType"] + TRINO_MULTISTEP: ClassVar["ProductAnalyticsExecutionType"] + MATERIALIZED_VIEW: ClassVar["ProductAnalyticsExecutionType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsExecutionType.SIMPLE = ProductAnalyticsExecutionType("simple") +ProductAnalyticsExecutionType.BACKGROUND = ProductAnalyticsExecutionType("background") +ProductAnalyticsExecutionType.TRINO_MULTISTEP = ProductAnalyticsExecutionType("trino-multistep") +ProductAnalyticsExecutionType.MATERIALIZED_VIEW = ProductAnalyticsExecutionType("materialized-view") diff --git a/src/datadog_api_client/v2/model/product_analytics_group_by.py b/src/datadog_api_client/v2/model/product_analytics_group_by.py new file mode 100644 index 0000000000..333ebea111 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_group_by.py @@ -0,0 +1,78 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_group_by_sort import ProductAnalyticsGroupBySort + + +class ProductAnalyticsGroupBy(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_group_by_sort import ProductAnalyticsGroupBySort + + return { + "facet": (str,), + "limit": (int,), + "should_exclude_missing": (bool,), + "sort": (ProductAnalyticsGroupBySort,), + "source": (str,), + } + + attribute_map = { + "facet": "facet", + "limit": "limit", + "should_exclude_missing": "should_exclude_missing", + "sort": "sort", + "source": "source", + } + + def __init__( + self_, + facet: str, + limit: Union[int, UnsetType] = unset, + should_exclude_missing: Union[bool, UnsetType] = unset, + sort: Union[ProductAnalyticsGroupBySort, UnsetType] = unset, + source: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A group-by rule for segmenting results by facet values. + + :param facet: The facet to group by. + :type facet: str + + :param limit: Maximum number of groups to return. + :type limit: int, optional + + :param should_exclude_missing: Exclude results with missing facet values. + :type should_exclude_missing: bool, optional + + :param sort: Sort configuration for group-by results. + :type sort: ProductAnalyticsGroupBySort, optional + + :param source: The source for audience-filter-based group-by. + :type source: str, optional + """ + if limit is not unset: + kwargs["limit"] = limit + if should_exclude_missing is not unset: + kwargs["should_exclude_missing"] = should_exclude_missing + if sort is not unset: + kwargs["sort"] = sort + if source is not unset: + kwargs["source"] = source + super().__init__(kwargs) + + self_.facet = facet diff --git a/src/datadog_api_client/v2/model/product_analytics_group_by_sort.py b/src/datadog_api_client/v2/model/product_analytics_group_by_sort.py new file mode 100644 index 0000000000..93c9d6c81a --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_group_by_sort.py @@ -0,0 +1,62 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.query_sort_order import QuerySortOrder + + +class ProductAnalyticsGroupBySort(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.query_sort_order import QuerySortOrder + + return { + "aggregation": (str,), + "metric": (str,), + "order": (QuerySortOrder,), + } + + attribute_map = { + "aggregation": "aggregation", + "metric": "metric", + "order": "order", + } + + def __init__( + self_, + aggregation: Union[str, UnsetType] = unset, + metric: Union[str, UnsetType] = unset, + order: Union[QuerySortOrder, UnsetType] = unset, + **kwargs, + ): + """ + Sort configuration for group-by results. + + :param aggregation: The aggregation function to sort by. + :type aggregation: str, optional + + :param metric: The metric to sort by. + :type metric: str, optional + + :param order: Direction of sort. + :type order: QuerySortOrder, optional + """ + if aggregation is not unset: + kwargs["aggregation"] = aggregation + if metric is not unset: + kwargs["metric"] = metric + if order is not unset: + kwargs["order"] = order + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_interval.py b/src/datadog_api_client/v2/model/product_analytics_interval.py new file mode 100644 index 0000000000..c360dcc78a --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_interval.py @@ -0,0 +1,64 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsInterval(ModelNormal): + @cached_property + def openapi_types(_): + return { + "milliseconds": (int,), + "start_time": (int,), + "times": ([int],), + "type": (str,), + } + + attribute_map = { + "milliseconds": "milliseconds", + "start_time": "start_time", + "times": "times", + "type": "type", + } + + def __init__( + self_, + milliseconds: Union[int, UnsetType] = unset, + start_time: Union[int, UnsetType] = unset, + times: Union[List[int], UnsetType] = unset, + type: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + An interval definition in a timeseries response. + + :param milliseconds: + :type milliseconds: int, optional + + :param start_time: + :type start_time: int, optional + + :param times: + :type times: [int], optional + + :param type: + :type type: str, optional + """ + if milliseconds is not unset: + kwargs["milliseconds"] = milliseconds + if start_time is not unset: + kwargs["start_time"] = start_time + if times is not unset: + kwargs["times"] = times + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_occurrence_filter.py b/src/datadog_api_client/v2/model/product_analytics_occurrence_filter.py new file mode 100644 index 0000000000..f7276d3d6b --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_occurrence_filter.py @@ -0,0 +1,49 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Dict, Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsOccurrenceFilter(ModelNormal): + @cached_property + def openapi_types(_): + return { + "meta": ({str: (str,)},), + "operator": (str,), + "value": (str,), + } + + attribute_map = { + "meta": "meta", + "operator": "operator", + "value": "value", + } + + def __init__(self_, operator: str, value: str, meta: Union[Dict[str, str], UnsetType] = unset, **kwargs): + """ + Filter for occurrence-based queries. + + :param meta: Additional metadata. + :type meta: {str: (str,)}, optional + + :param operator: Comparison operator (=, >=, <=, >, <). + :type operator: str + + :param value: The occurrence count threshold as a string. + :type value: str + """ + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) + + self_.operator = operator + self_.value = value diff --git a/src/datadog_api_client/v2/model/product_analytics_occurrence_query.py b/src/datadog_api_client/v2/model/product_analytics_occurrence_query.py new file mode 100644 index 0000000000..34269da576 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_occurrence_query.py @@ -0,0 +1,57 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_occurrence_query_data_source import ( + ProductAnalyticsOccurrenceQueryDataSource, + ) + from datadog_api_client.v2.model.product_analytics_occurrence_search import ProductAnalyticsOccurrenceSearch + + +class ProductAnalyticsOccurrenceQuery(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_occurrence_query_data_source import ( + ProductAnalyticsOccurrenceQueryDataSource, + ) + from datadog_api_client.v2.model.product_analytics_occurrence_search import ProductAnalyticsOccurrenceSearch + + return { + "data_source": (ProductAnalyticsOccurrenceQueryDataSource,), + "search": (ProductAnalyticsOccurrenceSearch,), + } + + attribute_map = { + "data_source": "data_source", + "search": "search", + } + + def __init__( + self_, + data_source: ProductAnalyticsOccurrenceQueryDataSource, + search: ProductAnalyticsOccurrenceSearch, + **kwargs, + ): + """ + A Product Analytics occurrence-filtered query. + + :param data_source: The data source identifier for occurrence queries. + :type data_source: ProductAnalyticsOccurrenceQueryDataSource + + :param search: Search parameters for an occurrence query. + :type search: ProductAnalyticsOccurrenceSearch + """ + super().__init__(kwargs) + + self_.data_source = data_source + self_.search = search diff --git a/src/datadog_api_client/v2/model/product_analytics_occurrence_query_data_source.py b/src/datadog_api_client/v2/model/product_analytics_occurrence_query_data_source.py new file mode 100644 index 0000000000..368903a086 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_occurrence_query_data_source.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsOccurrenceQueryDataSource(ModelSimple): + """ + The data source identifier for occurrence queries. + + :param value: If omitted defaults to "product_analytics_occurrence". Must be one of ["product_analytics_occurrence"]. + :type value: str + """ + + allowed_values = { + "product_analytics_occurrence", + } + PRODUCT_ANALYTICS_OCCURRENCE: ClassVar["ProductAnalyticsOccurrenceQueryDataSource"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsOccurrenceQueryDataSource.PRODUCT_ANALYTICS_OCCURRENCE = ProductAnalyticsOccurrenceQueryDataSource( + "product_analytics_occurrence" +) diff --git a/src/datadog_api_client/v2/model/product_analytics_occurrence_search.py b/src/datadog_api_client/v2/model/product_analytics_occurrence_search.py new file mode 100644 index 0000000000..a74051dc7f --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_occurrence_search.py @@ -0,0 +1,54 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_occurrence_filter import ProductAnalyticsOccurrenceFilter + + +class ProductAnalyticsOccurrenceSearch(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_occurrence_filter import ProductAnalyticsOccurrenceFilter + + return { + "occurrences": (ProductAnalyticsOccurrenceFilter,), + "query": (str,), + } + + attribute_map = { + "occurrences": "occurrences", + "query": "query", + } + + def __init__( + self_, + occurrences: Union[ProductAnalyticsOccurrenceFilter, UnsetType] = unset, + query: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + Search parameters for an occurrence query. + + :param occurrences: Filter for occurrence-based queries. + :type occurrences: ProductAnalyticsOccurrenceFilter, optional + + :param query: The search query using Datadog search syntax. + :type query: str, optional + """ + if occurrences is not unset: + kwargs["occurrences"] = occurrences + if query is not unset: + kwargs["query"] = query + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_response_meta.py b/src/datadog_api_client/v2/model/product_analytics_response_meta.py new file mode 100644 index 0000000000..93dbd36513 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_response_meta.py @@ -0,0 +1,56 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_response_meta_status import ProductAnalyticsResponseMetaStatus + + +class ProductAnalyticsResponseMeta(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_response_meta_status import ( + ProductAnalyticsResponseMetaStatus, + ) + + return { + "request_id": (str,), + "status": (ProductAnalyticsResponseMetaStatus,), + } + + attribute_map = { + "request_id": "request_id", + "status": "status", + } + + def __init__( + self_, + request_id: Union[str, UnsetType] = unset, + status: Union[ProductAnalyticsResponseMetaStatus, UnsetType] = unset, + **kwargs, + ): + """ + Metadata for a Product Analytics query response. + + :param request_id: + :type request_id: str, optional + + :param status: + :type status: ProductAnalyticsResponseMetaStatus, optional + """ + if request_id is not unset: + kwargs["request_id"] = request_id + if status is not unset: + kwargs["status"] = status + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_response_meta_status.py b/src/datadog_api_client/v2/model/product_analytics_response_meta_status.py new file mode 100644 index 0000000000..b58d6e7a19 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_response_meta_status.py @@ -0,0 +1,41 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsResponseMetaStatus(ModelSimple): + """ + + + :param value: Must be one of ["done", "running", "timeout"]. + :type value: str + """ + + allowed_values = { + "done", + "running", + "timeout", + } + DONE: ClassVar["ProductAnalyticsResponseMetaStatus"] + RUNNING: ClassVar["ProductAnalyticsResponseMetaStatus"] + TIMEOUT: ClassVar["ProductAnalyticsResponseMetaStatus"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsResponseMetaStatus.DONE = ProductAnalyticsResponseMetaStatus("done") +ProductAnalyticsResponseMetaStatus.RUNNING = ProductAnalyticsResponseMetaStatus("running") +ProductAnalyticsResponseMetaStatus.TIMEOUT = ProductAnalyticsResponseMetaStatus("timeout") diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_column.py b/src/datadog_api_client/v2/model/product_analytics_scalar_column.py new file mode 100644 index 0000000000..799e4ea6b9 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_column.py @@ -0,0 +1,76 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Any, List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + date, + datetime, + none_type, + unset, + UnsetType, + UUID, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_scalar_column_meta import ProductAnalyticsScalarColumnMeta + from datadog_api_client.v2.model.product_analytics_scalar_column_type import ProductAnalyticsScalarColumnType + + +class ProductAnalyticsScalarColumn(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_scalar_column_meta import ProductAnalyticsScalarColumnMeta + from datadog_api_client.v2.model.product_analytics_scalar_column_type import ProductAnalyticsScalarColumnType + + return { + "meta": (ProductAnalyticsScalarColumnMeta,), + "name": (str,), + "type": (ProductAnalyticsScalarColumnType,), + "values": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],), + } + + attribute_map = { + "meta": "meta", + "name": "name", + "type": "type", + "values": "values", + } + + def __init__( + self_, + meta: Union[ProductAnalyticsScalarColumnMeta, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + type: Union[ProductAnalyticsScalarColumnType, UnsetType] = unset, + values: Union[List[Any], UnsetType] = unset, + **kwargs, + ): + """ + A column in a scalar response. + + :param meta: + :type meta: ProductAnalyticsScalarColumnMeta, optional + + :param name: Column name (facet name for group-by, or "query"). + :type name: str, optional + + :param type: Column type. + :type type: ProductAnalyticsScalarColumnType, optional + + :param values: Column values. + :type values: [bool, date, datetime, dict, float, int, list, str, UUID, none_type], optional + """ + if meta is not unset: + kwargs["meta"] = meta + if name is not unset: + kwargs["name"] = name + if type is not unset: + kwargs["type"] = type + if values is not unset: + kwargs["values"] = values + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_column_meta.py b/src/datadog_api_client/v2/model/product_analytics_scalar_column_meta.py new file mode 100644 index 0000000000..db408cb03f --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_column_meta.py @@ -0,0 +1,43 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_unit import ProductAnalyticsUnit + + +class ProductAnalyticsScalarColumnMeta(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_unit import ProductAnalyticsUnit + + return { + "unit": ([ProductAnalyticsUnit], none_type), + } + + attribute_map = { + "unit": "unit", + } + + def __init__(self_, unit: Union[List[ProductAnalyticsUnit], none_type, UnsetType] = unset, **kwargs): + """ + + + :param unit: + :type unit: [ProductAnalyticsUnit], none_type, optional + """ + if unit is not unset: + kwargs["unit"] = unit + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_column_type.py b/src/datadog_api_client/v2/model/product_analytics_scalar_column_type.py new file mode 100644 index 0000000000..a73deec47b --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_column_type.py @@ -0,0 +1,38 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsScalarColumnType(ModelSimple): + """ + Column type. + + :param value: Must be one of ["number", "group"]. + :type value: str + """ + + allowed_values = { + "number", + "group", + } + NUMBER: ClassVar["ProductAnalyticsScalarColumnType"] + GROUP: ClassVar["ProductAnalyticsScalarColumnType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsScalarColumnType.NUMBER = ProductAnalyticsScalarColumnType("number") +ProductAnalyticsScalarColumnType.GROUP = ProductAnalyticsScalarColumnType("group") diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_response.py b/src/datadog_api_client/v2/model/product_analytics_scalar_response.py new file mode 100644 index 0000000000..43c3eedba2 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_response.py @@ -0,0 +1,58 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_scalar_response_data import ProductAnalyticsScalarResponseData + from datadog_api_client.v2.model.product_analytics_response_meta import ProductAnalyticsResponseMeta + + +class ProductAnalyticsScalarResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_scalar_response_data import ( + ProductAnalyticsScalarResponseData, + ) + from datadog_api_client.v2.model.product_analytics_response_meta import ProductAnalyticsResponseMeta + + return { + "data": (ProductAnalyticsScalarResponseData,), + "meta": (ProductAnalyticsResponseMeta,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__( + self_, + data: Union[ProductAnalyticsScalarResponseData, UnsetType] = unset, + meta: Union[ProductAnalyticsResponseMeta, UnsetType] = unset, + **kwargs, + ): + """ + Response for a scalar analytics query. + + :param data: Data object for a scalar response. + :type data: ProductAnalyticsScalarResponseData, optional + + :param meta: Metadata for a Product Analytics query response. + :type meta: ProductAnalyticsResponseMeta, optional + """ + if data is not unset: + kwargs["data"] = data + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_response_attributes.py b/src/datadog_api_client/v2/model/product_analytics_scalar_response_attributes.py new file mode 100644 index 0000000000..af7324af27 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_response_attributes.py @@ -0,0 +1,42 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_scalar_column import ProductAnalyticsScalarColumn + + +class ProductAnalyticsScalarResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_scalar_column import ProductAnalyticsScalarColumn + + return { + "columns": ([ProductAnalyticsScalarColumn],), + } + + attribute_map = { + "columns": "columns", + } + + def __init__(self_, columns: Union[List[ProductAnalyticsScalarColumn], UnsetType] = unset, **kwargs): + """ + + + :param columns: + :type columns: [ProductAnalyticsScalarColumn], optional + """ + if columns is not unset: + kwargs["columns"] = columns + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_response_data.py b/src/datadog_api_client/v2/model/product_analytics_scalar_response_data.py new file mode 100644 index 0000000000..a02ca854e7 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_response_data.py @@ -0,0 +1,70 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_scalar_response_attributes import ( + ProductAnalyticsScalarResponseAttributes, + ) + from datadog_api_client.v2.model.product_analytics_scalar_response_type import ProductAnalyticsScalarResponseType + + +class ProductAnalyticsScalarResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_scalar_response_attributes import ( + ProductAnalyticsScalarResponseAttributes, + ) + from datadog_api_client.v2.model.product_analytics_scalar_response_type import ( + ProductAnalyticsScalarResponseType, + ) + + return { + "attributes": (ProductAnalyticsScalarResponseAttributes,), + "id": (str,), + "type": (ProductAnalyticsScalarResponseType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[ProductAnalyticsScalarResponseAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[ProductAnalyticsScalarResponseType, UnsetType] = unset, + **kwargs, + ): + """ + Data object for a scalar response. + + :param attributes: + :type attributes: ProductAnalyticsScalarResponseAttributes, optional + + :param id: + :type id: str, optional + + :param type: + :type type: ProductAnalyticsScalarResponseType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_scalar_response_type.py b/src/datadog_api_client/v2/model/product_analytics_scalar_response_type.py new file mode 100644 index 0000000000..db2051dfd6 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_scalar_response_type.py @@ -0,0 +1,35 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsScalarResponseType(ModelSimple): + """ + + + :param value: If omitted defaults to "scalar_response". Must be one of ["scalar_response"]. + :type value: str + """ + + allowed_values = { + "scalar_response", + } + SCALAR_RESPONSE: ClassVar["ProductAnalyticsScalarResponseType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsScalarResponseType.SCALAR_RESPONSE = ProductAnalyticsScalarResponseType("scalar_response") diff --git a/src/datadog_api_client/v2/model/product_analytics_serie.py b/src/datadog_api_client/v2/model/product_analytics_serie.py new file mode 100644 index 0000000000..3db4004a02 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_serie.py @@ -0,0 +1,62 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_unit import ProductAnalyticsUnit + + +class ProductAnalyticsSerie(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_unit import ProductAnalyticsUnit + + return { + "group_tags": ([str],), + "query_index": (int,), + "unit": ([ProductAnalyticsUnit],), + } + + attribute_map = { + "group_tags": "group_tags", + "query_index": "query_index", + "unit": "unit", + } + + def __init__( + self_, + group_tags: Union[List[str], UnsetType] = unset, + query_index: Union[int, UnsetType] = unset, + unit: Union[List[ProductAnalyticsUnit], UnsetType] = unset, + **kwargs, + ): + """ + A series in a timeseries response. + + :param group_tags: + :type group_tags: [str], optional + + :param query_index: + :type query_index: int, optional + + :param unit: + :type unit: [ProductAnalyticsUnit], optional + """ + if group_tags is not unset: + kwargs["group_tags"] = group_tags + if query_index is not unset: + kwargs["query_index"] = query_index + if unit is not unset: + kwargs["unit"] = unit + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_timeseries_response.py b/src/datadog_api_client/v2/model/product_analytics_timeseries_response.py new file mode 100644 index 0000000000..fd44aa73e6 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_timeseries_response.py @@ -0,0 +1,60 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_timeseries_response_data import ( + ProductAnalyticsTimeseriesResponseData, + ) + from datadog_api_client.v2.model.product_analytics_response_meta import ProductAnalyticsResponseMeta + + +class ProductAnalyticsTimeseriesResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_timeseries_response_data import ( + ProductAnalyticsTimeseriesResponseData, + ) + from datadog_api_client.v2.model.product_analytics_response_meta import ProductAnalyticsResponseMeta + + return { + "data": (ProductAnalyticsTimeseriesResponseData,), + "meta": (ProductAnalyticsResponseMeta,), + } + + attribute_map = { + "data": "data", + "meta": "meta", + } + + def __init__( + self_, + data: Union[ProductAnalyticsTimeseriesResponseData, UnsetType] = unset, + meta: Union[ProductAnalyticsResponseMeta, UnsetType] = unset, + **kwargs, + ): + """ + Response for a timeseries analytics query. + + :param data: + :type data: ProductAnalyticsTimeseriesResponseData, optional + + :param meta: Metadata for a Product Analytics query response. + :type meta: ProductAnalyticsResponseMeta, optional + """ + if data is not unset: + kwargs["data"] = data + if meta is not unset: + kwargs["meta"] = meta + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_timeseries_response_attributes.py b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_attributes.py new file mode 100644 index 0000000000..b913dec4a0 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_attributes.py @@ -0,0 +1,73 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + none_type, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_interval import ProductAnalyticsInterval + from datadog_api_client.v2.model.product_analytics_serie import ProductAnalyticsSerie + + +class ProductAnalyticsTimeseriesResponseAttributes(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_interval import ProductAnalyticsInterval + from datadog_api_client.v2.model.product_analytics_serie import ProductAnalyticsSerie + + return { + "intervals": ([ProductAnalyticsInterval],), + "series": ([ProductAnalyticsSerie],), + "times": ([int],), + "values": ([[float, none_type]],), + } + + attribute_map = { + "intervals": "intervals", + "series": "series", + "times": "times", + "values": "values", + } + + def __init__( + self_, + intervals: Union[List[ProductAnalyticsInterval], UnsetType] = unset, + series: Union[List[ProductAnalyticsSerie], UnsetType] = unset, + times: Union[List[int], UnsetType] = unset, + values: Union[List[List[float]], UnsetType] = unset, + **kwargs, + ): + """ + + + :param intervals: + :type intervals: [ProductAnalyticsInterval], optional + + :param series: + :type series: [ProductAnalyticsSerie], optional + + :param times: Timestamps for each data point (epoch milliseconds). + :type times: [int], optional + + :param values: Values for each series at each time point. + :type values: [[float, none_type]], optional + """ + if intervals is not unset: + kwargs["intervals"] = intervals + if series is not unset: + kwargs["series"] = series + if times is not unset: + kwargs["times"] = times + if values is not unset: + kwargs["values"] = values + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_timeseries_response_data.py b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_data.py new file mode 100644 index 0000000000..699e4456f3 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_data.py @@ -0,0 +1,72 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.product_analytics_timeseries_response_attributes import ( + ProductAnalyticsTimeseriesResponseAttributes, + ) + from datadog_api_client.v2.model.product_analytics_timeseries_response_type import ( + ProductAnalyticsTimeseriesResponseType, + ) + + +class ProductAnalyticsTimeseriesResponseData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.product_analytics_timeseries_response_attributes import ( + ProductAnalyticsTimeseriesResponseAttributes, + ) + from datadog_api_client.v2.model.product_analytics_timeseries_response_type import ( + ProductAnalyticsTimeseriesResponseType, + ) + + return { + "attributes": (ProductAnalyticsTimeseriesResponseAttributes,), + "id": (str,), + "type": (ProductAnalyticsTimeseriesResponseType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[ProductAnalyticsTimeseriesResponseAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[ProductAnalyticsTimeseriesResponseType, UnsetType] = unset, + **kwargs, + ): + """ + + + :param attributes: + :type attributes: ProductAnalyticsTimeseriesResponseAttributes, optional + + :param id: + :type id: str, optional + + :param type: + :type type: ProductAnalyticsTimeseriesResponseType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/product_analytics_timeseries_response_type.py b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_type.py new file mode 100644 index 0000000000..c9ab3f77c3 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_timeseries_response_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ProductAnalyticsTimeseriesResponseType(ModelSimple): + """ + + + :param value: If omitted defaults to "timeseries_response". Must be one of ["timeseries_response"]. + :type value: str + """ + + allowed_values = { + "timeseries_response", + } + TIMESERIES_RESPONSE: ClassVar["ProductAnalyticsTimeseriesResponseType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ProductAnalyticsTimeseriesResponseType.TIMESERIES_RESPONSE = ProductAnalyticsTimeseriesResponseType( + "timeseries_response" +) diff --git a/src/datadog_api_client/v2/model/product_analytics_unit.py b/src/datadog_api_client/v2/model/product_analytics_unit.py new file mode 100644 index 0000000000..e4c56073e5 --- /dev/null +++ b/src/datadog_api_client/v2/model/product_analytics_unit.py @@ -0,0 +1,80 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class ProductAnalyticsUnit(ModelNormal): + @cached_property + def openapi_types(_): + return { + "family": (str,), + "id": (int,), + "name": (str,), + "plural": (str,), + "scale_factor": (float,), + "short_name": (str,), + } + + attribute_map = { + "family": "family", + "id": "id", + "name": "name", + "plural": "plural", + "scale_factor": "scale_factor", + "short_name": "short_name", + } + + def __init__( + self_, + family: Union[str, UnsetType] = unset, + id: Union[int, UnsetType] = unset, + name: Union[str, UnsetType] = unset, + plural: Union[str, UnsetType] = unset, + scale_factor: Union[float, UnsetType] = unset, + short_name: Union[str, UnsetType] = unset, + **kwargs, + ): + """ + A unit definition for metric values. + + :param family: + :type family: str, optional + + :param id: + :type id: int, optional + + :param name: + :type name: str, optional + + :param plural: + :type plural: str, optional + + :param scale_factor: + :type scale_factor: float, optional + + :param short_name: + :type short_name: str, optional + """ + if family is not unset: + kwargs["family"] = family + if id is not unset: + kwargs["id"] = id + if name is not unset: + kwargs["name"] = name + if plural is not unset: + kwargs["plural"] = plural + if scale_factor is not unset: + kwargs["scale_factor"] = scale_factor + if short_name is not unset: + kwargs["short_name"] = short_name + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 7f7db1fff3..f96bb1ec98 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -4255,6 +4255,48 @@ from datadog_api_client.v2.model.process_summary import ProcessSummary from datadog_api_client.v2.model.process_summary_attributes import ProcessSummaryAttributes from datadog_api_client.v2.model.process_summary_type import ProcessSummaryType +from datadog_api_client.v2.model.product_analytics_analytics_query import ProductAnalyticsAnalyticsQuery +from datadog_api_client.v2.model.product_analytics_analytics_request import ProductAnalyticsAnalyticsRequest +from datadog_api_client.v2.model.product_analytics_analytics_request_attributes import ( + ProductAnalyticsAnalyticsRequestAttributes, +) +from datadog_api_client.v2.model.product_analytics_analytics_request_data import ProductAnalyticsAnalyticsRequestData +from datadog_api_client.v2.model.product_analytics_analytics_request_type import ProductAnalyticsAnalyticsRequestType +from datadog_api_client.v2.model.product_analytics_audience_account_subquery import ( + ProductAnalyticsAudienceAccountSubquery, +) +from datadog_api_client.v2.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters +from datadog_api_client.v2.model.product_analytics_audience_segment_subquery import ( + ProductAnalyticsAudienceSegmentSubquery, +) +from datadog_api_client.v2.model.product_analytics_audience_user_subquery import ProductAnalyticsAudienceUserSubquery +from datadog_api_client.v2.model.product_analytics_base_query import ProductAnalyticsBaseQuery +from datadog_api_client.v2.model.product_analytics_compute import ProductAnalyticsCompute +from datadog_api_client.v2.model.product_analytics_event_query import ProductAnalyticsEventQuery +from datadog_api_client.v2.model.product_analytics_event_query_data_source import ProductAnalyticsEventQueryDataSource +from datadog_api_client.v2.model.product_analytics_event_search import ProductAnalyticsEventSearch +from datadog_api_client.v2.model.product_analytics_execution_type import ProductAnalyticsExecutionType +from datadog_api_client.v2.model.product_analytics_group_by import ProductAnalyticsGroupBy +from datadog_api_client.v2.model.product_analytics_group_by_sort import ProductAnalyticsGroupBySort +from datadog_api_client.v2.model.product_analytics_interval import ProductAnalyticsInterval +from datadog_api_client.v2.model.product_analytics_occurrence_filter import ProductAnalyticsOccurrenceFilter +from datadog_api_client.v2.model.product_analytics_occurrence_query import ProductAnalyticsOccurrenceQuery +from datadog_api_client.v2.model.product_analytics_occurrence_query_data_source import ( + ProductAnalyticsOccurrenceQueryDataSource, +) +from datadog_api_client.v2.model.product_analytics_occurrence_search import ProductAnalyticsOccurrenceSearch +from datadog_api_client.v2.model.product_analytics_response_meta import ProductAnalyticsResponseMeta +from datadog_api_client.v2.model.product_analytics_response_meta_status import ProductAnalyticsResponseMetaStatus +from datadog_api_client.v2.model.product_analytics_scalar_column import ProductAnalyticsScalarColumn +from datadog_api_client.v2.model.product_analytics_scalar_column_meta import ProductAnalyticsScalarColumnMeta +from datadog_api_client.v2.model.product_analytics_scalar_column_type import ProductAnalyticsScalarColumnType +from datadog_api_client.v2.model.product_analytics_scalar_response import ProductAnalyticsScalarResponse +from datadog_api_client.v2.model.product_analytics_scalar_response_attributes import ( + ProductAnalyticsScalarResponseAttributes, +) +from datadog_api_client.v2.model.product_analytics_scalar_response_data import ProductAnalyticsScalarResponseData +from datadog_api_client.v2.model.product_analytics_scalar_response_type import ProductAnalyticsScalarResponseType +from datadog_api_client.v2.model.product_analytics_serie import ProductAnalyticsSerie from datadog_api_client.v2.model.product_analytics_server_side_event_error import ProductAnalyticsServerSideEventError from datadog_api_client.v2.model.product_analytics_server_side_event_errors import ProductAnalyticsServerSideEventErrors from datadog_api_client.v2.model.product_analytics_server_side_event_item import ProductAnalyticsServerSideEventItem @@ -4276,6 +4318,17 @@ from datadog_api_client.v2.model.product_analytics_server_side_event_item_usr import ( ProductAnalyticsServerSideEventItemUsr, ) +from datadog_api_client.v2.model.product_analytics_timeseries_response import ProductAnalyticsTimeseriesResponse +from datadog_api_client.v2.model.product_analytics_timeseries_response_attributes import ( + ProductAnalyticsTimeseriesResponseAttributes, +) +from datadog_api_client.v2.model.product_analytics_timeseries_response_data import ( + ProductAnalyticsTimeseriesResponseData, +) +from datadog_api_client.v2.model.product_analytics_timeseries_response_type import ( + ProductAnalyticsTimeseriesResponseType, +) +from datadog_api_client.v2.model.product_analytics_unit import ProductAnalyticsUnit from datadog_api_client.v2.model.project import Project from datadog_api_client.v2.model.project_attributes import ProjectAttributes from datadog_api_client.v2.model.project_columns_config import ProjectColumnsConfig @@ -9212,6 +9265,38 @@ "ProcessSummary", "ProcessSummaryAttributes", "ProcessSummaryType", + "ProductAnalyticsAnalyticsQuery", + "ProductAnalyticsAnalyticsRequest", + "ProductAnalyticsAnalyticsRequestAttributes", + "ProductAnalyticsAnalyticsRequestData", + "ProductAnalyticsAnalyticsRequestType", + "ProductAnalyticsAudienceAccountSubquery", + "ProductAnalyticsAudienceFilters", + "ProductAnalyticsAudienceSegmentSubquery", + "ProductAnalyticsAudienceUserSubquery", + "ProductAnalyticsBaseQuery", + "ProductAnalyticsCompute", + "ProductAnalyticsEventQuery", + "ProductAnalyticsEventQueryDataSource", + "ProductAnalyticsEventSearch", + "ProductAnalyticsExecutionType", + "ProductAnalyticsGroupBy", + "ProductAnalyticsGroupBySort", + "ProductAnalyticsInterval", + "ProductAnalyticsOccurrenceFilter", + "ProductAnalyticsOccurrenceQuery", + "ProductAnalyticsOccurrenceQueryDataSource", + "ProductAnalyticsOccurrenceSearch", + "ProductAnalyticsResponseMeta", + "ProductAnalyticsResponseMetaStatus", + "ProductAnalyticsScalarColumn", + "ProductAnalyticsScalarColumnMeta", + "ProductAnalyticsScalarColumnType", + "ProductAnalyticsScalarResponse", + "ProductAnalyticsScalarResponseAttributes", + "ProductAnalyticsScalarResponseData", + "ProductAnalyticsScalarResponseType", + "ProductAnalyticsSerie", "ProductAnalyticsServerSideEventError", "ProductAnalyticsServerSideEventErrors", "ProductAnalyticsServerSideEventItem", @@ -9221,6 +9306,11 @@ "ProductAnalyticsServerSideEventItemSession", "ProductAnalyticsServerSideEventItemType", "ProductAnalyticsServerSideEventItemUsr", + "ProductAnalyticsTimeseriesResponse", + "ProductAnalyticsTimeseriesResponseAttributes", + "ProductAnalyticsTimeseriesResponseData", + "ProductAnalyticsTimeseriesResponseType", + "ProductAnalyticsUnit", "Project", "ProjectAttributes", "ProjectColumnsConfig", diff --git a/tests/v2/features/product_analytics.feature b/tests/v2/features/product_analytics.feature index a915c21304..3b59a3a0f6 100644 --- a/tests/v2/features/product_analytics.feature +++ b/tests/v2/features/product_analytics.feature @@ -11,25 +11,63 @@ Feature: Product Analytics Background: Given a valid "apiKeyAuth" key in the system And an instance of "ProductAnalytics" API - And new "SubmitProductAnalyticsEvent" request - And body with value {"account": {"id": "account-67890"}, "application": {"id": "123abcde-123a-123b-1234-123456789abc"}, "event": {"name": "payment.processed"}, "session": {"id": "session-abcdef"}, "type": "server", "usr": {"id": "user-12345"}} + + @generated @skip @team:DataDog/product-analytics-backend + Scenario: Compute scalar analytics returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "QueryProductAnalyticsScalar" request + And body with value {"data": {"attributes": {"from": 1771232048460, "query": {"compute": {"aggregation": "count"}, "query": {"data_source": "product_analytics", "search": {"query": "@type:view"}}}, "to": 1771836848262}, "type": "formula_analytics_extended_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/product-analytics-backend + Scenario: Compute scalar analytics returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "QueryProductAnalyticsScalar" request + And body with value {"data": {"attributes": {"from": 1771232048460, "query": {"compute": {"aggregation": "count"}, "query": {"data_source": "product_analytics", "search": {"query": "@type:view"}}}, "to": 1771836848262}, "type": "formula_analytics_extended_request"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/product-analytics-backend + Scenario: Compute timeseries analytics returns "Bad Request" response + Given a valid "appKeyAuth" key in the system + And new "QueryProductAnalyticsTimeseries" request + And body with value {"data": {"attributes": {"from": 1771232048460, "query": {"compute": {"aggregation": "count"}, "query": {"data_source": "product_analytics", "search": {"query": "@type:view"}}}, "to": 1771836848262}, "type": "formula_analytics_extended_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/product-analytics-backend + Scenario: Compute timeseries analytics returns "OK" response + Given a valid "appKeyAuth" key in the system + And new "QueryProductAnalyticsTimeseries" request + And body with value {"data": {"attributes": {"from": 1771232048460, "query": {"compute": {"aggregation": "count"}, "query": {"data_source": "product_analytics", "search": {"query": "@type:view"}}}, "to": 1771836848262}, "type": "formula_analytics_extended_request"}} + When the request is sent + Then the response status is 200 OK @generated @skip @team:DataDog/product-analytics-backend Scenario: Send server-side events returns "Bad Request" response + Given new "SubmitProductAnalyticsEvent" request + And body with value {"account": {"id": "account-67890"}, "application": {"id": "123abcde-123a-123b-1234-123456789abc"}, "event": {"name": "payment.processed"}, "session": {"id": "session-abcdef"}, "type": "server", "usr": {"id": "user-12345"}} When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/product-analytics-backend Scenario: Send server-side events returns "Payload Too Large" response + Given new "SubmitProductAnalyticsEvent" request + And body with value {"account": {"id": "account-67890"}, "application": {"id": "123abcde-123a-123b-1234-123456789abc"}, "event": {"name": "payment.processed"}, "session": {"id": "session-abcdef"}, "type": "server", "usr": {"id": "user-12345"}} When the request is sent Then the response status is 413 Payload Too Large @generated @skip @team:DataDog/product-analytics-backend Scenario: Send server-side events returns "Request Timeout" response + Given new "SubmitProductAnalyticsEvent" request + And body with value {"account": {"id": "account-67890"}, "application": {"id": "123abcde-123a-123b-1234-123456789abc"}, "event": {"name": "payment.processed"}, "session": {"id": "session-abcdef"}, "type": "server", "usr": {"id": "user-12345"}} When the request is sent Then the response status is 408 Request Timeout @generated @skip @team:DataDog/product-analytics-backend Scenario: Send server-side events returns "Request accepted for processing (always 202 empty JSON)." response + Given new "SubmitProductAnalyticsEvent" request + And body with value {"account": {"id": "account-67890"}, "application": {"id": "123abcde-123a-123b-1234-123456789abc"}, "event": {"name": "payment.processed"}, "session": {"id": "session-abcdef"}, "type": "server", "usr": {"id": "user-12345"}} When the request is sent Then the response status is 202 Request accepted for processing (always 202 empty JSON). diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 3b052977c2..09186eef67 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -3719,6 +3719,18 @@ "type": "unsafe" } }, + "QueryProductAnalyticsScalar": { + "tag": "Product Analytics", + "undo": { + "type": "safe" + } + }, + "QueryProductAnalyticsTimeseries": { + "tag": "Product Analytics", + "undo": { + "type": "safe" + } + }, "QueryEventFilteredUsers": { "tag": "Rum Audience Management", "undo": {