Calculez l’analyse des séries temporelles des parcours

Note: This endpoint is in preview and is subject to change. If you have any feedback, contact Datadog support.

POST https://api.ap1.datadoghq.com/api/v2/product-analytics/journey/timeserieshttps://api.ap2.datadoghq.com/api/v2/product-analytics/journey/timeserieshttps://api.datadoghq.eu/api/v2/product-analytics/journey/timeserieshttps://api.ddog-gov.com/api/v2/product-analytics/journey/timeserieshttps://api.us2.ddog-gov.com/api/v2/product-analytics/journey/timeserieshttps://api.uk1.datadoghq.com/api/v2/product-analytics/journey/timeserieshttps://api.datadoghq.com/api/v2/product-analytics/journey/timeserieshttps://api.us3.datadoghq.com/api/v2/product-analytics/journey/timeserieshttps://api.us5.datadoghq.com/api/v2/product-analytics/journey/timeseries

Présentation

Compute timeseries results for a journey query. Returns one series per group-by combination, bucketed by the requested interval. This endpoint requires the rum_apps_read permission.

Requête

Body Data (required)

Expand All

Champ

Type

Description

data [required]

object

The single JSON:API resource carrying a journey timeseries query. Its attributes hold the time window, the bucket interval that splits it, and the journey metric to compute per bucket.

attributes [required]

object

Attributes of a journey timeseries request.

from [required]

int64

Start of the query window, in epoch milliseconds.

interval

int64

Time bucket interval in milliseconds.

query [required]

object

Query definition for a journey timeseries request.

compute [required]

object

Defines the metric computed over the journey.

aggregation [required]

string

Aggregation function: count, cardinality, avg, median, min, max, sum, or a percentile of the form pc<N> such as pc95. Defaults to cardinality.

interval

int64

Time bucket interval in milliseconds, used by timeseries queries.

metric

string

Metric to aggregate on. Use a facet path such as @view.time_spent, or one of the journey metrics __dd.conversion, __dd.conversion_rate, __dd.time_to_convert, or __dd.dropoff_rate. Defaults to __dd.conversion.

target

 <oneOf>

A reference to a step, or a range of steps, in the journey. Use a node target to name a single step, or a path target to name the range between two steps.

<type=node>

object

A reference to a single step of the journey.

type [required]

enum

The discriminator identifying a target that references a single step. Allowed enum values: node

value [required]

string

Alias of the targeted node.

<type=path>

object

A reference to the range of steps between two nodes of the journey.

end [required]

string

Alias of the node the path ends at.

start [required]

string

Alias of the node the path starts at.

type [required]

enum

The discriminator identifying a target that references a range of steps. Allowed enum values: path

group_by

[object]

Segments the results by the values of one or more facets.

facet [required]

string

Attribute path to group by.

limit

int64

Maximum number of groups to return. Omit it to let the service choose.

should_exclude_missing

boolean

Whether to exclude entities that have no value for this facet.

sort

object

Sort configuration for group-by results.

aggregation

string

The aggregation function to sort by.

metric

string

The metric to sort by.

order

enum

Direction of sort. Allowed enum values: asc,desc

default: desc

source

enum

Audience dimension to group by, instead of an event facet. Allowed enum values: product_analytics_audience_filters.users,product_analytics_audience_filters.accounts

target

 <oneOf>

A reference to a step, or a range of steps, in the journey. Use a node target to name a single step, or a path target to name the range between two steps.

<type=node>

object

A reference to a single step of the journey.

type [required]

enum

The discriminator identifying a target that references a single step. Allowed enum values: node

value [required]

string

Alias of the targeted node.

<type=path>

object

A reference to the range of steps between two nodes of the journey.

end [required]

string

Alias of the node the path ends at.

start [required]

string

Alias of the node the path starts at.

type [required]

enum

The discriminator identifying a target that references a range of steps. Allowed enum values: path

value_filters

[string]

Restricts the results to these facet values.

query_id

string

Caller-defined identifier echoed back in the results.

search [required]

object

Defines the steps of the journey and the filters applied to it.

expression [required]

string

Expression combining the node aliases in order, for example A -> B -> C.

filters

object

Filters applied on top of the journey step expression.

audience_filters

object

Restricts the journey to an audience built from named sub-queries. Sub-query names must be unique across users, segments, and accounts.

accounts

[object]

Named account sub-queries.

name [required]

string

Unique name for this sub-query, referenced from formula.

query

string

Search query selecting the accounts.

formula

string

Boolean expression combining the sub-query names with AND, OR, and NOT. When empty, all sub-queries are combined with AND.

segments

[object]

Named segment sub-queries.

name [required]

string

Unique name for this sub-query, referenced from formula.

segment_id [required]

string

Identifier of the saved segment.

users

[object]

Named user sub-queries.

name [required]

string

Unique name for this sub-query, referenced from formula.

query

string

Search query selecting the users.

graph_filters

[object]

Filters on journey-level metrics such as time to convert.

name [required]

enum

The journey-level metric the graph filter applies to. Allowed enum values: __dd.time_to_convert,__dd.session,__dd.dropoff_rate

operator [required]

enum

Comparison operator applied to the graph filter value. Allowed enum values: =,<,>,<=,>=

target

 <oneOf>

A reference to a step, or a range of steps, in the journey. Use a node target to name a single step, or a path target to name the range between two steps.

<type=node>

object

A reference to a single step of the journey.

type [required]

enum

