Dynamic Thresholds API

Note

API Version: v1
Base URL: https://next.itrslab.com/dynamic-thresholds/api

The Dynamic Thresholds API provides endpoints for managing dynamic threshold configurations, monitoring their status, and retrieving application metadata. This API enables you to create and manage threshold configurations that can automatically detect anomalies in your metrics using various statistical methods.

Dynamic Thresholds API endpoints Copied

Application Copied

Get Application Metadata Copied

Returns application metadata including platform limits, settings, and timeouts.

GET /app/metadata

Tags: Application

Description: This is an unversioned endpoint with no guarantees of backward compatibility.

Parameters: None

Example Request:

curl -X GET "https://next.itrslab.com/dynamic-thresholds/api/app/metadata"

Example Response:

{
  "appConfig": {
    "rpc_timeout": "30s",
    "max_concurrent_platform_requests": 10,
    "max_metric_batch_size": 1000,
    "platform_lock_timeout": "5s",
    "max_outbound_message_size_mib": 10,
    "max_num_retries": 3,
    "max_num_configs": 100,
    "refresh_intervals": ["300s", "600s"],
    "threshold_metric_refresh_interval": "60s",
    "dry_run": {
      "rpc_timeout": "30s",
      "ttl": "3600s",
      "max_concurrent_platform_requests": 5,
      "is_cache_enabled": true,
      "cache_capacity": 1000,
      "platform_lock_timeout": "5s"
    }
  },
  "appBuildInfo": {
    "version": "1.0.0",
    "build_time": "2025-05-27T07:42:09Z",
    "commit_hash": "abc123",
    "branch_name": "main"
  }
}

Configuration Copied

Retrieve All Configurations Copied

Retrieves all configurations with optional filtering and pagination.

GET /v1/config

Tags: Configuration

Parameters:

Name Location Type Required Description
skip query integer (uint32) No Number of results to skip for pagination. Defaults to 0 if not specified.
limit query integer (uint32) No Maximum number of results to return for pagination. Defaults to 100 if not specified.
searchTerm query string No Search term to filter configurations by name (case-insensitive).

Example Request:

curl -X GET "https://next.itrslab.com/dynamic-thresholds/api/v1/config?skip=0&limit=10&searchTerm=cpu"

Example Response:

{
  "configEntries": [
    {
      "config": {
        "name": "cpu-threshold",
        "sourceMetric": {
          "namespace": "itrsgroup.com/geneos",
          "name": "cpu_utilisation",
          "type": "METRIC_TYPE_GAUGE",
          "unit": "UNIT_PERCENT"
        },
        "deviation": {
          "header": {
            "lookbackModel": {
              "slidingWindow": {
                "size": "86400s"
              }
            },
            "refreshInterval": "300s"
          },
          "warningThreshold": {
            "header": {
              "sourceMetricValue": {
                "slidingWindow": {
                  "duration": "FIVE_MINUTES",
                  "aggregation": {
                    "function": "MEAN"
                  }
                }
              }
            },
            "stdDevFactor": {
              "greaterThan": 2.0
            }
          }
        }
      },
      "version": "1"
    }
  ],
  "numRemainingEntries": 50
}

Create or Update Configuration Copied

Creates a new configuration or updates an existing one.

POST /v1/config

Tags: Configuration

Request Body: UpsertConfigRequest

Example Request:

