Skip to main content

Davis® AI - Predictive and Causal

Overview

This SDK allows you to interact with Davis® predictive and causal AI for customized AI/ML analysis.

Refer to the service documentation to get familiar with the key concepts.

npm install @dynatrace-sdk/client-davis-analyzers

analyzersClient

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

cancelAnalyzerExecution

analyzersClient.cancelAnalyzerExecution(config): Promise<void | AnalyzerExecuteResult>

Stop a started analyzer execution.

Required scope: davis:analyzers:execute

Use the request token that was returned when starting an analyzer execution to cancel it.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.
config.requestToken*requiredstringThe request token is returned when starting a long-running analyzer execution.

Returns

The current analyzer execution status and an optional partial result.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.cancelAnalyzerExecution({
analyzerName: "...",
requestToken: "RHluYXRyYWNlMjAyMw==",
});

executeAnalyzer

analyzersClient.executeAnalyzer(config): Promise<AnalyzerExecuteResult>

Asynchronously execute an analyzer with the given input.

Required scope: davis:analyzers:execute

The analyzer execution is started asynchronously. If the result is not available after a short time (in the order of 1-2 seconds), a request token is returned to poll for the result. Otherwise, the final result is directly available and no request token is returned.

Depending on the chosen analyzer and the analyzer input, additional scopes might be required, e.g. storage:buckets:read and storage:metrics:read to enable the analyzer to read time series data from Grail™.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.
config.body*requiredAnalyzerInput

Returns

The final analyzer result and execution status. | The current analyzer execution status and a request token and time-to-live (TTL) to continue polling the result with.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.executeAnalyzer({
analyzerName: "...",
body: {
timeSeriesData: {
expression: "timeseries avg(dt.host.cpu.usage)",
},
forecastHorizon: 10,
},
});

getAnalyzer

analyzersClient.getAnalyzer(config): Promise<AnalyzerDefinitionDetails>

Get the analyzer definition for an analyzer.

Required scope: davis:analyzers:read

All available meta-information for the analyzer is returned.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.

Returns

The definition of the requested analyzer.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.getAnalyzer({
analyzerName: "...",
});

getAnalyzerDocumentation

analyzersClient.getAnalyzerDocumentation(config): Promise<Binary>

Get the documentation for an analyzer.

Required scope: davis:analyzers:read

A documentation may provide further information and context for a given analyzer. Not all analyzers provide documentation.

The documentation is returned as Markdown.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.

Returns

The documentation of the requested analyzer.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.getAnalyzerDocumentation({
analyzerName: "...",
});

getJsonSchemaForInput

analyzersClient.getJsonSchemaForInput(config): Promise<Record<string | any>>

Get the JSON schema for an analyzer input.

Required scope: davis:analyzers:read

The JSON schema defines a standardized declaration of the input structure, providing well-defined input documentation that is both human- and machine-readable.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.

Returns

The JSON input schema of the requested analyzer.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.getJsonSchemaForInput({
analyzerName: "...",
});

getJsonSchemaForResult

analyzersClient.getJsonSchemaForResult(config): Promise<Record<string | any>>

Get the JSON schema for an analyzer result.

Required scope: davis:analyzers:read

The JSON schema defines a standardized declaration of the output structure, providing well-defined output documentation that is both human- and machine-readable.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.

Returns

The JSON result schema of the requested analyzer.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.getJsonSchemaForResult({
analyzerName: "...",
});

pollAnalyzerExecution

analyzersClient.pollAnalyzerExecution(config): Promise<AnalyzerExecuteResult>

Poll for the result of a started analyzer execution.

Required scope: davis:analyzers:execute

Use the request token returned when starting an analyzer execution to poll for a result.

The executionStatus of the result indicates if the analyzer execution is already completed. While the status is RUNNING, wait and poll for the result again in subsequent calls.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.
config.requestToken*requiredstringThe request token is returned when starting a long-running analyzer execution.

Returns

The current analyzer execution status and an optional partial result.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.pollAnalyzerExecution({
analyzerName: "...",
requestToken: "RHluYXRyYWNlMjAyMw==",
});