The discriminator identifying a target that references a single step. Allowed enum values: node

value [required]

string

Alias of the targeted node.

<type=path>

object

A reference to the range of steps between two nodes of the journey.

end [required]

string

Alias of the node the path ends at.

start [required]

string

Alias of the node the path starts at.

type [required]

enum

The discriminator identifying a target that references a range of steps. Allowed enum values: path

value [required]

int64

Value compared against the metric. Durations are expressed in milliseconds.

string_filter

string

Free-text search query applied to the whole journey.

join_keys

object

Identity join keys used to stitch events belonging to the same user or session.

primary

string

Primary identity join key. Defaults to @session.id.

secondary

[string]

Additional identity join keys.

node_objects [required]

object

Map of node alias to the query matching that step of the journey. Every alias used in expression must have an entry here.

<any-key>

 <oneOf>

A query definition discriminated by the data_source field. Use product_analytics for standard event queries, or product_analytics_occurrence for occurrence-filtered queries.

<data_source=product_analytics>

object

A standard Product Analytics event query.

data_source [required]

enum

The data source identifier. Allowed enum values: product_analytics

search [required]

object

Search parameters for an event query.

query

string

The search query using Datadog search syntax.

<data_source=product_analytics_occurrence>

object

A Product Analytics occurrence-filtered query.

data_source [required]

enum

The data source identifier for occurrence queries. Allowed enum values: product_analytics_occurrence

search [required]

object

Search parameters for an occurrence query.

occurrences

object

Filter for occurrence-based queries.

meta

object

Additional metadata.

<any-key>

string

operator [required]

string

Comparison operator (=, >=, <=, >, <).

value [required]

string

The occurrence count threshold as a string.

query

string

The search query using Datadog search syntax.

to [required]

int64

End of the query window, in epoch milliseconds.

type [required]

enum

The resource type identifier for a journey timeseries or scalar request. Allowed enum values: formula_journey_request

{
  "data": {
    "attributes": {
      "from": 1756425600000,
      "interval": "integer",
      "query": {
        "compute": {
          "aggregation": "count",
          "interval": "integer",
          "metric": "string",
          "target": {
            "type": "node",
            "value": "A"
          }
        },
        "group_by": [
          {
            "facet": "@geo.country",
            "limit": "integer",
            "should_exclude_missing": false,
            "sort": {
              "aggregation": "count",
              "metric": "string",
              "order": "string"
            },
            "source": "product_analytics_audience_filters.users",
            "target": {
              "type": "node",
              "value": "A"
            },
            "value_filters": []
          }
        ],
        "query_id": "string",
        "search": {
          "expression": "A -> B",
          "filters": {
            "audience_filters": {
              "accounts": [
                {
                  "name": "enterprise_accounts",
                  "query": "string"
                }
              ],
              "formula": "power_users AND NOT trial_segment",
              "segments": [
                {
                  "name": "trial_segment",
                  "segment_id": "00000000-0000-0000-0000-000000000000"
                }
              ],
              "users": [
                {
                  "name": "power_users",
                  "query": "string"
                }
              ]
            },
            "graph_filters": [
              {
                "name": "__dd.time_to_convert",
                "operator": "<=",
                "target": {
                  "type": "node",
                  "value": "A"
                },
                "value": 60000
              }
            ],
            "string_filter": "string"
          },
          "join_keys": {
            "primary": "@session.id",
            "secondary": []
          },
          "node_objects": {
            "<any-key>": "undefined"
          }
        }
      },
      "to": 1756857600000
    },
    "type": "formula_journey_request"
  }
}

Réponse

OK

Response for a journey timeseries query.

Expand All

Champ

Type

Description

data [required]

object

The single JSON:API resource holding journey timeseries results. Its attributes contain one series per group along with the timestamps the points fall on.

attributes [required]

object

Attributes of a timeseries analytics response, containing series data, timestamps, and interval definitions.

intervals

[object]

Interval definitions describing the time buckets used in the response.

milliseconds

int64

The duration of each time bucket in milliseconds.

start_time

int64

The start of this interval as an epoch timestamp in milliseconds.

times

[integer]

Epoch timestamps (in milliseconds) for each bucket in this interval.

type

string

The interval type (e.g., fixed or auto-computed bucket size).

series

[object]

The list of series, each corresponding to a query or group-by combination.

group_tags

[string]

The group-by tag values that identify this series.

query_index

int64

The index of the query that produced this series.

unit

[object]

Unit definitions for the series values.

family

string

The unit family (e.g., time, bytes).

id

int64

Numeric identifier for the unit.

name

string

The full name of the unit (e.g., nanosecond).

plural

string

Plural form of the unit name (e.g., nanoseconds).

scale_factor

double

Conversion factor relative to the base unit of the family.

short_name

string

Abbreviated unit name (e.g., ns).

times

[integer]

Timestamps for each data point (epoch milliseconds).

values

[array]

Values for each series at each time point.

id [required]

string

Identifier of this result.

type [required]

enum

The resource type identifier for a journey timeseries response. Allowed enum values: journey_timeseries_response