curl -X POST "https://next.itrslab.com/dynamic-thresholds/api/v1/config" \
  -H "Content-Type: application/json" \
  -d '{
    "config": {
      "name": "deviation",
      "sourceMetric": {
        "namespace": "itrsgroup.com/dynamic-thresholds/demo",
        "name": "memory_usage",
        "type": "METRIC_TYPE_GAUGE",
        "unit": "UNIT_PERCENT"
      },
      "filter": {
        "expression": {
          "comparison": {
            "name": "service",
            "value": "online_orders"
          }
        }
      },
      "deviation": {
        "header": {
          "lookbackModel": {
            "slidingWindow": {
              "size": "86400s"
            }
          },
          "refreshInterval": "300s"
        },
        "warningThreshold": {
          "header": {
            "sourceMetricValue": {
              "slidingWindow": {
                "duration": "FIVE_MINUTES",
                "aggregation": {
                  "function": "MEAN"
                }
              }
            }
          },
          "stdDevFactor": {
            "lessThan": 2.0,
            "greaterThan": 1.8
          }
        },
        "criticalThreshold": {
          "header": {
            "sourceMetricValue": {
              "slidingWindow": {
                "duration": "FIVE_MINUTES",
                "aggregation": {
                  "function": "MEAN"
                }
              }
            }
          },
          "stdDevFactor": {
            "greaterThan": 3.0
          }
        }
      }
    },
    "version": "1"
  }'

Example Response:

{
  "version": "2"
}

Get Configuration Status Copied

Retrieves the status of all configured thresholds.

GET /v1/config/status

Tags: Configuration

Parameters:

Name Location Type Required Description
name query string No Name of a specific configuration to filter the status by. If not specified, status for all configurations will be returned.

Example Request:

curl -X GET "https://next.itrslab.com/dynamic-thresholds/api/v1/config/status?name=deviation"

Example Response:

{
  "status": {
    "deviation": {
      "maxSeverity": "SEVERITY_CRITICAL",
      "status": {
        "severity": "SEVERITY_WARN",
        "message": "Failed to fetch source metric data"
      },
      "lastRefreshedAt": "2025-05-27T07:42:09Z",
      "nextRefreshAt": "2025-05-27T09:42:09Z",
      "thresholds": [
        {
          "key": {
            "severity": "THRESHOLD_SEVERITY_WARNING",
            "bound": "THRESHOLD_BOUND_UPPER"
          },
          "status": {
            "severity": "SEVERITY_CRITICAL",
            "message": "Failed to extract 'mean' from source metric statistics"
          }
        }
      ]
    }
  }
}

Get Specific Configuration Copied

Retrieves a specific configuration by its name.

GET /v1/config/{name}

Tags: Configuration

Parameters:

Name Location Type Required Description
name path string Yes The name of the configuration to retrieve.

Example Request:

curl -X GET "https://next.itrslab.com/dynamic-thresholds/api/v1/config/deviation"

Example Response:

{
  "entry": {
    "config": {
      "name": "deviation",
      "sourceMetric": {
        "namespace": "itrsgroup.com/dynamic-thresholds/demo",
        "name": "memory_usage",
        "type": "METRIC_TYPE_GAUGE",
        "unit": "UNIT_PERCENT"
      },
      "filter": {
        "expression": {
          "comparison": {
            "name": "service",
            "value": "online_orders"
          }
        }
      },
      "deviation": {
        "header": {
          "lookbackModel": {
            "slidingWindow": {
              "size": "86400s"
            }
          },
          "refreshInterval": "300s"
        },
        "warningThreshold": {
          "header": {
            "sourceMetricValue": {
              "slidingWindow": {
                "duration": "FIVE_MINUTES",
                "aggregation": {
                  "function": "MEAN"
                }
              }
            }
          },
          "stdDevFactor": {
            "lessThan": 2.0,
            "greaterThan": 1.8
          }
        },
        "criticalThreshold": {
          "header": {
            "sourceMetricValue": {
              "slidingWindow": {
                "duration": "FIVE_MINUTES",
                "aggregation": {
                  "function": "MEAN"
                }
              }
            }
          },
          "stdDevFactor": {
            "greaterThan": 3.0
          }
        }
      }
    },
    "version": "1"
  }
}

Delete Configuration Copied

Deletes a configuration by its name and version.

DELETE /v1/config/{name}

Tags: Configuration

Parameters:

Name Location Type Required Description
name path string Yes The name of the configuration to delete.
version query string No The version of the configuration to delete, used for optimistic concurrency control. The deletion will only succeed if the version matches the current version.

Example Request:

curl -X DELETE "https://next.itrslab.com/dynamic-thresholds/api/v1/config/deviation?version=1"

Example Response:

{}

API Information Copied

Get Supported API Versions Copied

Returns the supported API versions.

GET /versions

Tags: Info

Description: Used for client compatibility checks and API discovery.

Parameters: None

Example Request:

curl -X GET "https://next.itrslab.com/dynamic-thresholds/api/versions"

Example Response:

{
  "versions": ["v1"]
}

Schemas Copied

Any Copied

Represents any type of value that can be serialized.

Properties:

Property Type Required Description
value GoogleProtobufAny No The serialized value.
yaml string No The YAML representation of the value.

DeleteConfigResponse Copied

Response for a successful delete operation.

Properties:

This response contains no fields as the success is indicated by the absence of an error.

DeviationThreshold Copied

Defines a deviation-based threshold that monitors for values that deviate significantly from the historical mean, based on standard deviation calculations.

Properties:

Property Type Required Description
header ModelHeader Yes Common properties for dynamic threshold models.
warningThreshold DeviationThreshold_Threshold No Configuration for the warning threshold level.
criticalThreshold DeviationThreshold_Threshold No Configuration for the critical threshold level.

DeviationThreshold_Threshold Copied

Defines a threshold based on standard deviation from the mean value.

Properties:

Property Type Required Description
header ThresholdHeader Yes Common threshold properties.
stdDevFactor ThresholdValue Yes Standard deviation factor for the threshold calculation.

Dimension Copied

A single Entity dimension.

Properties:

Property Type Required Description
key string No The dimension key.
value string No The dimension value.

EntityFilter Copied

An entity filter expressed as either an expression or an exact dimension filter.

Properties (One of):

Property Type Description
orderedDimensions OrderedDimensionsFilter Exact match on dimensions considering order.
dimensions UnorderedDimensionsFilter Exact match on dimensions ignoring order.
expression Expression Filter by entities matching an expression.

Expression Copied

Represents an expression for entity filtering.

Properties:

Property Type Required Description
additionalProperties array[NamedAny] No Additional properties for the expression.

GetApiVersionsResponse Copied

Response containing the list of supported API versions.

Properties:

Property Type Required Description
versions array[string] Yes A list of supported API versions.

GetAppMetadataResponse Copied

Response containing the application configuration settings.

Properties:

Property Type Required Description
appConfig GetAppMetadataResponse_AppConfig Yes The application configuration settings.
appBuildInfo GetAppMetadataResponse_AppBuildInfo No The build information of the application.

GetAppMetadataResponse_AppBuildInfo Copied

Build information of the application.

Properties:

Property Type Required Description
version string No The version of the application.
buildTime string No The build timestamp of the application.
commitHash string No The commit hash of the application build.
branchName string No The branch name of the application build.

GetAppMetadataResponse_AppConfig Copied

Application configuration settings.

Properties:

Property Type Required Description
rpcTimeout string Yes The maximum amount of time to wait for RPC calls.
maxConcurrentPlatformRequests integer Yes The maximum number of concurrent requests to the platform.
maxMetricBatchSize integer Yes The maximum threshold metrics batch size when sending to the platform.
platformLockTimeout string Yes The maximum time to wait for a lock against a platform request.
maxOutboundMessageSizeMib integer No The maximum size of outbound messages in MiB.
maxNumRetries integer Yes The maximum number of retries for failed requests.
maxNumConfigs integer Yes The maximum allowed number of configurations.
refreshIntervals array[string] Yes The refresh intervals available for dynamic threshold configurations.
thresholdMetricRefreshInterval string No How often the app re-emits threshold metric values.
dryRun GetAppMetadataResponse_DryRunConfig No Dry run configuration settings.
maxMetricBatchWaitTime string No The maximum time to wait for a metric batch.

GetAppMetadataResponse_DryRunConfig Copied

Dry run configuration settings.

Properties:

Property Type Required Description
rpcTimeout string Yes The maximum time to wait for RPC calls during dry run.
ttl string Yes The maximum time dry run results will be held before being purged.
maxConcurrentPlatformRequests integer Yes The maximum number of concurrent requests during dry run.
isCacheEnabled boolean Yes Whether dry run result caching is enabled.
cacheCapacity integer Yes The maximum number of dry run results that can be cached.
platformLockTimeout string Yes The maximum time to wait for a platform lock during dry run.

GetConfigResponse Copied

Response containing the requested configuration entry.

Properties:

Property Type Required Description
entry ThresholdConfigEntry Yes The retrieved configuration entry.

GetConfigsResponse Copied

Response containing a list of configurations that match the request criteria.

Properties:

Property Type Required Description
configEntries array[ThresholdConfigEntry] Yes The list of configuration entries that match the request.
numRemainingEntries integer No The total number of entries that match the search criteria.

GetStatusResponse Copied

Response containing the status of all configured threshold configurations.

Properties:

Property Type Required Description
status map[string, GetStatusResponse_ConfigStatus] Yes Status for each configuration, keyed by configuration name.

GetStatusResponse_ConfigStatus Copied

Detailed status information for a single threshold configuration.

Properties:

Property Type Required Description
maxStatus Status Yes The status with the highest severity level across all thresholds.
thresholdStatus Status No Overall status of the configuration.
signalStatus Status No Status of signal generation tasks for this configuration.
numEntities integer Yes The total number of entities this configuration is applied to.
lastRefreshedAt string Yes The timestamp when this configuration was last refreshed.
nextRefreshAt string No The timestamp when this configuration is scheduled to be refreshed next.

GoogleProtobufAny Copied

Contains an arbitrary serialized message along with a type that describes the serialized message.

Properties:

Property Type Required Description
@type string No The type of the serialized message.

Note: This type also supports additional properties.

HistogramAggregation Copied

Defines how to aggregate histogram values within a time window.

Properties:

Property Type Required Description
function string Yes The aggregation function. Valid values: UNSPECIFIED, MIN, MAX, PERCENTILE
percentile number No Must be set if function is PERCENTILE. Value between 0-100.

LatestHistogram Copied

Extracts a specific percentile value from the latest histogram data.

Properties:

Property Type Required Description
aggregation HistogramAggregation Yes The aggregation function to apply to the histogram.

LookbackModel Copied

Defines how far back in time to look for historical data when building a threshold model.

Properties (One of):

Property Type Description
seasonal SeasonalParams Parameters for a seasonal model.
slidingWindow LookbackModel_SlidingWindow A sliding window that moves with the current time.
fixedWindow LookbackModel_FixedWindow A fixed time window with specific start and end times.

LookbackModel_FixedWindow Copied

Defines a fixed time window with specific start and end times.

Properties:

Property Type Required Description
from string Yes The start time of the window.
to string Yes The end time of the window.

LookbackModel_SlidingWindow Copied

Defines a sliding window that moves with the current time.

Properties:

Property Type Required Description
size string Yes The duration of the sliding window lookback period.

Metadata Copied

Metadata about creation and modification of a configuration.

Properties:

Property Type Required Description
createdBy Metadata_User Yes The user who created the configuration.
createdAt string Yes The timestamp when the configuration was created.
lastModifiedBy Metadata_User No The user who last modified the configuration.
lastModifiedAt string No The timestamp when the configuration was last modified.

Metadata_User Copied

Information about a user who interacted with the configuration.

Properties:

Property Type Required Description
id string Yes The unique identifier of the user.
displayName string Yes The display name of the user.

MetricAggregation Copied

Defines how to aggregate metric values within a time window.

Properties:

Property Type Required Description
function string Yes The aggregation function. Valid values: UNSPECIFIED, MIN, MAX, MEAN, PERCENTILE, SUM, COUNT
percentile number No Must be set if function is PERCENTILE. Value between 0-100.

MetricThreshold Copied

Defines a threshold based on another metric.

Properties:

Property Type Required Description
warningThreshold MetricThreshold_Threshold No Configuration for the warning threshold level.
criticalThreshold MetricThreshold_Threshold No Configuration for the critical threshold level.

MetricThreshold_Threshold Copied

Defines a threshold based on a relative percentage of another metric.

Properties:

Property Type Required Description
header ThresholdHeader Yes Common threshold properties.
relativePercentage ThresholdValue Yes The relative percentage for the threshold calculation.
metric NamespacedName Yes The reference metric for the threshold calculation.

ModelHeader Copied

Common header properties for dynamic threshold models.

Properties:

Property Type Required Description
lookbackModel LookbackModel Yes Defines how far back in time to look for historical data.
refreshInterval string Yes How frequently the model should be refreshed with new data.
max number No The maximum calculated absolute value of the threshold.
min number No The minimum calculated absolute value of the threshold.

NamedAny Copied

Automatically-generated message used to represent maps of Any as ordered (name,value) pairs.

Properties:

Property Type Required Description
name string No Map key.
value Any No Mapped value.

NamespacedName Copied

Represents a namespaced name consisting of a namespace and name.

Properties:

Property Type Required Description
namespace string No Namespace. Values must be no longer than 128 characters.
name string No Name. Values must be non-blank and no longer than 64 characters.

OrderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, taking the order of dimensions into account.

Properties:

Property Type Required Description
dimensions array[Dimension] Yes Dimensions. Cannot be empty.

PercentileThreshold Copied

Defines a percentile-based threshold that monitors for values that deviate significantly from historical percentile values.

Properties:

Property Type Required Description
header ModelHeader Yes Common properties for dynamic threshold models.
warningThreshold PercentileThreshold_Threshold Yes Configuration for the warning threshold level.
criticalThreshold PercentileThreshold_Threshold Yes Configuration for the critical threshold level.

PercentileThreshold_PercentileFactor Copied

Defines how to calculate the factor used in percentile-based thresholds.

Properties (One of):

Property Type Description
relativePercentage ThresholdValue The percentage deviation from the baseline percentile.
interQuantileRange ThresholdValue The inter-quartile range (IQR) factor.

PercentileThreshold_Threshold Copied

Defines the threshold configuration for a percentile-based model.

Properties:

Property Type Required Description
header ThresholdHeader Yes Common threshold properties.
baselinePercentile number Yes The baseline percentile for the threshold calculation (0-100).
factor PercentileThreshold_PercentileFactor Yes The deviation from the baseline percentile.

SeasonalParams Copied

Parameters for seasonal models, which account for recurring patterns in data.

Properties:

Property Type Required Description
periodicity SeasonalParams_SeasonalDuration Yes The periodicity of the seasonal model.
granularity SeasonalParams_SeasonalDuration Yes The granularity of the seasonal model.
numPeriods integer Yes The number of historical periods to use. Must be at least 1.

SeasonalParams_SeasonalDuration Copied

Defines the duration for seasonal models.

Properties (One of):

Property Type Description
weeks integer Duration in weeks.
days integer Duration in days.
hours integer Duration in hours.
minutes integer Duration in minutes.

SlidingWindow Copied

Defines a sliding window for calculating moving statistics over time.

Properties:

Property Type Required Description
duration string Yes The duration of the sliding window. See Window Duration Values.
aggregation MetricAggregation No Aggregation function for scalar values.
histogramAggregation HistogramAggregation No Aggregation function for histogram values.

SourceMetric Copied

Represents a source metric that will be monitored by threshold configurations.

Properties:

Property Type Required Description
namespace string Yes The source metric namespace.
name string Yes The source metric name.
type string Yes The source metric type. Valid values: METRIC_TYPE_UNDEFINED, METRIC_TYPE_COUNTER, METRIC_TYPE_GAUGE, METRIC_TYPE_HISTOGRAM, METRIC_TYPE_STATUS
unit string Yes The source metric unit. See Unit Values for valid values.

SourceMetricValue Copied

Specifies how to extract a value from the source metric data.