queryAnalyzers

analyzersClient.queryAnalyzers(config): Promise<AnalyzerQueryResult>

Query all available analyzer definitions.

Required scope: davis:analyzers:read

The analyzer definition contains meta-information about an analyzer, including its input and output structure:

  • The input definition specifies which fields the analyzer accepts, some of which may be required.
  • The output definition specifies how the returned analyzer result is structured.

Parameters

NameTypeDescription
config.addFieldsstring

Specify which meta-information to fetch in addition to the default fields name, displayName and description.

Valid values are:

  • analyzerCall
  • baseAnalyzer
  • category
  • inputDefaults
  • input
  • labels
  • outputDefaults
  • output
  • type

Any other field will result in a HTTP 400 response.

config.filterstring

Use the filter parameter to only fetch a subset of analyzer definitions.

When using the operators =and !=, filtering is case sensitive.

The following operators are supported:

  • =
  • !=
  • contains
  • starts-with
  • ends-with
  • and
  • or

Parenthesis and the not operator are currently not supported.

The following fields are valid filtering parameters:

  • baseAnalyzer
  • description
  • displayName
  • labels
  • name
  • type

Any other field will result in a HTTP 400 response.

config.pageKeystring

The cursor for the page of results. Find it in the nextPageKey field of the previous response.

If the page-key parameter is used, no other query parameters must be provided.

If not provided, the first page is always returned.

config.pageSizenumber

The amount of returned analyzer definitions in a single response payload. By default, 50 is used. The maximum is 200.

Returns

All available analyzer definitions.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.queryAnalyzers();

validateAnalyzerExecution

analyzersClient.validateAnalyzerExecution(config): Promise<AnalyzerValidationResult>

Validate the provided input for an analyzer execution.

Required scope: davis:analyzers:execute

Provide the same input that is planned to be used for an analyzer execution to have it validated without executing the analyzer.

Parameters

NameTypeDescription
config.analyzerName*requiredstringThe name of the analyzer.
config.body*requiredAnalyzerInput

Returns

The validation result for the requested analyzer execution.

Code example

import { analyzersClient } from "@dynatrace-sdk/client-davis-analyzers";

const data = await analyzersClient.validateAnalyzerExecution({
analyzerName: "...",
body: {},
});

Types

AnalyzerCall

NameType
analyzerNamestring
inputBindingsAnalyzerCallInputBindings
namedValuesAnalyzerData
outputBindingsAnalyzerCallOutputBindings

AnalyzerCallInputBindings

AnalyzerCallOutputBindings

AnalyzerCategory

The category of an analyzer used to logically group different analyzers. This category is in addition to the analyzer module name which is part of the fully qualified name of the analyzer.

NameType
displayName*requiredstring

AnalyzerData

AnalyzerDefinition

NameType
analyzerCallAnalyzerCall
baseAnalyzerstring
categoryAnalyzerCategory
descriptionstring
displayName*requiredstring
inputArray<ParameterDefinition>
inputDefaultsAnalyzerData
labelsArray<string>
name*requiredstring
outputArray<ParameterDefinition>
outputDefaultsAnalyzerData
typeAnalyzerDefinitionType

AnalyzerDefinitionDetails

NameType
analyzerCallAnalyzerCall
baseAnalyzerstring
categoryAnalyzerCategory
descriptionstring
displayName*requiredstring
inputArray<ParameterDefinition>
inputDefaultsAnalyzerData
labelsArray<string>
name*requiredstring
outputArray<ParameterDefinition>
outputDefaultsAnalyzerData
typeAnalyzerDefinitionType

AnalyzerDimensionalData

NameType
query*requiredDimensionQuery
type*requiredstring
value*requiredRecord<string | any>

AnalyzerError

NameType
code*requirednumber
detailsAnalyzerErrorDetails
message*requiredstring

AnalyzerErrorDetails

NameType
constraintViolationsArray<ConstraintViolation>

AnalyzerErrorEnvelope

NameType
errorAnalyzerError

AnalyzerExecuteResult