{
  "data": {
    "attributes": {
      "intervals": [
        {
          "milliseconds": "integer",
          "start_time": "integer",
          "times": [],
          "type": "string"
        }
      ],
      "series": [
        {
          "group_tags": [],
          "query_index": "integer",
          "unit": [
            {
              "family": "time",
              "id": "integer",
              "name": "nanosecond",
              "plural": "string",
              "scale_factor": "number",
              "short_name": "string"
            }
          ]
        }
      ],
      "times": [],
      "values": []
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "type": "journey_timeseries_response"
  }
}

Bad Request

API error response.

Expand All

Champ

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Not Authorized

API error response.

Expand All

Champ

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Too many requests

API error response.

Expand All

Champ

Type

Description

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Exemple de code

                  ## default
# 

# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/product-analytics/journey/timeseries" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "from": 1756425600000, "interval": 3600000, "query": { "compute": { "aggregation": "count" }, "search": { "expression": "A -\u003e B", "node_objects": { "A": { "data_source": "product_analytics", "search": { "query": "@type:view @view.name:Login" } }, "B": { "data_source": "product_analytics", "search": { "query": "@type:action @action.target.name:Submit" } } } } }, "to": 1756857600000 }, "type": "formula_journey_request" } } EOF
"""
Compute journey 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_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_formula_journey_query import ProductAnalyticsFormulaJourneyQuery
from datadog_api_client.v2.model.product_analytics_formula_journey_request import ProductAnalyticsFormulaJourneyRequest
from datadog_api_client.v2.model.product_analytics_formula_journey_request_attributes import (
    ProductAnalyticsFormulaJourneyRequestAttributes,
)
from datadog_api_client.v2.model.product_analytics_formula_journey_request_data import (
    ProductAnalyticsFormulaJourneyRequestData,
)
from datadog_api_client.v2.model.product_analytics_formula_journey_request_type import (
    ProductAnalyticsFormulaJourneyRequestType,
)
from datadog_api_client.v2.model.product_analytics_graph_query_compute import ProductAnalyticsGraphQueryCompute
from datadog_api_client.v2.model.product_analytics_graph_query_group_by import ProductAnalyticsGraphQueryGroupBy
from datadog_api_client.v2.model.product_analytics_graph_query_group_by_source import (
    ProductAnalyticsGraphQueryGroupBySource,
)
from datadog_api_client.v2.model.product_analytics_group_by_sort import ProductAnalyticsGroupBySort
from datadog_api_client.v2.model.product_analytics_join_keys import ProductAnalyticsJoinKeys
from datadog_api_client.v2.model.product_analytics_journey_audience_account_query import (
    ProductAnalyticsJourneyAudienceAccountQuery,
)
from datadog_api_client.v2.model.product_analytics_journey_audience_filters import (
    ProductAnalyticsJourneyAudienceFilters,
)
from datadog_api_client.v2.model.product_analytics_journey_audience_segment_query import (
    ProductAnalyticsJourneyAudienceSegmentQuery,
)
from datadog_api_client.v2.model.product_analytics_journey_audience_user_query import (
    ProductAnalyticsJourneyAudienceUserQuery,
)
from datadog_api_client.v2.model.product_analytics_journey_node_target import ProductAnalyticsJourneyNodeTarget
from datadog_api_client.v2.model.product_analytics_journey_node_target_type import ProductAnalyticsJourneyNodeTargetType
from datadog_api_client.v2.model.product_analytics_journey_search import ProductAnalyticsJourneySearch
from datadog_api_client.v2.model.product_analytics_journey_search_filters import ProductAnalyticsJourneySearchFilters
from datadog_api_client.v2.model.product_analytics_journey_search_graph_filter import (
    ProductAnalyticsJourneySearchGraphFilter,
)
from datadog_api_client.v2.model.product_analytics_journey_search_graph_filter_name import (
    ProductAnalyticsJourneySearchGraphFilterName,
)
from datadog_api_client.v2.model.product_analytics_journey_search_graph_filter_operator import (
    ProductAnalyticsJourneySearchGraphFilterOperator,
)
from datadog_api_client.v2.model.query_sort_order import QuerySortOrder

body = ProductAnalyticsFormulaJourneyRequest(
    data=ProductAnalyticsFormulaJourneyRequestData(
        attributes=ProductAnalyticsFormulaJourneyRequestAttributes(
            _from=1756425600000,
            query=ProductAnalyticsFormulaJourneyQuery(
                compute=ProductAnalyticsGraphQueryCompute(
                    aggregation="count",
                    target=ProductAnalyticsJourneyNodeTarget(
                        type=ProductAnalyticsJourneyNodeTargetType.NODE,
                        value="A",
                    ),
                ),
                group_by=[
                    ProductAnalyticsGraphQueryGroupBy(
                        facet="@geo.country",
                        should_exclude_missing=False,
                        sort=ProductAnalyticsGroupBySort(
                            aggregation="count",
                            order=QuerySortOrder.DESC,
                        ),
                        source=ProductAnalyticsGraphQueryGroupBySource.USERS,
                        target=ProductAnalyticsJourneyNodeTarget(
                            type=ProductAnalyticsJourneyNodeTargetType.NODE,
                            value="A",
                        ),
                        value_filters=[],
                    ),
                ],
                search=ProductAnalyticsJourneySearch(
                    expression="A -> B",
                    filters=ProductAnalyticsJourneySearchFilters(
                        audience_filters=ProductAnalyticsJourneyAudienceFilters(
                            accounts=[
                                ProductAnalyticsJourneyAudienceAccountQuery(
                                    name="enterprise_accounts",
                                ),
                            ],
                            formula="power_users AND NOT trial_segment",
                            segments=[
                                ProductAnalyticsJourneyAudienceSegmentQuery(
                                    name="trial_segment",
                                    segment_id="00000000-0000-0000-0000-000000000000",
                                ),
                            ],
                            users=[
                                ProductAnalyticsJourneyAudienceUserQuery(
                                    name="power_users",
                                ),
                            ],
                        ),
                        graph_filters=[
                            ProductAnalyticsJourneySearchGraphFilter(
                                name=ProductAnalyticsJourneySearchGraphFilterName.TIME_TO_CONVERT,
                                operator=ProductAnalyticsJourneySearchGraphFilterOperator.LESS_THAN_OR_EQUAL,
                                target=ProductAnalyticsJourneyNodeTarget(
                                    type=ProductAnalyticsJourneyNodeTargetType.NODE,
                                    value="A",
                                ),
                                value=60000,
                            ),
                        ],
                    ),
                    join_keys=ProductAnalyticsJoinKeys(
                        primary="@session.id",
                        secondary=[],
                    ),
                    node_objects=dict(
                        A=ProductAnalyticsEventQuery(
                            data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS,
                            search=ProductAnalyticsEventSearch(
                                query="@type:view @view.name:Login",
                            ),
                        ),
                        B=ProductAnalyticsEventQuery(
                            data_source=ProductAnalyticsEventQueryDataSource.PRODUCT_ANALYTICS,
                            search=ProductAnalyticsEventSearch(
                                query="@type:action @action.target.name:Submit",
                            ),
                        ),
                    ),
                ),
            ),
            to=1756857600000,
        ),
        type=ProductAnalyticsFormulaJourneyRequestType.FORMULA_JOURNEY_REQUEST,
    ),
)

configuration = Configuration()
configuration.unstable_operations["query_product_analytics_journey_timeseries"] = True
with ApiClient(configuration) as api_client:
    api_instance = ProductAnalyticsApi(api_client)
    response = api_instance.query_product_analytics_journey_timeseries(body=body)

    print(response)

Instructions

First install the library and its dependencies and then save the example to example.py and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
# Compute journey timeseries analytics returns "OK" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.unstable_operations["v2.query_product_analytics_journey_timeseries".to_sym] = true
end
api_instance = DatadogAPIClient::V2::ProductAnalyticsAPI.new

body = DatadogAPIClient::V2::ProductAnalyticsFormulaJourneyRequest.new({
  data: DatadogAPIClient::V2::ProductAnalyticsFormulaJourneyRequestData.new({
    attributes: DatadogAPIClient::V2::ProductAnalyticsFormulaJourneyRequestAttributes.new({
      from: 1756425600000,
      query: DatadogAPIClient::V2::ProductAnalyticsFormulaJourneyQuery.new({
        compute: DatadogAPIClient::V2::ProductAnalyticsGraphQueryCompute.new({
          aggregation: "count",
          target: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTarget.new({
            type: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTargetType::NODE,
            value: "A",
          }),
        }),
        group_by: [
          DatadogAPIClient::V2::ProductAnalyticsGraphQueryGroupBy.new({
            facet: "@geo.country",
            should_exclude_missing: false,
            sort: DatadogAPIClient::V2::ProductAnalyticsGroupBySort.new({
              aggregation: "count",
              order: DatadogAPIClient::V2::QuerySortOrder::DESC,
            }),
            source: DatadogAPIClient::V2::ProductAnalyticsGraphQueryGroupBySource::USERS,
            target: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTarget.new({
              type: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTargetType::NODE,
              value: "A",
            }),
            value_filters: [],
          }),
        ],
        search: DatadogAPIClient::V2::ProductAnalyticsJourneySearch.new({
          expression: "A -> B",
          filters: DatadogAPIClient::V2::ProductAnalyticsJourneySearchFilters.new({
            audience_filters: DatadogAPIClient::V2::ProductAnalyticsJourneyAudienceFilters.new({
              accounts: [
                DatadogAPIClient::V2::ProductAnalyticsJourneyAudienceAccountQuery.new({
                  name: "enterprise_accounts",
                }),
              ],
              formula: "power_users AND NOT trial_segment",
              segments: [
                DatadogAPIClient::V2::ProductAnalyticsJourneyAudienceSegmentQuery.new({
                  name: "trial_segment",
                  segment_id: "00000000-0000-0000-0000-000000000000",
                }),
              ],
              users: [
                DatadogAPIClient::V2::ProductAnalyticsJourneyAudienceUserQuery.new({
                  name: "power_users",
                }),
              ],
            }),
            graph_filters: [
              DatadogAPIClient::V2::ProductAnalyticsJourneySearchGraphFilter.new({
                name: DatadogAPIClient::V2::ProductAnalyticsJourneySearchGraphFilterName::TIME_TO_CONVERT,
                operator: DatadogAPIClient::V2::ProductAnalyticsJourneySearchGraphFilterOperator::LESS_THAN_OR_EQUAL,
                target: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTarget.new({
                  type: DatadogAPIClient::V2::ProductAnalyticsJourneyNodeTargetType::NODE,
                  value: "A",
                }),
                value: 60000,
              }),
            ],
          }),
          join_keys: DatadogAPIClient::V2::ProductAnalyticsJoinKeys.new({
            primary: "@session.id",
            secondary: [],
          }),
          node_objects: {
            A: DatadogAPIClient::V2::ProductAnalyticsEventQuery.new({
              data_source: DatadogAPIClient::V2::ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
              search: DatadogAPIClient::V2::ProductAnalyticsEventSearch.new({
                query: "@type:view @view.name:Login",
              }),
            }), B: DatadogAPIClient::V2::ProductAnalyticsEventQuery.new({
              data_source: DatadogAPIClient::V2::ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
              search: DatadogAPIClient::V2::ProductAnalyticsEventSearch.new({
                query: "@type:action @action.target.name:Submit",
              }),
            }),
          },
        }),
      }),
      to: 1756857600000,
    }),
    type: DatadogAPIClient::V2::ProductAnalyticsFormulaJourneyRequestType::FORMULA_JOURNEY_REQUEST,
  }),
})
p api_instance.query_product_analytics_journey_timeseries(body)

Instructions

First install the library and its dependencies and then save the example to example.rb and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
// Compute journey timeseries analytics returns "OK" response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

func main() {
	body := datadogV2.ProductAnalyticsFormulaJourneyRequest{
		Data: datadogV2.ProductAnalyticsFormulaJourneyRequestData{
			Attributes: datadogV2.ProductAnalyticsFormulaJourneyRequestAttributes{
				From: 1756425600000,
				Query: datadogV2.ProductAnalyticsFormulaJourneyQuery{
					Compute: datadogV2.ProductAnalyticsGraphQueryCompute{
						Aggregation: "count",
						Target: &datadogV2.ProductAnalyticsJourneyTarget{
							ProductAnalyticsJourneyNodeTarget: &datadogV2.ProductAnalyticsJourneyNodeTarget{
								Type:  datadogV2.PRODUCTANALYTICSJOURNEYNODETARGETTYPE_NODE,
								Value: "A",
							}},
					},
					GroupBy: []datadogV2.ProductAnalyticsGraphQueryGroupBy{
						{
							Facet:                "@geo.country",
							ShouldExcludeMissing: datadog.PtrBool(false),
							Sort: &datadogV2.ProductAnalyticsGroupBySort{
								Aggregation: datadog.PtrString("count"),
								Order:       datadogV2.QUERYSORTORDER_DESC.Ptr(),
							},
							Source: datadogV2.PRODUCTANALYTICSGRAPHQUERYGROUPBYSOURCE_USERS.Ptr(),
							Target: &datadogV2.ProductAnalyticsJourneyTarget{
								ProductAnalyticsJourneyNodeTarget: &datadogV2.ProductAnalyticsJourneyNodeTarget{
									Type:  datadogV2.PRODUCTANALYTICSJOURNEYNODETARGETTYPE_NODE,
									Value: "A",
								}},
							ValueFilters: []string{},
						},
					},
					Search: datadogV2.ProductAnalyticsJourneySearch{
						Expression: "A -> B",
						Filters: &datadogV2.ProductAnalyticsJourneySearchFilters{
							AudienceFilters: &datadogV2.ProductAnalyticsJourneyAudienceFilters{
								Accounts: []datadogV2.ProductAnalyticsJourneyAudienceAccountQuery{
									{
										Name: "enterprise_accounts",
									},
								},
								Formula: datadog.PtrString("power_users AND NOT trial_segment"),
								Segments: []datadogV2.ProductAnalyticsJourneyAudienceSegmentQuery{
									{
										Name:      "trial_segment",
										SegmentId: "00000000-0000-0000-0000-000000000000",
									},
								},
								Users: []datadogV2.ProductAnalyticsJourneyAudienceUserQuery{
									{
										Name: "power_users",
									},
								},
							},
							GraphFilters: []datadogV2.ProductAnalyticsJourneySearchGraphFilter{
								{
									Name:     datadogV2.PRODUCTANALYTICSJOURNEYSEARCHGRAPHFILTERNAME_TIME_TO_CONVERT,
									Operator: datadogV2.PRODUCTANALYTICSJOURNEYSEARCHGRAPHFILTEROPERATOR_LESS_THAN_OR_EQUAL,
									Target: &datadogV2.ProductAnalyticsJourneyTarget{
										ProductAnalyticsJourneyNodeTarget: &datadogV2.ProductAnalyticsJourneyNodeTarget{
											Type:  datadogV2.PRODUCTANALYTICSJOURNEYNODETARGETTYPE_NODE,
											Value: "A",
										}},
									Value: 60000,
								},
							},
						},
						JoinKeys: &datadogV2.ProductAnalyticsJoinKeys{
							Primary:   datadog.PtrString("@session.id"),
							Secondary: []string{},
						},
						NodeObjects: map[string]datadogV2.ProductAnalyticsBaseQuery{
							"A": datadogV2.ProductAnalyticsBaseQuery{
								ProductAnalyticsEventQuery: &datadogV2.ProductAnalyticsEventQuery{
									DataSource: datadogV2.PRODUCTANALYTICSEVENTQUERYDATASOURCE_PRODUCT_ANALYTICS,
									Search: datadogV2.ProductAnalyticsEventSearch{
										Query: datadog.PtrString("@type:view @view.name:Login"),
									},
								}},
							"B": datadogV2.ProductAnalyticsBaseQuery{
								ProductAnalyticsEventQuery: &datadogV2.ProductAnalyticsEventQuery{
									DataSource: datadogV2.PRODUCTANALYTICSEVENTQUERYDATASOURCE_PRODUCT_ANALYTICS,
									Search: datadogV2.ProductAnalyticsEventSearch{
										Query: datadog.PtrString("@type:action @action.target.name:Submit"),
									},
								}},
						},
					},
				},
				To: 1756857600000,
			},
			Type: datadogV2.PRODUCTANALYTICSFORMULAJOURNEYREQUESTTYPE_FORMULA_JOURNEY_REQUEST,
		},
	}
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.QueryProductAnalyticsJourneyTimeseries", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewProductAnalyticsApi(apiClient)
	resp, r, err := api.QueryProductAnalyticsJourneyTimeseries(ctx, body)

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `ProductAnalyticsApi.QueryProductAnalyticsJourneyTimeseries`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `ProductAnalyticsApi.QueryProductAnalyticsJourneyTimeseries`:\n%s\n", responseContent)
}

Instructions

First install the library and its dependencies and then save the example to main.go and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
// Compute journey timeseries analytics returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ProductAnalyticsApi;
import com.datadog.api.client.v2.model.ProductAnalyticsBaseQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsEventQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsEventQueryDataSource;
import com.datadog.api.client.v2.model.ProductAnalyticsEventSearch;
import com.datadog.api.client.v2.model.ProductAnalyticsFormulaJourneyQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsFormulaJourneyRequest;
import com.datadog.api.client.v2.model.ProductAnalyticsFormulaJourneyRequestAttributes;
import com.datadog.api.client.v2.model.ProductAnalyticsFormulaJourneyRequestData;
import com.datadog.api.client.v2.model.ProductAnalyticsFormulaJourneyRequestType;
import com.datadog.api.client.v2.model.ProductAnalyticsGraphQueryCompute;
import com.datadog.api.client.v2.model.ProductAnalyticsGraphQueryGroupBy;
import com.datadog.api.client.v2.model.ProductAnalyticsGraphQueryGroupBySource;
import com.datadog.api.client.v2.model.ProductAnalyticsGroupBySort;
import com.datadog.api.client.v2.model.ProductAnalyticsJoinKeys;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyAudienceAccountQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyAudienceFilters;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyAudienceSegmentQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyAudienceUserQuery;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyNodeTarget;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyNodeTargetType;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneySearch;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneySearchFilters;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneySearchGraphFilter;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneySearchGraphFilterName;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneySearchGraphFilterOperator;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyTarget;
import com.datadog.api.client.v2.model.ProductAnalyticsJourneyTimeseriesResponse;
import com.datadog.api.client.v2.model.QuerySortOrder;
import java.util.Collections;
import java.util.Map;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setUnstableOperationEnabled("v2.queryProductAnalyticsJourneyTimeseries", true);
    ProductAnalyticsApi apiInstance = new ProductAnalyticsApi(defaultClient);

    ProductAnalyticsFormulaJourneyRequest body =
        new ProductAnalyticsFormulaJourneyRequest()
            .data(
                new ProductAnalyticsFormulaJourneyRequestData()
                    .attributes(
                        new ProductAnalyticsFormulaJourneyRequestAttributes()
                            .from(1756425600000L)
                            .query(
                                new ProductAnalyticsFormulaJourneyQuery()
                                    .compute(
                                        new ProductAnalyticsGraphQueryCompute()
                                            .aggregation("count")
                                            .target(
                                                new ProductAnalyticsJourneyTarget(
                                                    new ProductAnalyticsJourneyNodeTarget()
                                                        .type(
                                                            ProductAnalyticsJourneyNodeTargetType
                                                                .NODE)
                                                        .value("A"))))
                                    .groupBy(
                                        Collections.singletonList(
                                            new ProductAnalyticsGraphQueryGroupBy()
                                                .facet("@geo.country")
                                                .shouldExcludeMissing(false)
                                                .sort(
                                                    new ProductAnalyticsGroupBySort()
                                                        .aggregation("count")
                                                        .order(QuerySortOrder.DESC))
                                                .source(
                                                    ProductAnalyticsGraphQueryGroupBySource.USERS)
                                                .target(
                                                    new ProductAnalyticsJourneyTarget(
                                                        new ProductAnalyticsJourneyNodeTarget()
                                                            .type(
                                                                ProductAnalyticsJourneyNodeTargetType
                                                                    .NODE)
                                                            .value("A")))))
                                    .search(
                                        new ProductAnalyticsJourneySearch()
                                            .expression("A -> B")
                                            .filters(
                                                new ProductAnalyticsJourneySearchFilters()
                                                    .audienceFilters(
                                                        new ProductAnalyticsJourneyAudienceFilters()
                                                            .accounts(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsJourneyAudienceAccountQuery()
                                                                        .name(
                                                                            "enterprise_accounts")))
                                                            .formula(
                                                                "power_users AND NOT trial_segment")
                                                            .segments(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsJourneyAudienceSegmentQuery()
                                                                        .name("trial_segment")
                                                                        .segmentId(
                                                                            "00000000-0000-0000-0000-000000000000")))
                                                            .users(
                                                                Collections.singletonList(
                                                                    new ProductAnalyticsJourneyAudienceUserQuery()
                                                                        .name("power_users"))))
                                                    .graphFilters(
                                                        Collections.singletonList(
                                                            new ProductAnalyticsJourneySearchGraphFilter()
                                                                .name(
                                                                    ProductAnalyticsJourneySearchGraphFilterName
                                                                        .TIME_TO_CONVERT)
                                                                .operator(
                                                                    ProductAnalyticsJourneySearchGraphFilterOperator
                                                                        .LESS_THAN_OR_EQUAL)
                                                                .target(
                                                                    new ProductAnalyticsJourneyTarget(
                                                                        new ProductAnalyticsJourneyNodeTarget()
                                                                            .type(
                                                                                ProductAnalyticsJourneyNodeTargetType
                                                                                    .NODE)
                                                                            .value("A")))
                                                                .value(60000L))))
                                            .joinKeys(
                                                new ProductAnalyticsJoinKeys()
                                                    .primary("@session.id"))
                                            .nodeObjects(
                                                Map.ofEntries(
                                                    Map.entry(
                                                        "A",
                                                        new ProductAnalyticsBaseQuery(
                                                            new ProductAnalyticsEventQuery()
                                                                .dataSource(
                                                                    ProductAnalyticsEventQueryDataSource
                                                                        .PRODUCT_ANALYTICS)
                                                                .search(
                                                                    new ProductAnalyticsEventSearch()
                                                                        .query(
                                                                            "@type:view"
                                                                                + " @view.name:Login")))),
                                                    Map.entry(
                                                        "B",
                                                        new ProductAnalyticsBaseQuery(
                                                            new ProductAnalyticsEventQuery()
                                                                .dataSource(
                                                                    ProductAnalyticsEventQueryDataSource
                                                                        .PRODUCT_ANALYTICS)
                                                                .search(
                                                                    new ProductAnalyticsEventSearch()
                                                                        .query(
                                                                            "@type:action"
                                                                                + " @action.target.name:Submit"))))))))
                            .to(1756857600000L))
                    .type(ProductAnalyticsFormulaJourneyRequestType.FORMULA_JOURNEY_REQUEST));

    try {
      ProductAnalyticsJourneyTimeseriesResponse result =
          apiInstance.queryProductAnalyticsJourneyTimeseries(body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println(
          "Exception when calling ProductAnalyticsApi#queryProductAnalyticsJourneyTimeseries");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

Instructions

First install the library and its dependencies and then save the example to Example.java and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
// Compute journey timeseries analytics returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_product_analytics::ProductAnalyticsAPI;
use datadog_api_client::datadogV2::model::ProductAnalyticsBaseQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventQueryDataSource;
use datadog_api_client::datadogV2::model::ProductAnalyticsEventSearch;
use datadog_api_client::datadogV2::model::ProductAnalyticsFormulaJourneyQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsFormulaJourneyRequest;
use datadog_api_client::datadogV2::model::ProductAnalyticsFormulaJourneyRequestAttributes;
use datadog_api_client::datadogV2::model::ProductAnalyticsFormulaJourneyRequestData;
use datadog_api_client::datadogV2::model::ProductAnalyticsFormulaJourneyRequestType;
use datadog_api_client::datadogV2::model::ProductAnalyticsGraphQueryCompute;
use datadog_api_client::datadogV2::model::ProductAnalyticsGraphQueryGroupBy;
use datadog_api_client::datadogV2::model::ProductAnalyticsGraphQueryGroupBySource;
use datadog_api_client::datadogV2::model::ProductAnalyticsGroupBySort;
use datadog_api_client::datadogV2::model::ProductAnalyticsJoinKeys;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyAudienceAccountQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyAudienceFilters;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyAudienceSegmentQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyAudienceUserQuery;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyNodeTarget;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyNodeTargetType;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneySearch;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneySearchFilters;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneySearchGraphFilter;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneySearchGraphFilterName;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneySearchGraphFilterOperator;
use datadog_api_client::datadogV2::model::ProductAnalyticsJourneyTarget;
use datadog_api_client::datadogV2::model::QuerySortOrder;
use std::collections::BTreeMap;

#[tokio::main]
async fn main() {
    let body =
        ProductAnalyticsFormulaJourneyRequest::new(
            ProductAnalyticsFormulaJourneyRequestData::new(
                ProductAnalyticsFormulaJourneyRequestAttributes::new(
                    1756425600000,
                    ProductAnalyticsFormulaJourneyQuery::new(
                        ProductAnalyticsGraphQueryCompute::new(
                            "count".to_string(),
                        ).target(
                            ProductAnalyticsJourneyTarget::ProductAnalyticsJourneyNodeTarget(
                                Box::new(
                                    ProductAnalyticsJourneyNodeTarget::new(
                                        ProductAnalyticsJourneyNodeTargetType::NODE,
                                        "A".to_string(),
                                    ),
                                ),
                            ),
                        ),
                        ProductAnalyticsJourneySearch::new(
                            "A -> B".to_string(),
                            BTreeMap::from(
                                [
                                    (
                                        "A".to_string(),
                                        ProductAnalyticsBaseQuery::ProductAnalyticsEventQuery(
                                            Box::new(
                                                ProductAnalyticsEventQuery::new(
                                                    ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
                                                    ProductAnalyticsEventSearch
                                                    ::new().query("@type:view @view.name:Login".to_string()),
                                                ),
                                            ),
                                        ),
                                    ),
                                    (
                                        "B".to_string(),
                                        ProductAnalyticsBaseQuery::ProductAnalyticsEventQuery(
                                            Box::new(
                                                ProductAnalyticsEventQuery::new(
                                                    ProductAnalyticsEventQueryDataSource::PRODUCT_ANALYTICS,
                                                    ProductAnalyticsEventSearch
                                                    ::new().query(
                                                        "@type:action @action.target.name:Submit".to_string(),
                                                    ),
                                                ),
                                            ),
                                        ),
                                    ),
                                ],
                            ),
                        )
                            .filters(
                                ProductAnalyticsJourneySearchFilters::new()
                                    .audience_filters(
                                        ProductAnalyticsJourneyAudienceFilters::new()
                                            .accounts(
                                                vec![
                                                    ProductAnalyticsJourneyAudienceAccountQuery::new(
                                                        "enterprise_accounts".to_string(),
                                                    )
                                                ],
                                            )
                                            .formula("power_users AND NOT trial_segment".to_string())
                                            .segments(
                                                vec![
                                                    ProductAnalyticsJourneyAudienceSegmentQuery::new(
                                                        "trial_segment".to_string(),
                                                        "00000000-0000-0000-0000-000000000000".to_string(),
                                                    )
                                                ],
                                            )
                                            .users(
                                                vec![
                                                    ProductAnalyticsJourneyAudienceUserQuery::new(
                                                        "power_users".to_string(),
                                                    )
                                                ],
                                            ),
                                    )
                                    .graph_filters(
                                        vec![
                                            ProductAnalyticsJourneySearchGraphFilter::new(
                                                ProductAnalyticsJourneySearchGraphFilterName::TIME_TO_CONVERT,
                                                ProductAnalyticsJourneySearchGraphFilterOperator::LESS_THAN_OR_EQUAL,
                                                60000,
                                            ).target(
                                                ProductAnalyticsJourneyTarget::ProductAnalyticsJourneyNodeTarget(
                                                    Box::new(
                                                        ProductAnalyticsJourneyNodeTarget::new(
                                                            ProductAnalyticsJourneyNodeTargetType::NODE,
                                                            "A".to_string(),
                                                        ),
                                                    ),
                                                ),
                                            )
                                        ],
                                    ),
                            )
                            .join_keys(
                                ProductAnalyticsJoinKeys::new().primary("@session.id".to_string()).secondary(vec![]),
                            ),
                    ).group_by(
                        vec![
                            ProductAnalyticsGraphQueryGroupBy::new("@geo.country".to_string())
                                .should_exclude_missing(false)
                                .sort(
                                    ProductAnalyticsGroupBySort::new()
                                        .aggregation("count".to_string())
                                        .order(QuerySortOrder::DESC),
                                )
                                .source(ProductAnalyticsGraphQueryGroupBySource::USERS)
                                .target(
                                    ProductAnalyticsJourneyTarget::ProductAnalyticsJourneyNodeTarget(
                                        Box::new(
                                            ProductAnalyticsJourneyNodeTarget::new(
                                                ProductAnalyticsJourneyNodeTargetType::NODE,
                                                "A".to_string(),
                                            ),
                                        ),
                                    ),
                                )
                                .value_filters(vec![])
                        ],
                    ),
                    1756857600000,
                ),
                ProductAnalyticsFormulaJourneyRequestType::FORMULA_JOURNEY_REQUEST,
            ),
        );
    let mut configuration = datadog::Configuration::new();
    configuration.set_unstable_operation_enabled("v2.QueryProductAnalyticsJourneyTimeseries", true);
    let api = ProductAnalyticsAPI::with_config(configuration);
    let resp = api.query_product_analytics_journey_timeseries(body).await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}

Instructions

First install the library and its dependencies and then save the example to src/main.rs and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
/**
 * Compute journey timeseries analytics returns "OK" response
 */

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

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.queryProductAnalyticsJourneyTimeseries"] =
  true;
const apiInstance = new v2.ProductAnalyticsApi(configuration);

const params: v2.ProductAnalyticsApiQueryProductAnalyticsJourneyTimeseriesRequest =
  {
    body: {
      data: {
        attributes: {
          from: 1756425600000,
          query: {
            compute: {
              aggregation: "count",
              target: {
                type: "node",
                value: "A",
              },
            },
            groupBy: [
              {
                facet: "@geo.country",
                shouldExcludeMissing: false,
                sort: {
                  aggregation: "count",
                  order: "desc",
                },
                source: "product_analytics_audience_filters.users",
                target: {
                  type: "node",
                  value: "A",
                },
                valueFilters: [],
              },
            ],
            search: {
              expression: "A -> B",
              filters: {
                audienceFilters: {
                  accounts: [
                    {
                      name: "enterprise_accounts",
                    },
                  ],
                  formula: "power_users AND NOT trial_segment",
                  segments: [
                    {
                      name: "trial_segment",
                      segmentId: "00000000-0000-0000-0000-000000000000",
                    },
                  ],
                  users: [
                    {
                      name: "power_users",
                    },
                  ],
                },
                graphFilters: [
                  {
                    name: "__dd.time_to_convert",
                    operator: "<=",
                    target: {
                      type: "node",
                      value: "A",
                    },
                    value: 60000,
                  },
                ],
              },
              joinKeys: {
                primary: "@session.id",
                secondary: [],
              },
              nodeObjects: {
                A: {
                  dataSource: "product_analytics",
                  search: {
                    query: "@type:view @view.name:Login",
                  },
                },
                B: {
                  dataSource: "product_analytics",
                  search: {
                    query: "@type:action @action.target.name:Submit",
                  },
                },
              },
            },
          },
          to: 1756857600000,
        },
        type: "formula_journey_request",
      },
    },
  };

apiInstance
  .queryProductAnalyticsJourneyTimeseries(params)
  .then((data: v2.ProductAnalyticsJourneyTimeseriesResponse) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));

Instructions

First install the library and its dependencies and then save the example to example.ts and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"