Properties (One of):

Property Type Description
slidingWindow SlidingWindow Use a sliding window of values with aggregation.
latestHistogram LatestHistogram Use a specific percentile from the latest histogram.

StaticThreshold Copied

Defines a static threshold with fixed values.

Properties:

Property Type Required Description
warningThreshold StaticThreshold_Threshold No Configuration for the warning threshold level.
criticalThreshold StaticThreshold_Threshold No Configuration for the critical threshold level.

StaticThreshold_Threshold Copied

Defines a static threshold with a fixed value.

Properties:

Property Type Required Description
header ThresholdHeader No Common threshold properties.
value ThresholdValue No The static threshold value.
unit string No The unit for the threshold value. See Unit Values for valid values.

Status Copied

Defines a logical error model suitable for different programming environments.

Properties:

Property Type Required Description
message string No A developer-facing human readable error message.
code string No The status code. Valid values: STATUS_CODE_UNSET, STATUS_CODE_OK, STATUS_CODE_ERROR

ThresholdConfig Copied

Defines a complete threshold configuration that specifies how to monitor a source metric, what threshold algorithms to apply, and how to generate signals when thresholds are breached.

Properties:

Property Type Required Description
name string Yes An immutable unique name for the threshold configuration.
group string No A group name for the threshold configuration.
displayName string No A mutable display name for the threshold configuration.
categories array[string] No One or more categories for the threshold configuration.
sourceMetric SourceMetric Yes The source metric.
filter EntityFilter No The entity filter.
disabled boolean No If set, threshold and signal generation will be disabled.
signalGenerationDisabled boolean No If set, signal generation will be disabled.
metric MetricThreshold No Threshold based on another metric (not supported).
static StaticThreshold No Static threshold configuration.
deviation DeviationThreshold No Standard deviation threshold configuration.
percentile PercentileThreshold No Percentile threshold configuration.

ThresholdConfigEntry Copied

A configuration entry with its metadata and version information.

Properties:

Property Type Required Description
config ThresholdConfig Yes The configuration details.
version string Yes The version of the configuration.
metadata Metadata No Metadata about the configuration.

ThresholdHeader Copied

Common header fields for threshold configurations.

Properties:

Property Type Required Description
disabled boolean No Set if the threshold is disabled. Defaults to false.
hysteresis string No Duration the value must be outside the threshold before triggering a signal.
sourceMetricValue SourceMetricValue Yes Defines how to extract a value from the source metric data.

ThresholdValue Copied

Defines threshold boundary conditions that determine when a signal should be triggered.

Properties:

Property Type Required Description
lessThan number No Trigger a signal if the source value is less than this value.
greaterThan number No Trigger a signal if the source value is greater than this value.

Note: At least one of lessThan or greaterThan must be set.

UnorderedDimensionsFilter Copied

A filter that exactly matches entity dimension keys and values, irrespective of the order of dimensions.

Properties:

Property Type Required Description
dimensions map[string, string] Yes Dimensions. Cannot be empty.

UpsertConfigRequest Copied

Request to create or update a configuration.

Properties:

Property Type Required Description
config ThresholdConfig Yes The configuration to create or update.
version string No The version of the configuration to update (for existing configs).

UpsertConfigResponse Copied

Response containing the version of the created or updated configuration.

Properties:

Property Type Required Description
version string Yes The new version of the configuration after the upsert operation.

Error Handling Copied

The API uses standard HTTP status codes and returns error responses in the following format:

{
  "title": "Bad Request",
  "message": "The metric name must be set",
  "details": {
    "type": "validation_error",
    "path": ".metric.name"
  }
}

Error Response Fields:

Field Type Required Description
title string Yes The error title
message string Yes The error message
details object No An arbitrary set of key-value error metadata

Unit Values Copied

Valid unit values for metrics:

Window Duration Values Copied

Valid window duration values:

["ITRS Analytics"] ["ITRS Analytics > API Gateway"] ["User Guide"]

Was this topic helpful?