NameType
requestTokenstring
result*requiredAnalyzerResult
ttlInSecondsnumber

AnalyzerExecutionLog

NameType
analyzerName*requiredstring
level*requiredAnalyzerExecutionLogLevel
message*requiredstring
pathstring

AnalyzerGeneralParameters

NameTypeDefault
logVerbosityAnalyzerExecutionLogLevel
resolveDimensionalQueryDatabooleanfalse
timeframeTimeframe

AnalyzerInput

The input is specific to an analyzer. Get the definition of an analyzer to find the required input structure.

NameType
generalParametersAnalyzerGeneralParameters

AnalyzerInterface

NameType
baseInterfacestring

AnalyzerOutput

NameType
systemAnalyzerOutputSystemParameters

AnalyzerOutputLog

NameType
analyzerName*requiredstring
level*requiredAnalyzerOutputLogLevel
message*requiredstring

AnalyzerOutputSystemParameters

NameType
logsArray<AnalyzerOutputLog>

AnalyzerQueryResult

NameType
analyzers*requiredArray<AnalyzerDefinition>
nextPageKeystring
totalCount*requirednumber

AnalyzerResult

NameType
dataArray<AnalyzerDimensionalData>
executionStatus*requiredAnalyzerResultExecutionStatus
input*requiredAnalyzerInput
logsArray<AnalyzerExecutionLog>
output*requiredArray<AnalyzerOutput>
resultId*requiredstring
resultStatus*requiredAnalyzerResultResultStatus

AnalyzerValidationResult

NameType
detailsAnalyzerErrorDetails
valid*requiredboolean

ConstraintViolation

NameType
analyzerName*requiredstring
level*requiredAnalyzerExecutionLogLevel
message*requiredstring
pathstring

EnumerationElement

NameType
description*requiredstring
displayName*requiredstring
key*requiredstring

ParameterDefinition

NameTypeDescription
advancedbooleanIf true, this parameter is considered to be for advanced usage.
array*requiredboolean
callInterfaceAnalyzerInterface
defaultValueany
descriptionstring
displayName*requiredstring
enumerationValuesArray<EnumerationElement>
extendedTypestringProvides extended type information for this parameter. This allows additional semantics that can be utilized by analyzer consumers.
fieldsArray<ParameterDefinition>
maxSizenumber
name*requiredstring
optional*requiredboolean
type*requiredParameterDefinitionType
valueConstraintsRecord<string | any>

Timeframe

NameTypeDescription
endTimestringSpecify the end time in either absolute or relative format. For absolute format, use the ISO 8601 format (yyyy-MM-ddTHH:mm:ssZ). For relative format, use 'now' for the current time or apply an offset with the available units: 's' for seconds, 'm' for minutes, 'h' for hours, and 'd' for days. For example, use 'now-2h' or '-2h' for a relative offset of 2 hours. If not specified, defaults to now.
startTime*requiredstringSpecify the start time in either absolute or relative format. For absolute format, use the ISO 8601 format (yyyy-MM-ddTHH:mm:ssZ). For relative format, use 'now' for the current time or apply an offset with the available units: 's' for seconds, 'm' for minutes, 'h' for hours, and 'd' for days. For example, use 'now-2h' or '-2h' for a relative offset of 2 hours.

Enums

AnalyzerDefinitionType

Enum keys

Declared | Implemented | Interface

AnalyzerExecutionLogLevel

Enum keys

Info | Severe | Tracing | Warning

AnalyzerOutputLogLevel

Enum keys

Info | Tracing | Warning

AnalyzerResultExecutionStatus

Enum keys

Aborted | Completed | Running

AnalyzerResultResultStatus

Enum keys

Failed | Successful | SuccessfulWithWarnings

ParameterDefinitionType

Enum keys

AnalyzerCall | AnalyzerStructure | Boolean | DataFrame | DimensionQuery | EntityId | EntityQuery | EntityTemplate | Enumeration | Integer | ModelId | Number | String | TextTemplate | Timeframe | TimeseriesArray | TimeseriesQuery | TimeseriesSet | Timestamp

Still have questions?
Find answers in the Dynatrace Community