From 4c051dbb197616a8bc5c2cb971bd81419d92761a Mon Sep 17 00:00:00 2001 From: gessnerfl Date: Wed, 3 Jan 2024 08:26:50 +0100 Subject: [PATCH 1/4] #214: add support for application alert type errors --- docs/resources/application_alert_config.md | 13 +- .../global_application_alert_config.md | 13 +- ...e-application-alert-config-commons_test.go | 22 - instana/resource-application-alert-config.go | 40 +- instana/restapi/application-alert-rule.go | 1 - openapi.json | 9064 ++++++++++------- testutils/test-http-server.go | 2 +- 7 files changed, 5527 insertions(+), 3628 deletions(-) diff --git a/docs/resources/application_alert_config.md b/docs/resources/application_alert_config.md index 5eb3df0..b2c343b 100644 --- a/docs/resources/application_alert_config.md +++ b/docs/resources/application_alert_config.md @@ -132,6 +132,7 @@ identifier := [a-zA-Z_][\.a-zA-Z0-9_\-/]* Exactly one of the elements below must be configured * `error_rate` - Optional - Rule based on the error rate of the configured alert configuration target. [Details](#error-rate-rule-argument-reference) +* `errors` - Optional - Rule based on the number of errors of the configured alert configuration target. [Details](#errors-rule-argument-reference) * `logs` - Optional - Rule based on logs of the configured alert configuration target. [Details](#logs-rule-argument-reference) * `slowness` - Optional - Rule based on the slowness of the configured alert configuration target. [Details](#slowness-rule-argument-reference) * `status_code` - Optional - Rule based on the HTTP status code of the configured alert configuration target. [Details](#status-code-rule-argument-reference) @@ -140,14 +141,17 @@ Exactly one of the elements below must be configured #### Error Rate Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule -* `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hash` - Optional - The stable hash used for the application alert rule +* `aggregation` - Optional - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` + +#### Errors Rule Argument Reference + +* `metric_name` - Required - The metric name of the application alert rule +* `aggregation` - Optional - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` #### Logs Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hash` - Optional - The stable hash used for the application alert rule * `level` - Required - The log level for which this rule applies to. Supported values: `WARN`, `ERROR`, `ANY` * `message` - Optional - The log message for which this rule applies to. * `operator` - Required - The operator which will be applied to evaluate this rule. Supported values: `EQUALS`, `NOT_EQUAL`, `CONTAINS`, `NOT_CONTAIN`, `IS_EMPTY`, `NOT_EMPTY`, `IS_BLANK`, `IS_BLANK`, `NOT_BLANK`, `STARTS_WITH`, `ENDS_WITH`, `NOT_STARTS_WITH`, `NOT_ENDS_WITH`, `GREATER_OR_EQUAL_THAN`, `LESS_OR_EQUAL_THAN`, `GREATER_THAN`, `LESS_THAN` @@ -156,13 +160,11 @@ Exactly one of the elements below must be configured * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hash` - Optional - The stable hash used for the application alert rule #### Status Code Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hash` - Optional - The stable hash used for the application alert rule * `status_code_start` - Optional - minimal HTTP status code applied for this rule * `status_code_end` - Optional - maximum HTTP status code applied for this rule @@ -170,7 +172,6 @@ Exactly one of the elements below must be configured * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hash` - Optional - The stable hash used for the application alert rule ### Custom Payload Field Argument Reference diff --git a/docs/resources/global_application_alert_config.md b/docs/resources/global_application_alert_config.md index 64ddec5..6c8f4ed 100644 --- a/docs/resources/global_application_alert_config.md +++ b/docs/resources/global_application_alert_config.md @@ -131,6 +131,7 @@ identifier := [a-zA-Z_][\.a-zA-Z0-9_\-/]* Exactly one of the elements below must be configured * `error_rate` - Optional - Rule based on the error rate of the configured alert configuration target. [Details](#error-rate-rule-argument-reference) +* `errors` - Optional - Rule based on the number of errors of the configured alert configuration target. [Details](#errors-rule-argument-reference) * `logs` - Optional - Rule based on logs of the configured alert configuration target. [Details](#logs-rule-argument-reference) * `slowness` - Optional - Rule based on the slowness of the configured alert configuration target. [Details](#slowness-rule-argument-reference) * `status_code` - Optional - Rule based on the HTTP status code of the configured alert configuration target. [Details](#status-code-rule-argument-reference) @@ -139,14 +140,17 @@ Exactly one of the elements below must be configured #### Error Rate Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule -* `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hast` - Optional - The stable hash used for the application alert rule +* `aggregation` - Optional - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` + +#### Errors Rule Argument Reference + +* `metric_name` - Required - The metric name of the application alert rule +* `aggregation` - Optional - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` #### Logs Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hast` - Optional - The stable hash used for the application alert rule * `level` - Required - The log level for which this rule applies to. Supported values: `WARN`, `ERROR`, `ANY` * `message` - Optional - The log message for which this rule applies to. * `operator` - Required - The operator which will be applied to evaluate this rule. Supported values: `EQUALS`, `NOT_EQUAL`, `CONTAINS`, `NOT_CONTAIN`, `IS_EMPTY`, `NOT_EMPTY`, `IS_BLANK`, `IS_BLANK`, `NOT_BLANK`, `STARTS_WITH`, `ENDS_WITH`, `NOT_STARTS_WITH`, `NOT_ENDS_WITH`, `GREATER_OR_EQUAL_THAN`, `LESS_OR_EQUAL_THAN`, `GREATER_THAN`, `LESS_THAN` @@ -155,13 +159,11 @@ Exactly one of the elements below must be configured * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hast` - Optional - The stable hash used for the application alert rule #### Status Code Rule Argument Reference * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hast` - Optional - The stable hash used for the application alert rule * `status_code_start` - Optional - minimal HTTP status code applied for this rule * `status_code_end` - Optional - maximum HTTP status code applied for this rule @@ -169,7 +171,6 @@ Exactly one of the elements below must be configured * `metric_name` - Required - The metric name of the application alert rule * `aggregation` - Required - The aggregation function of the application alert rule. Supported values `SUM`, `MEAN`, `MAX`, `MIN`, `P25`, `P50`, `P75`, `P90`, `P95`, `P98`, `P99`, `P99_9`, `P99_99`, `DISTRIBUTION`, `DISTINCT_COUNT`, `SUM_POSITIVE` -* `stable_hast` - Optional - The stable hash used for the application alert rule ### Custom Payload Field Argument Reference diff --git a/instana/resource-application-alert-config-commons_test.go b/instana/resource-application-alert-config-commons_test.go index a6978c6..63cd6af 100644 --- a/instana/resource-application-alert-config-commons_test.go +++ b/instana/resource-application-alert-config-commons_test.go @@ -359,7 +359,6 @@ func (f *anyApplicationConfigTest) createTetResourceShouldHaveCorrectResourceNam func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceStateFromModel(t *testing.T) { metricName := "test-metric" - stableHash := int32(1234) statusCodeStart := int32(200) statusCodeEnd := int32(300) logMessage := "test-log-message" @@ -372,7 +371,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleThroughput, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, expected: []interface{}{ map[string]interface{}{ @@ -384,7 +382,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, }, @@ -396,7 +393,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS AlertType: "statusCode", Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, StatusCodeStart: &statusCodeStart, StatusCodeEnd: &statusCodeEnd, }, @@ -409,7 +405,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), ApplicationAlertConfigFieldRuleStatusCodeStart: int(statusCodeStart), ApplicationAlertConfigFieldRuleStatusCodeEnd: int(statusCodeEnd), }, @@ -424,7 +419,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleSlowness, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, expected: []interface{}{ map[string]interface{}{ @@ -434,7 +428,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, @@ -448,7 +441,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleLogs, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, Message: &logMessage, Operator: &logOperator, Level: &logLevel, @@ -460,7 +452,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), ApplicationAlertConfigFieldRuleLogsLevel: string(logLevel), ApplicationAlertConfigFieldRuleLogsMessage: logMessage, ApplicationAlertConfigFieldRuleLogsOperator: string(logOperator), @@ -478,7 +469,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS AlertType: "errorRate", Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, expected: []interface{}{ map[string]interface{}{ @@ -486,7 +476,6 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, @@ -772,7 +761,6 @@ func (f *anyApplicationConfigTest) requireApplicationAlertConfigThresholdSetOnSc func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceStateToModel(t *testing.T) { metricName := "test-metric" - stableHash := int32(1234) statusCodeStart := int32(200) statusCodeEnd := int32(300) logMessage := "test-log-message" @@ -785,7 +773,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleThroughput, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, input: []map[string]interface{}{ { @@ -797,7 +784,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, }, @@ -809,7 +795,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS AlertType: "statusCode", Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, StatusCodeStart: &statusCodeStart, StatusCodeEnd: &statusCodeEnd, }, @@ -822,7 +807,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), ApplicationAlertConfigFieldRuleStatusCodeStart: int(statusCodeStart), ApplicationAlertConfigFieldRuleStatusCodeEnd: int(statusCodeEnd), }, @@ -837,7 +821,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleSlowness, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, input: []map[string]interface{}{ { @@ -847,7 +830,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, @@ -861,7 +843,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS AlertType: ApplicationAlertConfigFieldRuleLogs, Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, Message: &logMessage, Operator: &logOperator, Level: &logLevel, @@ -873,7 +854,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), ApplicationAlertConfigFieldRuleLogsLevel: string(logLevel), ApplicationAlertConfigFieldRuleLogsMessage: logMessage, ApplicationAlertConfigFieldRuleLogsOperator: string(logOperator), @@ -891,7 +871,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS AlertType: "errorRate", Aggregation: restapi.MinAggregation, MetricName: metricName, - StableHash: &stableHash, }, input: []map[string]interface{}{ { @@ -899,7 +878,6 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), ApplicationAlertConfigFieldRuleMetricName: metricName, - ApplicationAlertConfigFieldRuleStableHash: int(stableHash), }, }, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, diff --git a/instana/resource-application-alert-config.go b/instana/resource-application-alert-config.go index c4fc2d2..d2b7caf 100644 --- a/instana/resource-application-alert-config.go +++ b/instana/resource-application-alert-config.go @@ -55,10 +55,10 @@ const ( ApplicationAlertConfigFieldRuleMetricName = "metric_name" //ApplicationAlertConfigFieldRuleAggregation constant value for field rule.*.aggregation of resource instana_application_alert_config ApplicationAlertConfigFieldRuleAggregation = "aggregation" - //ApplicationAlertConfigFieldRuleStableHash constant value for field rule.*.stable_hash of resource instana_application_alert_config - ApplicationAlertConfigFieldRuleStableHash = "stable_hash" //ApplicationAlertConfigFieldRuleErrorRate constant value for field rule.error_rate of resource instana_application_alert_config ApplicationAlertConfigFieldRuleErrorRate = "error_rate" + //ApplicationAlertConfigFieldRuleErrors constant value for field rule.errors of resource instana_application_alert_config + ApplicationAlertConfigFieldRuleErrors = "errors" //ApplicationAlertConfigFieldRuleLogs constant value for field rule.logs of resource instana_application_alert_config ApplicationAlertConfigFieldRuleLogs = "logs" //ApplicationAlertConfigFieldRuleLogsLevel constant value for field rule.logs.level of resource instana_application_alert_config @@ -102,6 +102,7 @@ const ( var ( applicationAlertRuleTypeKeys = []string{ "rule.0.error_rate", + "rule.0.errors", "rule.0.logs", "rule.0.slowness", "rule.0.status_code", @@ -121,12 +122,6 @@ var ( Description: "The aggregation function of the application alert rule", } - applicationAlertSchemaRequiredRuleStableHash = &schema.Schema{ - Type: schema.TypeInt, - Optional: true, - Description: "The stable hash used for the application alert rule", - } - applicationAlertSchemaOptionalRuleAggregation = &schema.Schema{ Type: schema.TypeString, Optional: true, @@ -304,7 +299,20 @@ var ( Schema: map[string]*schema.Schema{ ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaOptionalRuleAggregation, - ApplicationAlertConfigFieldRuleStableHash: applicationAlertSchemaRequiredRuleStableHash, + }, + }, + ExactlyOneOf: applicationAlertRuleTypeKeys, + }, + ApplicationAlertConfigFieldRuleErrors: { + Type: schema.TypeList, + MinItems: 0, + MaxItems: 1, + Optional: true, + Description: "Rule based on the number of errors of the configured alert configuration target", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, + ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaOptionalRuleAggregation, }, }, ExactlyOneOf: applicationAlertRuleTypeKeys, @@ -319,7 +327,6 @@ var ( Schema: map[string]*schema.Schema{ ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaOptionalRuleAggregation, - ApplicationAlertConfigFieldRuleStableHash: applicationAlertSchemaRequiredRuleStableHash, ApplicationAlertConfigFieldRuleLogsLevel: { Type: schema.TypeString, Required: true, @@ -346,7 +353,6 @@ var ( Schema: map[string]*schema.Schema{ ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaRequiredRuleAggregation, - ApplicationAlertConfigFieldRuleStableHash: applicationAlertSchemaRequiredRuleStableHash, }, }, ExactlyOneOf: applicationAlertRuleTypeKeys, @@ -361,7 +367,6 @@ var ( Schema: map[string]*schema.Schema{ ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaOptionalRuleAggregation, - ApplicationAlertConfigFieldRuleStableHash: applicationAlertSchemaRequiredRuleStableHash, ApplicationAlertConfigFieldRuleStatusCodeStart: { Type: schema.TypeInt, Optional: true, @@ -388,7 +393,6 @@ var ( Schema: map[string]*schema.Schema{ ApplicationAlertConfigFieldRuleMetricName: applicationAlertSchemaRuleMetricName, ApplicationAlertConfigFieldRuleAggregation: applicationAlertSchemaOptionalRuleAggregation, - ApplicationAlertConfigFieldRuleStableHash: applicationAlertSchemaRequiredRuleStableHash, }, }, ExactlyOneOf: applicationAlertRuleTypeKeys, @@ -637,10 +641,6 @@ func (r *applicationAlertConfigResource) mapRuleToSchema(config *restapi.Applica ruleAttribute[ApplicationAlertConfigFieldRuleMetricName] = config.Rule.MetricName ruleAttribute[ApplicationAlertConfigFieldRuleAggregation] = config.Rule.Aggregation - if config.Rule.StableHash != nil { - ruleAttribute[ApplicationAlertConfigFieldRuleStableHash] = int(*config.Rule.StableHash) - } - if config.Rule.StatusCodeStart != nil { ruleAttribute[ApplicationAlertConfigFieldRuleStatusCodeStart] = int(*config.Rule.StatusCodeStart) } @@ -815,11 +815,6 @@ func (r *applicationAlertConfigResource) mapRuleConfigFromSchema(config map[stri level := restapi.LogLevel(levelString.(string)) levelPtr = &level } - var stableHashPtr *int32 - if v, ok := config[ApplicationAlertConfigFieldRuleStableHash]; ok { - stableHash := int32(v.(int)) - stableHashPtr = &stableHash - } var statusCodeStartPtr *int32 if v, ok := config[ApplicationAlertConfigFieldRuleStatusCodeStart]; ok { statusCodeStart := int32(v.(int)) @@ -844,7 +839,6 @@ func (r *applicationAlertConfigResource) mapRuleConfigFromSchema(config map[stri AlertType: r.mapAlertTypeFromSchema(alertType), MetricName: config[ApplicationAlertConfigFieldRuleMetricName].(string), Aggregation: restapi.Aggregation(config[ApplicationAlertConfigFieldRuleAggregation].(string)), - StableHash: stableHashPtr, StatusCodeStart: statusCodeStartPtr, StatusCodeEnd: statusCodeEndPtr, Level: levelPtr, diff --git a/instana/restapi/application-alert-rule.go b/instana/restapi/application-alert-rule.go index 0df02d9..f774b25 100644 --- a/instana/restapi/application-alert-rule.go +++ b/instana/restapi/application-alert-rule.go @@ -5,7 +5,6 @@ type ApplicationAlertRule struct { AlertType string `json:"alertType"` MetricName string `json:"metricName"` Aggregation Aggregation `json:"aggregation"` - StableHash *int32 `json:"stableHash"` StatusCodeStart *int32 `json:"statusCodeStart"` StatusCodeEnd *int32 `json:"statusCodeEnd"` diff --git a/openapi.json b/openapi.json index ef4374a..2717f16 100644 --- a/openapi.json +++ b/openapi.json @@ -8,7 +8,7 @@ }, "termsOfService": "https://www.instana.com/terms-of-use/", "title": "Introduction to Instana public APIs", - "version": "1.256.508", + "version": "1.263.856", "x-logo": { "altText": "instana logo", "backgroundColor": "#FAFBFC", @@ -171,14 +171,17 @@ }, { "name": "Synthetic Settings", - "description": "The API endpoints of this group can be used to manage Synthetic Locations and Synthetic Tests. \n\n## Synthetic Location Properties:\n- **id** Unique identifier of the location resource.\n- **label** Friendly name of the location.\n- **description** The description of the location.\n- **locationType** Indicates if the location is public or private.\n- **playbackCapability** The playback capabilities provided by this location resource.\n The playbackCapability object has the following properties: \n - **syntheticType** Different types of synthetic tests that can be executed at this location. \n Possible values are HTTPAction, HTTPScript, BrowserScript (Beta), WebpageAction (Beta), and WebpageScript (Beta). \n The values are corresponding to the syntheticType parameter available in the createSyntheticTest endpoint.\n - **browserType** Different types of supported Web browsers when creating synthetic tests for BrowserScript, WebpageAction and WebpageScript.\n Right now, only Chrome and Firefox are supported. \n- **geoPoint** An object includes the longitude, latitude, country name, and city name properties of a location. \n- **popVersion** PoP's version\n- **customProperties** An object with name/value pairs to provide additional information of the Synthetic location.\n- **createdAt** The location created time, following RFC3339 standard.\n- **modifiedAt** The location modified time, following RFC3339 standard.\n- **observedAt** The timestamp when PoP requests a Synthetic test, following RFC3339 standard.\n\n## Synthetic Test Properties:\n- **id** Unique identifier of the Synthetic test resource.\n- **label** Friendly name of the Synthetic test resource.\n- **description** The description of the Synthetic test.\n- **active** Indicates if the Synthetic test is started or not. The default is true.\n- **applicationId** Unique identifier of the Application Perspective.\n- **configuration** An object which has two properties: syntheticType and the corresponding configuration object:\n - **syntheticType** The type of the Synthetic test. Supported values are HTTPAction, HTTScript, BrowserScript (Beta), WebpageAction (Beta),\n and WebpageScript (Beta). The locations assigned to execute this Synthetic\n test must support this syntheticType, i.e. the location's playbackCapabilities property.\n - **markSyntheticCall** Flag used to control if HTTP calls will be marked as synthetic calls/endpoints in Instana backend, so they can be ignored when calculating service and application KPIs, users can also check \"Hide Synthetic Calls\" checkbox to hide/show them in UI.\n - **retries** An integer type from 0 to 2, 0 by default.\n It indicates how many attempts (max 2) will be allowed\n to get a successful connection (not necessarily a successful result).\n Failures like socket hangups, gateway timeouts, and DNS lookup fails cause retires, but 404's 400's, do not.\n - **retryInterval** The time interval between retries in seconds. The default is 1s, max is 10s.\n - **timeout** The timeout to be used by the PoP playback engines running the test. Values are in integers followed by a time unit (ms, s, m). \n It is the minimum value of test configuration `timeout`, `testFrequency` and `maxTimeout` configured in PoP deployment.\n - If user defined timeout value exceeds the `maxTimeout` or `testFrequency` in test configuration, the timeout value does not take effect \n and PoP playback engines use the smaller one of `maxTimeout` and `testFrequency` as the actual timeout value.\n - If timeout value in test configuration is not provided, the default value is **1m** for HTTPAction and HTTPScript tests. \n BrowserScript, WebpageAction, and WebpageScript tests use the smaller one of `maxTimeout` and `testFrequency` as the actual timeout value.\n - **XXXConfiguration** The configuration corresponding to the syntheticType. Configuration types are HTTPActionConfiguration, HTTPScriptConfiguration,\n BrowserScriptConfiguration (Beta), WebpageActionConfiguration (Beta), and WebpageScriptConfiguration (Beta). \n - **HTTPActionConfiguration** has the following properties:\n - **url** The URL is being tested. It is required.\n - **syntheticType** Its value is HTTPAction. It is required.\n - **operation** An operation being used must be one of GET, HEAD, OPTIONS, PATCH, POST, PUT, and DELETE. By default, it is GET.\n - **headers** An object with header/value pairs\n - **header** The header to be sent in operation. It should not contain the terminating ':' character.\n - **value** The value of the header.\n - **body** The body content to send with the operation.\n - **validationString** An expression to be evaluated.\n - **followRedirect** A boolean type, true by default; to allow redirect.\n - **allowInsecure** A boolean type, true by default; if set to true then allow insecure certificates\n (expired, self-signed, etc).\n - **expectStatus** An integer type, by default, the Synthetic passes for any 2XX status code.\n This forces just one status code to cause a pass, including what would normally be a fail, for example, a 404.\n - **expectJson** An optional object to be used to check against the test response object.\n - **expectMatch** An optional regular expression string to be used to check the test response.\n - **expectExists** An optional list of property labels used to check if they are present in the test response object.\n - **expectNotEmpty** An optional list of property labels used to check if they are present in the test response object with a non-empty value.\n - **HTTPScriptConfiguration** has the following properties:\n - **script** The Javascript content, it is plain text, not base64 encoded. **script** and **scripts** are mutually exclusive.\n - **scripts** Multi script package. **script** and **scripts** are mutually exclusive.\n - **scriptFile** The name of the file to run\n - **bundle** All required js files bundled up into a single zip file with base64 encoded\n - **syntheticType** Its value is HTTPScript. It is required.\n - The API Script Guide, including examples, can be found at: https://www.ibm.com/docs/en/instana-observability/current?topic=monitoring-using-api-scripts\n - **BrowserScriptConfiguration** has the following properties:\n - **script** A Node.js based test script, it is plain text, not base64 encoded. **script** and **scripts** are mutually exclusive.\n - **scripts** Multi script package. **script** and **scripts** are mutually exclusive.\n - **scriptFile** The name of the file to run\n - **bundle** All required js files bundled up into a single zip file with base64 encoded\n - **scriptType** The type of the script, right now, only Basic type is supported. \n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is BrowserScript. It is required.\n - **WebpageActionConfiguration** has the following properties:\n - **url** The URL of the Web page being tested. It is required.\n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is WebpageAction. It is required.\n - **WebpageScriptConfiguration** has the following properties:\n - **script** A Selenium IDE recording script. It is required.\n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is WebpageScript. It is required.\n- **createdAt** The test created time, following RFC3339 standard.\n- **createdBy** The user identifier who created the test resource.\n- **customProperties** An object with name/value pairs to provide additional information of the Synthetic test.\n- **locations** It is an array of the PoP location IDs where the Synthetic tests are located.\n- **modifiedAt** The test last updated time, following RFC3339 standard.\n- **modifiedBy** The user identifier who updated the test resource.\n- **playbackMode** Defines how the Synthetic test should be executed across multiple\n PoPs. This property is optional, and its default value is Simultaneous, and only Simultaneous is supported, i.e.,\n Synthetic tests run at all locations simultaneously. \n- **testFrequency** How often the playback for a Synthetic test is scheduled. The unit of the testFrequency parameter is minute.\n The default is every 15 minutes. The range is from 1 minute to 120 minutes.\n" + "description": "The API endpoints of this group can be used to manage Synthetic Locations, Synthetic Tests and Synthetic Credentials. \n\n## Synthetic Location Properties:\n- **id** Unique identifier of the location resource.\n- **label** Friendly name of the location.\n- **description** The description of the location.\n- **locationType** Indicates if the location is public or private.\n- **playbackCapability** The playback capabilities provided by this location resource.\n The playbackCapability object has the following properties: \n - **syntheticType** Different types of synthetic tests that can be executed at this location. \n Possible values are HTTPAction, HTTPScript, BrowserScript (Beta), WebpageAction (Beta), and WebpageScript (Beta). \n The values are corresponding to the syntheticType parameter available in the createSyntheticTest endpoint.\n - **browserType** Different types of supported Web browsers when creating synthetic tests for BrowserScript, WebpageAction and WebpageScript.\n Right now, only Chrome and Firefox are supported. \n- **geoPoint** An object includes the longitude, latitude, country name, and city name properties of a location. \n- **popVersion** PoP's version\n- **customProperties** An object with name/value pairs to provide additional information of the Synthetic location.\n- **createdAt** The location created time, following RFC3339 standard.\n- **modifiedAt** The location modified time, following RFC3339 standard.\n- **observedAt** The timestamp when PoP requests a Synthetic test, following RFC3339 standard.\n\n## Synthetic Test Properties:\n- **id** Unique identifier of the Synthetic test resource.\n- **label** Friendly name of the Synthetic test resource.\n- **description** The description of the Synthetic test.\n- **active** Indicates if the Synthetic test is started or not. The default is true.\n- **applicationId** Unique identifier of the Application Perspective.\n- **configuration** An object which has two properties: syntheticType and the corresponding configuration object:\n - **syntheticType** The type of the Synthetic test. Supported values are HTTPAction, HTTScript, BrowserScript (Beta), WebpageAction (Beta),\n and WebpageScript (Beta). The locations assigned to execute this Synthetic\n test must support this syntheticType, i.e. the location's playbackCapabilities property.\n - **markSyntheticCall** Flag used to control if HTTP calls will be marked as synthetic calls/endpoints in Instana backend, so they can be ignored when calculating service and application KPIs, users can also check \"Hide Synthetic Calls\" checkbox to hide/show them in UI.\n - **retries** An integer type from 0 to 2, 0 by default.\n It indicates how many attempts (max 2) will be allowed\n to get a successful connection (not necessarily a successful result).\n Failures like socket hangups, gateway timeouts, and DNS lookup fails cause retires, but 404's 400's, do not.\n - **retryInterval** The time interval between retries in seconds. The default is 1s, max is 10s.\n - **timeout** The timeout to be used by the PoP playback engines running the test. Values are in integers followed by a time unit (ms, s, m). \n It is the minimum value of test configuration `timeout`, `testFrequency` and `maxTimeout` configured in PoP deployment.\n - If user defined timeout value exceeds the `maxTimeout` or `testFrequency` in test configuration, the timeout value does not take effect \n and PoP playback engines use the smaller one of `maxTimeout` and `testFrequency` as the actual timeout value.\n - If timeout value in test configuration is not provided, the default value is **1m** for HTTPAction and HTTPScript tests. \n BrowserScript, WebpageAction, and WebpageScript tests use the smaller one of `maxTimeout` and `testFrequency` as the actual timeout value.\n - **XXXConfiguration** The configuration corresponding to the syntheticType. Configuration types are HTTPActionConfiguration, HTTPScriptConfiguration,\n BrowserScriptConfiguration (Beta), WebpageActionConfiguration (Beta), and WebpageScriptConfiguration (Beta). \n - **HTTPActionConfiguration** has the following properties:\n - **url** The URL is being tested. It is required.\n - **syntheticType** Its value is HTTPAction. It is required.\n - **operation** An operation being used must be one of GET, HEAD, OPTIONS, PATCH, POST, PUT, and DELETE. By default, it is GET.\n - **headers** An object with header/value pairs\n - **header** The header to be sent in operation. It should not contain the terminating ':' character.\n - **value** The value of the header.\n - **body** The body content to send with the operation.\n - **validationString** An expression to be evaluated.\n - **followRedirect** A boolean type, true by default; to allow redirect.\n - **allowInsecure** A boolean type, true by default; if set to true then allow insecure certificates\n (expired, self-signed, etc).\n - **expectStatus** An integer type, by default, the Synthetic passes for any 2XX status code.\n This forces just one status code to cause a pass, including what would normally be a fail, for example, a 404.\n - **expectJson** An optional object to be used to check against the test response object.\n - **expectMatch** An optional regular expression string to be used to check the test response.\n - **expectExists** An optional list of property labels used to check if they are present in the test response object.\n - **expectNotEmpty** An optional list of property labels used to check if they are present in the test response object with a non-empty value.\n - **HTTPScriptConfiguration** has the following properties:\n - **script** The Javascript content, it is plain text, not base64 encoded. **script** and **scripts** are mutually exclusive.\n - **scripts** Multi script package. **script** and **scripts** are mutually exclusive.\n - **scriptFile** The name of the file to run\n - **bundle** All required js files bundled up into a single zip file with base64 encoded\n - **syntheticType** Its value is HTTPScript. It is required.\n - The API Script Guide, including examples, can be found at: https://www.ibm.com/docs/en/instana-observability/current?topic=monitoring-using-api-scripts\n - **BrowserScriptConfiguration** has the following properties:\n - **script** A Node.js based test script, it is plain text, not base64 encoded. **script** and **scripts** are mutually exclusive.\n - **scripts** Multi script package. **script** and **scripts** are mutually exclusive.\n - **scriptFile** The name of the file to run\n - **bundle** All required js files bundled up into a single zip file with base64 encoded\n - **scriptType** The type of the script, right now, only Basic type is supported. \n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is BrowserScript. It is required.\n - **WebpageActionConfiguration** has the following properties:\n - **url** The URL of the Web page being tested. It is required.\n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is WebpageAction. It is required.\n - **WebpageScriptConfiguration** has the following properties:\n - **script** A Selenium IDE recording script. It is required.\n - **browser** The type of the browser: chrome or firefox, chrome by default.\n - **recordVideo** A boolean type, false by default.\n - **syntheticType** Its value is WebpageScript. It is required.\n- **createdAt** The test created time, following RFC3339 standard.\n- **createdBy** The user identifier who created the test resource.\n- **customProperties** An object with name/value pairs to provide additional information of the Synthetic test.\n- **locations** It is an array of the PoP location IDs where the Synthetic tests are located.\n- **modifiedAt** The test last updated time, following RFC3339 standard.\n- **modifiedBy** The user identifier who updated the test resource.\n- **playbackMode** Defines how the Synthetic test should be executed across multiple\n PoPs. This property is optional, and its default value is Simultaneous, and only Simultaneous is supported, i.e.,\n Synthetic tests run at all locations simultaneously. \n- **testFrequency** How often the playback for a Synthetic test is scheduled. The unit of the testFrequency parameter is minute.\n The default is every 15 minutes. The range is from 1 minute to 120 minutes.\n\n## Synthetic Credentials:\n\nSynthetic credentials can be used to store passwords and/or secrets used by the Synthetic Tests.\n\nAll Script Tests can use credentials in their body and API Simple Tests can use them on header parameters.\n\nIt is required that the credentials used in the test be created before the test is created or modified.\n\nTests using credentials are validated during test creation and update whether you use the API or UI, as follows:\n\n1. The user Id of the logged in user or API Token being used to create or modify the test must have permission to use credentials. \n Requests to create or update a test referencing credentials without the correct permission will fail with return code `Forbidden`.\n\n2. The credentials or secrets used in the test must exist. \n Requests to create or update a test referencing credentials that do not exist will fail with return code `Bad Request`." }, { "name": "Synthetic Test Playback Results", - "description": "The endpoints of this group retrieve the results for defined Synthetic tests.\n\n**Note on names in TagFilter/TagFilterExpression**: From R243, the name used in a TagFilter or a TagFilterExpression has the format: synthetic.\\.\nIt can be one of the following: synthetic.id (id is the test result id), synthetic.testId,\nsynthetic.testName, synthetic.locationId, synthetic.applicationId, synthetic.serviceId, synthetic.syntheticType,\nsynthetic.locationName, and synthetic.locationLabel. If it is a metric name, then the format is: synthetic.metrics\\.\nFor example, synthetic.metricsResponseTime, synthetic.metricsStatus.\n\nThe names used prior to R243 should be considered as deprecated. They will be accepted temporarily and will be removed in an upcoming release.\n\n## Get Synthetic test playback results \nThe endpoint returns the aggregated Synthetic test result data\n\n### Mandatory Parameters \n\n**testId** An array of the unique identifiers of Synthetic tests\n\n**metrics** A list of metric objects that define which metric should be returned, with the defined aggregation. Each metrics objects consists of minimum two items:\n1. *metric* select a particular metric. This is the list of available metrics for all types of Synthetic Tests: \n synthetic.metricsResponseTime (ms), synthetic.metricsResponseSize (bytes), synthetic.metricsStatusCode (an integer represents an HTTP response code, e.g., 200, 401, 500), synthetic.metricsRequestSize (bytes), \n synthetic.metricsUploadSpeed (bytes per second), synthetic.metricsDownloadSpeed (bytes per second), \n synthetic.metricsRedirectTime (ms), synthetic.metricsRedirectCount, synthetic.metricsConnectCount, synthetic.metricsStatus (an integer, 1-success or 0-failure), and synthetic.tags (list of custom properties and values). \n \n The following metrics are only available for the HTTPAction type Synthetic Tests: synthetic.metricsBlocking (bytes), synthetic.metricsDns (bytes), synthetic.metricsConnect (bytes), synthetic.metricsSsl (bytes), \n synthetic.metricsSending (bytes), synthetic.metricsWaiting (bytes), and synthetic.metricsReceiving (bytes).\n\n The metric synthetic.tags adds the latest list of custom properties to the response.\n\n2. *aggregation* Depending on the selected metric, different aggregations are available e.g., SUM, MEAN, P90 (90th percentile), DISTINCT_COUNT, and MAX. MAX is only allowed for synthetic.tags.\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n```\nThe timeFrame might be adjusted to fit the metric granularity so that there is no partial bucket. For example, if the query timeFrame is 08:02 - 09:02 and the metric granularity is 5 minutes, the timeFrame will be adjusted to 08:05 - 09:00. The adjusted timeFrame will be returned in the response payload. If the query does not have any metric with granularity, a default granularity will be used for adjustment.\n\n### Optional Parameters\n\n**metrics** By default you will get an aggregated metric for the selected timeframe\n\n* *granularity*\n * If it is not set you will get an aggregated value for the selected timeframe\n * If the granularity is set you will get data points with the specified granularity **in seconds**\n * The granularity should not be greater than the `windowSize` (important: `windowSize` is expressed in **milliseconds**)\n * The granularity should not be set too small relative to the `windowSize` to avoid creating an excessively large number of data points (max 600)\n * The granularity values are the same for all metrics\n\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, e.g. \"synthetic.metricsResponseTime\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results.\nIt will be replaced by **tagFilterExpression**.\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\nTo narrow down the result set you have two options to search for a test.\n\n**locationId | applicationId**\n\n* *synthetic.locationId:* filter by locationId\n\n* *synthetic.applicationId:* filter by applicationId\n\n### Defaults\n\n**metrics**\n* *granularity:* 0\n\n**timeFrame**\n```\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n**locationId | applicationId**\n* no filters are applied in the default call\n\n### Sample payload to get a Synthetic test result\n```\n{\n \"testId\": [\"tUmWgvzdo1Q1vpVRpzR5\", \"Pg0Q1UqHRd7OMysohVLd\"],\n \"//comment1\": \"Get test results from last 30 minutes (windowSize), data are aggregated every 10 minutes (granularity)\",\n \"//comment2\": \"The granularity values for responseTime and responseSize must be the same\"\n \"metrics\": [\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 600, \n \"metric\": \"synthetic.metricsResponseTime\"\n },\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 600, \n \"metric\": \"synthetic.metricsResponseSize\"\n }],\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000 \n }\n}\n```\n\n## Get a list of Synthetic test playback results (no aggregation)\n### Mandatory Parameters\n**syntheticMetrics** It is an array of metrics. The available metrics for all types of Synthetic Tests: synthetic.id (a string representing the test result ID), \nsynthetic.metricsResponseTime (ms), synthetic.metricsResponseSize (bytes), synthetic.metricsStatusCode (an integer represents an HTTP response code, e.g., 200, 401, 500), synthetic.metricsRequestSize (bytes),\nsynthetic.metricsUploadSpeed (bytes per second), synthetic.metricsDownloadSpeed (bytes per second),\nsynthetic.metricsRedirectTime (ms), synthetic.metricsRedirectCount, synthetic.metricsConnectCount, synthetic.metricsStatus (an integer, 1-success or 0-failure), and synthetic.tags (list of custom properties and values).\n\nThe following metrics are only available for the HTTPAction type Synthetic Tests: synthetic.metricsBlocking (bytes), synthetic.metricsDns (bytes), synthetic.metricsConnect (bytes), synthetic.metricsSsl (bytes),\nsynthetic.metricsSending (bytes), synthetic.metricsWaiting (bytes), and synthetic.metricsReceiving (bytes).\n\nThe metric synthetic.tags adds the latest list of custom properties to the response.\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n```\n\n### Optional Parameters\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, e.g. \"synthetic.metricsResponseTime\" to order by that value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results. \nIt will be replaced by **tagFilterExpression**.\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with \nlogical operators AND or OR.\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n### Sample payload to get a list of Synthetic test results with tagFilters\n```json\n{\n \"syntheticMetrics\":[\"synthetic.metricsResponseTime\",\"synthetic.metricsResponseSize\"],\n \"order\":{\n \"by\":\"synthetic.metricsResponseTime\",\n \"direction\":\"DESC\"\n },\n \"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.testId\",\n \"operator\":\"EQUALS\"\n }],\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000\n }\n}\n```\n\n### Sample payload to get a list of Synthetic test results with tagFilterExpression\n```json\n{\n \"syntheticMetrics\":[\"synthetic.metricsResponseTime\",\"synthetic.metricsResponseSize\"],\n \"order\":{\n \"by\":\"synthetic.metricsResponseTime\",\n \"direction\":\"DESC\"\n },\n \"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"AND\",\n \"elements\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.testId\",\n \"operator\":\"EQUALS\"\n }, {\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\": \"abcdefgXSJmQsehOWg1S\"\n }]\n },\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000\n }\n}\n```\n\n## Get a list of Synthetic tests with Success Rate and Average Response Time data\nThe endpoint returns a list of Synthetic tests with Success Rate and Average Response Time result data\n\n### Mandatory Parameters\n\n**metrics**\n1. *metric* select a particular metric. Right now, only synthetic.metricsResponseTime (ms) is supported.\n2. *aggregation* MEAN\n3. *granularity* 60\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n\n### Optional Parameters\n\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, \"synthetic.metricsResponseTime\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results. The name of a tagFilter is one of the following: \nsynthetic.syntheticType, synthetic.locationId, and synthetic.applicationId.\nIt will be replaced by **tagFilterExpression**.\n```\n\"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.applicationId\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n```\n\"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"AND\",\n \"elements\":[{\n \"name\": \"synthetic.metricsStatus\", \n \"operator\": \"EQUALS\", \n \"numberValue\": 1\n }, {\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\":\"WnjlKKbgzLDnyGra6PAs\"\n }]\n}\n```\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\nTo narrow down the result set you have three options to search for a test.\n\n**syntheticType | locationId | applicationId**\n\n* *synthetic.syntheticType:* filter by syntheticType, either HTTPAction or HTTPScript\n\n* *synthetic.locationId:* filter by locationId\n\n* *synthetic.applicationId:* filter by applicationId\n\n### Defaults\n\n**syntheticType | locationId | applicationId**\n* no filters are applied in the default call\n\n### Sample payload to get a list of Synthetic tests with SuccessRate and Average Response Time results\n```\n{\n \"metrics\": [\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 60, \n \"metric\": \"synthetic.metricsResponseTime\"\n }],\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 3600000 \n }\n}\n```\n\n## Get a list of Synthetic locations with Last Test Run on (each location) data\nThe endpoint returns a list of Synthetic locations with Last Test Run on (each location) result data\n\n### Mandatory Parameters\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n\n### Optional Parameters\n\n**pagination** if you use pagination you should use the same timeFrame for all of the pages you want to query\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic locations you want to return with one query\n\n**order** You can order the returned items alphanumerically by label, either ascending or descending\n1. *by* Use the metric name, e.g., \"location_name\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n The sorting can be done on the following metrics: location_name, location_label, status, type, total_tests,\n last_test_run, and namespace\n\n**tagFilters** It serves as a filter to narrow down return results. The name of a tagFilter is one of the following: \nsynthetic.locationName, synthetic.locationLabel, and synthetic.locationId.\nIt will be replaced by **tagFilterExpression**.\n```\n\"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.locationId\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n```\n\"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"OR\",\n \"elements\":[{\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\":\"WnjlKKbgzLDnyGra6PAs\"\n }]\n}\n```\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\n### Sample payload to get a list of Synthetic locations with Last Test Run on (each location) data\n```\n{\n \"order\": {\n \t\"by\": \"status\", \n \t\"direction\": \"Desc\"\n },\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 3600000 \n }\n}\n```\n\n## Get Synthetic test playback result detail data\n\n### Query Parameters\n**type** The type of the detailed data. Its value is one of these types: SUBTRANSACTIONS, LOGS, and HAR.\n\n**name** The name of the file to be retrieved, if more than one file available for the same type. Used when the type equals to LOGS or IMAGES\n\n## Download a Synthetic test playback result detail data file\n\n### Query Parameter\n**type** The type of a single compressed file. Its value is one of these types: SUBTRANSACTIONS, LOGS, IMAGES, VIDEOS, and HAR." + "description": "The endpoints of this group retrieve the results for defined Synthetic tests.\n\n**Note on names in TagFilter/TagFilterExpression**: From R243, the name used in a TagFilter or a TagFilterExpression has the format: synthetic.\\.\nIt can be one of the following: synthetic.id (id is the test result id), synthetic.testId,\nsynthetic.testName, synthetic.locationId, synthetic.applicationId, synthetic.serviceId, synthetic.syntheticType,\nsynthetic.locationName, and synthetic.locationLabel. If it is a metric name, then the format is: synthetic.metrics\\.\nFor example, synthetic.metricsResponseTime, synthetic.metricsStatus.\n\nThe names used prior to R243 should be considered as deprecated. They will be accepted temporarily and will be removed in an upcoming release.\n\n## Get Synthetic test playback results \nThe endpoint returns the aggregated Synthetic test result data\n\n### Mandatory Parameters \n\n**testId** An array of the unique identifiers of Synthetic tests\n\n**metrics** A list of metric objects that define which metric should be returned, with the defined aggregation. Each metrics objects consists of minimum two items:\n1. *metric* select a particular metric. This is the list of available metrics for all types of Synthetic Tests: \n synthetic.metricsResponseTime (ms), synthetic.metricsResponseSize (bytes), synthetic.metricsStatusCode (an integer represents an HTTP response code, e.g., 200, 401, 500), synthetic.metricsRequestSize (bytes), \n synthetic.metricsUploadSpeed (bytes per second), synthetic.metricsDownloadSpeed (bytes per second), \n synthetic.metricsRedirectTime (ms), synthetic.metricsRedirectCount, synthetic.metricsConnectCount, synthetic.metricsStatus (an integer, 1-success or 0-failure), and synthetic.tags (list of custom properties and values). \n \n The following metrics are only available for the HTTPAction type Synthetic Tests: synthetic.metricsBlocking (bytes), synthetic.metricsDns (bytes), synthetic.metricsConnect (bytes), synthetic.metricsSsl (bytes), \n synthetic.metricsSending (bytes), synthetic.metricsWaiting (bytes), and synthetic.metricsReceiving (bytes).\n\n The metric synthetic.tags adds the latest list of custom properties to the response.\n\n2. *aggregation* Depending on the selected metric, different aggregations are available e.g., SUM, MEAN, P90 (90th percentile), DISTINCT_COUNT, and MAX. MAX is only allowed for synthetic.tags.\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n```\nThe timeFrame might be adjusted to fit the metric granularity so that there is no partial bucket. For example, if the query timeFrame is 08:02 - 09:02 and the metric granularity is 5 minutes, the timeFrame will be adjusted to 08:05 - 09:00. The adjusted timeFrame will be returned in the response payload. If the query does not have any metric with granularity, a default granularity will be used for adjustment.\n\n### Optional Parameters\n\n**metrics** By default you will get an aggregated metric for the selected timeframe\n\n* *granularity*\n * If it is not set you will get an aggregated value for the selected timeframe\n * If the granularity is set you will get data points with the specified granularity **in seconds**\n * The granularity should not be greater than the `windowSize` (important: `windowSize` is expressed in **milliseconds**)\n * The granularity should not be set too small relative to the `windowSize` to avoid creating an excessively large number of data points (max 600)\n * The granularity values are the same for all metrics\n\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, e.g. \"synthetic.metricsResponseTime\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results.\nIt will be replaced by **tagFilterExpression**.\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\nTo narrow down the result set you have two options to search for a test.\n\n**locationId | applicationId**\n\n* *synthetic.locationId:* filter by locationId\n\n* *synthetic.applicationId:* filter by applicationId\n\n### Defaults\n\n**metrics**\n* *granularity:* 0\n\n**timeFrame**\n```\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n**locationId | applicationId**\n* no filters are applied in the default call\n\n### Sample payload to get a Synthetic test result\n```\n{\n \"testId\": [\"tUmWgvzdo1Q1vpVRpzR5\", \"Pg0Q1UqHRd7OMysohVLd\"],\n \"//comment1\": \"Get test results from last 30 minutes (windowSize), data are aggregated every 10 minutes (granularity)\",\n \"//comment2\": \"The granularity values for responseTime and responseSize must be the same\"\n \"metrics\": [\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 600, \n \"metric\": \"synthetic.metricsResponseTime\"\n },\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 600, \n \"metric\": \"synthetic.metricsResponseSize\"\n }],\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000 \n }\n}\n```\n\n## Get a list of Synthetic test playback results (no aggregation)\n### Mandatory Parameters\n**syntheticMetrics** It is an array of metrics. The available metrics for all types of Synthetic Tests: synthetic.id (a string representing the test result ID), \nsynthetic.metricsResponseTime (ms), synthetic.metricsResponseSize (bytes), synthetic.metricsStatusCode (an integer represents an HTTP response code, e.g., 200, 401, 500), synthetic.metricsRequestSize (bytes),\nsynthetic.metricsUploadSpeed (bytes per second), synthetic.metricsDownloadSpeed (bytes per second),\nsynthetic.metricsRedirectTime (ms), synthetic.metricsRedirectCount, synthetic.metricsConnectCount, synthetic.metricsStatus (an integer, 1-success or 0-failure), and synthetic.tags (list of custom properties and values).\n\nThe following metrics are only available for the HTTPAction type Synthetic Tests: synthetic.metricsBlocking (bytes), synthetic.metricsDns (bytes), synthetic.metricsConnect (bytes), synthetic.metricsSsl (bytes),\nsynthetic.metricsSending (bytes), synthetic.metricsWaiting (bytes), and synthetic.metricsReceiving (bytes).\n\nThe metric synthetic.tags adds the latest list of custom properties to the response.\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n```\n\n### Optional Parameters\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, e.g. \"synthetic.metricsResponseTime\" to order by that value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results. \nIt will be replaced by **tagFilterExpression**.\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with \nlogical operators AND or OR.\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n### Sample payload to get a list of Synthetic test results with tagFilters\n```json\n{\n \"syntheticMetrics\":[\"synthetic.metricsResponseTime\",\"synthetic.metricsResponseSize\"],\n \"order\":{\n \"by\":\"synthetic.metricsResponseTime\",\n \"direction\":\"DESC\"\n },\n \"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.testId\",\n \"operator\":\"EQUALS\"\n }],\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000\n }\n}\n```\n\n### Sample payload to get a list of Synthetic test results with tagFilterExpression\n```json\n{\n \"syntheticMetrics\":[\"synthetic.metricsResponseTime\",\"synthetic.metricsResponseSize\"],\n \"order\":{\n \"by\":\"synthetic.metricsResponseTime\",\n \"direction\":\"DESC\"\n },\n \"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"AND\",\n \"elements\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.testId\",\n \"operator\":\"EQUALS\"\n }, {\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\": \"abcdefgXSJmQsehOWg1S\"\n }]\n },\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 1800000\n }\n}\n```\n\n## Get a list of Synthetic tests with Success Rate and Average Response Time data\nThe endpoint returns a list of Synthetic tests with Success Rate and Average Response Time result data\n\n### Mandatory Parameters\n\n**metrics**\n1. *metric* select a particular metric. Right now, only synthetic.metricsResponseTime (ms) is supported.\n2. *aggregation* MEAN\n3. *granularity* 60\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n\n### Optional Parameters\n\n**pagination** if you use pagination you most probably want to fix the timeFrame for the retrieved metrics\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic test results you want to return with one query\n\n**order** You can order the returned items alphanumerical by label, either ascending or descending\n1. *by* Use the metric name, \"synthetic.metricsResponseTime\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n**tagFilters** It serves as a filter to narrow down return results. The name of a tagFilter is one of the following: \nsynthetic.syntheticType, synthetic.locationId, and synthetic.applicationId.\nIt will be replaced by **tagFilterExpression**.\n```\n\"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.applicationId\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n```\n\"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"AND\",\n \"elements\":[{\n \"name\": \"synthetic.metricsStatus\", \n \"operator\": \"EQUALS\", \n \"numberValue\": 1\n }, {\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\":\"WnjlKKbgzLDnyGra6PAs\"\n }]\n}\n```\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\nEither tagFilters or tagFilterExpression can specify a custom property by its key and value.\n```\n\"tagFilters\":[{\n \"name\":\"synthetic.tags\",\n \"key\":\"location\",\n \"value\":\"Denver\",\n \"operator\":\"EQUALS\"\n}]\n```\n\nTo narrow down the result set you have three options to search for a test.\n\n**syntheticType | locationId | applicationId**\n\n* *synthetic.syntheticType:* filter by syntheticType, either HTTPAction or HTTPScript\n\n* *synthetic.locationId:* filter by locationId\n\n* *synthetic.applicationId:* filter by applicationId\n\n\nTests can also be filtered by their active state (`true`/`false`) using the custom property label `synthetic.testActive`.\n```\n\"tagFilters\": [{ \n \"name\":\"synthetic.testActive\", \n \"operator\":\"EQUALS\",\n \"booleanValue\": false \n}]\n```\n\n### Defaults\n\n**syntheticType | locationId | applicationId**\n* no filters are applied in the default call\n\n### Sample payload to get a list of active Synthetic tests with SuccessRate and Average Response Time results\n```\n{\n \"metrics\": [\n {\n \"aggregation\": \"MEAN\",\n \"granularity\": 60, \n \"metric\": \"synthetic.metricsResponseTime\"\n }],\n \"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"AND\",\n \"elements\":[{\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\": \"abcdefgXSJmQsehOWg1S\"\n }, {\n \"name\": \"synthetic.testActive\",\n \"operator\": \"EQUALS\",\n \"booleanValue\": true\n }]\n },\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 3600000 \n }\n}\n```\n\n## Get a list of Synthetic locations with Last Test Run on (each location) data\nThe endpoint returns a list of Synthetic locations with Last Test Run on (each location) result data\n\n### Mandatory Parameters\n\n**timeFrame** As in our UI you can specify the timeframe for metrics retrieval.\n```\n windowSize to\n (ms) (unix-timestamp)\n<----------------------|\n\n\"timeFrame\": {\n\t\"windowSize\": 60000,\n\t\"to\": {current timestamp}\n}\n```\n\n### Optional Parameters\n\n**pagination** if you use pagination you should use the same timeFrame for all of the pages you want to query\n1. *page* select the page number you want to retrieve\n2. *pageSize* set the number of Synthetic locations you want to return with one query\n\n**order** You can order the returned items alphanumerically by label, either ascending or descending\n1. *by* Use the metric name, e.g., \"location_name\", to order by its value\n2. *direction* either ascending (ASC) or descending (DESC)\n\n The sorting can be done on the following metrics: location_name, location_label, status, type, total_tests,\n last_test_run, and namespace\n\n**tagFilters** It serves as a filter to narrow down return results. The name of a tagFilter is one of the following: \nsynthetic.locationName, synthetic.locationLabel, and synthetic.locationId.\nIt will be replaced by **tagFilterExpression**.\n```\n\"tagFilters\":[{\n \"stringValue\":\"hYziqsaXSJmQsehOWg1S\",\n \"name\":\"synthetic.locationId\",\n \"operator\":\"EQUALS\"\n}]\n```\n\n**tagFilterExpression** It serves as a filter to narrow down return results. Its type can be either EXPRESSION or TAG_FILTER with\nlogical operators AND or OR.\n```\n\"tagFilterExpression\": { \n \"type\":\"EXPRESSION\",\n \"logicalOperator\":\"OR\",\n \"elements\":[{\n \"name\": \"synthetic.locationId\", \n \"operator\": \"EQUALS\", \n \"stringValue\":\"WnjlKKbgzLDnyGra6PAs\"\n }]\n}\n```\n\nA payload only needs either tagFilters or tagFilterExpression as a filter, not both.\n\n### Sample payload to get a list of Synthetic locations with Last Test Run on (each location) data\n```\n{\n \"order\": {\n \t\"by\": \"status\", \n \t\"direction\": \"Desc\"\n },\n \"timeFrame\": {\n \"to\": 0,\n \"windowSize\": 3600000 \n }\n}\n```\n\n## Get Synthetic test playback result detail data\n\n### Query Parameters\n**type** The type of the detailed data. Its value is one of these types: SUBTRANSACTIONS, LOGS, and HAR.\n\n**name** The name of the file to be retrieved, if more than one file available for the same type. Used when the type equals to LOGS or IMAGES\n\n## Download a Synthetic test playback result detail data file\n\n### Query Parameter\n**type** The type of a single compressed file. Its value is one of these types: SUBTRANSACTIONS, LOGS, IMAGES, VIDEOS, and HAR." }, { "name": "Automation Settings" + }, + { + "name": "Authentication" } ], "paths": { @@ -1171,7 +1174,8 @@ "SMART_ALERTS_CUSTOM_PAYLOAD", "SLI_MANAGEMENT", "APPLICATION_CONFIG", - "APPLICATION_CONFIG_BLUEPRINT" + "APPLICATION_CONFIG_BLUEPRINT", + "MAINTENANCE_WINDOWS" ], "example": null } @@ -1317,7 +1321,8 @@ "SMART_ALERTS_CUSTOM_PAYLOAD", "SLI_MANAGEMENT", "APPLICATION_CONFIG", - "APPLICATION_CONFIG_BLUEPRINT" + "APPLICATION_CONFIG_BLUEPRINT", + "MAINTENANCE_WINDOWS" ], "example": null } @@ -3973,7 +3978,7 @@ "tags": [ "Events" ], - "description": "This endpoint retrieves all available events for the requested timeframe.\n\n### Query Parameters:\n\n- **to:** The end of the requested timeframe as a Unix timestamp. The current service time is used as a default if not provided. Please note that it is recommended to fetch historical events with a delay using a `to` timestamp in the past due to eventual consistency. It can take up to **2 minutes** in some cases until an event update is reflected in the results.\n- **windowSize:** The size of the requested timeframe in milliseconds relative to `to`. If neither `windowSize` nor `from` is provided, then a default windowSize of *10 minutes* is used.\n- **from:** As an alternative to defining the `windowSize`, the `from` query parameter can be used, which spans the timeframe in range `[from, to)`.\n- **excludeTriggeredBefore:** Whether to exclude events that have been triggered before the requested timeframe in order to enable searching for events that have started within the given timeframe, excluding events that are previously active already. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using tumbling windows, when you only care about new events.\nThis option is more restrictive than `filterEventUpdates` and does not inform about event state updates that got `CLOSED` in the timeframe of the query if not also the start time of the event is within that query timeframe.\n- **filterEventUpdates:** Filters results to event updates only. This means that an event is only included when its event state changed in the given query timeframe. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using a tumbling windows, when you care about event state updates.\n- **includeAgentMonitoringIssues:** Optional flag to indicate whether to include Agent Monitoring Issues. The default is `false`.\n- **includeKubernetesInfoEvents:** Optional flag to indicate whether to include Kubernetes Info Events. The default is `false`.\n\n### Examples\n\nFetch all events that have been opened within the last 30 minutes.\n\n```bash\ncurl --request GET 'https:///api/events?windowSize=1800000&excludeTriggeredBefore=true' \\\n--header 'Authorization: apiToken '\n```\n\nFetch all events that have been opened or closed within the last minute, using a fetch delay of 120 seconds.\n\n```bash\nTO_MILLIS=$((($(date +%s) - 120) * 1000)) curl --request GET \"https:///api/events?windowSize=60000&to=$TO_MILLIS&filterEventUpdates=true\" \\\n--header 'Authorization: apiToken '\n```\n" + "description": "This endpoint retrieves all available events for the requested timeframe.\n\n### Query Parameters:\n\n- **to:** The end of the requested timeframe as a Unix timestamp. The current service time is used as a default if not provided. Please note that it is recommended to fetch historical events with a delay using a `to` timestamp in the past due to eventual consistency. It can take up to **2 minutes** in some cases until an event update is reflected in the results.\n- **windowSize:** The size of the requested timeframe in milliseconds relative to `to`. If neither `windowSize` nor `from` is provided, then a default windowSize of *10 minutes* is used.\n- **from:** As an alternative to defining the `windowSize`, the `from` query parameter can be used, which spans the timeframe in range `[from, to)`.\n- **excludeTriggeredBefore:** Whether to exclude events that have been triggered before the requested timeframe in order to enable searching for events that have started within the given timeframe, excluding events that are previously active already. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using tumbling windows, when you only care about new events.\nThis option is more restrictive than `filterEventUpdates` and does not inform about event state updates that got `CLOSED` in the timeframe of the query if not also the start time of the event is within that query timeframe.\n- **filterEventUpdates:** Filters results to event updates only. This means that an event is only included when its event state changed in the given query timeframe. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using a tumbling windows, when you care about event state updates.\n\n### Deprecated Parameters\n\n- **includeAgentMonitoringIssues:** Optional flag to indicate whether to include Agent Monitoring Issues. The default is `false`.\n- **includeKubernetesInfoEvents:** Optional flag to indicate whether to include Kubernetes Info Events. The default is `false`.\n\n### Examples\n\nFetch all events that have been opened within the last 30 minutes.\n\n```bash\ncurl --request GET 'https:///api/events?windowSize=1800000&excludeTriggeredBefore=true' \\\n--header 'Authorization: apiToken '\n```\n\nFetch all events that have been opened or closed within the last minute, using a fetch delay of 120 seconds.\n\n```bash\nTO_MILLIS=$((($(date +%s) - 120) * 1000)) curl --request GET \"https:///api/events?windowSize=60000&to=$TO_MILLIS&filterEventUpdates=true\" \\\n--header 'Authorization: apiToken '\n```\n" }, "post": { "operationId": "getEventsByIds", @@ -4021,6 +4026,160 @@ "description": "This endpoint retrieves events given a set of IDs. Only actually existing event IDs are respected in the result set.\n\n### Mandatory Parameters:\n\n- **eventIds:** The set of IDs of the events to fetch." } }, + "/api/events/agent-monitoring-events": { + "get": { + "operationId": "agentMonitoringEvents", + "parameters": [ + { + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "from", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "excludeTriggeredBefore", + "schema": { + "type": "boolean", + "example": null + } + }, + { + "in": "query", + "name": "filterEventUpdates", + "schema": { + "type": "boolean", + "example": null + } + } + ], + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/EventResult" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get all agent monitoring events", + "tags": [ + "Events" + ], + "description": "This endpoint retrieves all agent monitoring events for the requested timeframe.\n\n### Query Parameters:\n\n- **to:** The end of the requested timeframe as a Unix timestamp. The current service time is used as a default if not provided. Please note that it is recommended to fetch historical events with a delay using a `to` timestamp in the past due to eventual consistency. It can take up to **2 minutes** in some cases until an event update is reflected in the results.\n- **windowSize:** The size of the requested timeframe in milliseconds relative to `to`. If neither `windowSize` nor `from` is provided, then a default windowSize of *10 minutes* is used.\n- **from:** As an alternative to defining the `windowSize`, the `from` query parameter can be used, which spans the timeframe in range `[from, to)`.\n- **excludeTriggeredBefore:** Whether to exclude events that have been triggered before the requested timeframe in order to enable searching for events that have started within the given timeframe, excluding events that are previously active already. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using tumbling windows, when you only care about new events.\nThis option is more restrictive than `filterEventUpdates` and does not inform about event state updates that got `CLOSED` in the timeframe of the query if not also the start time of the event is within that query timeframe.\n- **filterEventUpdates:** Filters results to event updates only. This means that an event is only included when its event state changed in the given query timeframe. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using a tumbling windows, when you care about event state updates.\n\n" + } + }, + "/api/events/kubernetes-info-events": { + "get": { + "operationId": "kubernetesInfoEvents", + "parameters": [ + { + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "from", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "excludeTriggeredBefore", + "schema": { + "type": "boolean", + "example": null + } + }, + { + "in": "query", + "name": "filterEventUpdates", + "schema": { + "type": "boolean", + "example": null + } + } + ], + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/EventResult" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get all kubernetes info events", + "tags": [ + "Events" + ], + "description": "This endpoint retrieves all kubernetes info events for the requested timeframe.\n\n### Query Parameters:\n\n- **to:** The end of the requested timeframe as a Unix timestamp. The current service time is used as a default if not provided. Please note that it is recommended to fetch historical events with a delay using a `to` timestamp in the past due to eventual consistency. It can take up to **2 minutes** in some cases until an event update is reflected in the results.\n- **windowSize:** The size of the requested timeframe in milliseconds relative to `to`. If neither `windowSize` nor `from` is provided, then a default windowSize of *10 minutes* is used.\n- **from:** As an alternative to defining the `windowSize`, the `from` query parameter can be used, which spans the timeframe in range `[from, to)`.\n- **excludeTriggeredBefore:** Whether to exclude events that have been triggered before the requested timeframe in order to enable searching for events that have started within the given timeframe, excluding events that are previously active already. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using tumbling windows, when you only care about new events.\nThis option is more restrictive than `filterEventUpdates` and does not inform about event state updates that got `CLOSED` in the timeframe of the query if not also the start time of the event is within that query timeframe.\n- **filterEventUpdates:** Filters results to event updates only. This means that an event is only included when its event state changed in the given query timeframe. This is useful for 3rd party integrations that fetch events from Instana with a scheduled batch job in a fixed interval using a tumbling windows, when you care about event state updates.\n\n" + } + }, "/api/events/settings/alertingChannels": { "get": { "operationId": "getAlertingChannels", @@ -6479,19 +6638,11 @@ ] } }, - "/api/events/settings/mobile-app-alert-configs": { + "/api/events/settings/infra-alert-configs": { "get": { "description": "Configs are sorted descending by their created date.", - "operationId": "findActiveMobileAppAlertConfigs", + "operationId": "findActiveInfraAlertConfigs", "parameters": [ - { - "in": "query", - "name": "mobileAppId", - "schema": { - "type": "string", - "example": null - } - }, { "in": "query", "name": "alertIds", @@ -6516,25 +6667,32 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/WithMetadata" + "$ref": "#/components/schemas/InfraAlertConfigWithMetadata" } } } } } }, - "summary": "All Mobile App Alert Configs", + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "All Infra Alert Configs", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] }, "post": { - "operationId": "createMobileAppAlertConfig", + "operationId": "createInfraAlertConfig", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppAlertConfig" + "$ref": "#/components/schemas/InfraAlertConfig" } } }, @@ -6545,21 +6703,28 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WithMetadata" + "$ref": "#/components/schemas/InfraAlertConfigWithMetadata" } } } } }, - "summary": "Create Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Create Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/mobile-app-alert-configs/{id}": { + "/api/events/settings/infra-alert-configs/{id}": { "delete": { - "operationId": "deleteMobileAppAlertConfig", + "operationId": "deleteInfraAlertConfig", "parameters": [ { "in": "path", @@ -6579,14 +6744,21 @@ "description": "default response" } }, - "summary": "Delete Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Delete Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] }, "get": { - "description": "Find a Mobile App Alert Config by ID. This will deliver deleted configs too.", - "operationId": "findMobileAppAlertConfig", + "description": "Find a Infra Alert Config by ID. This will deliver deleted configs too.", + "operationId": "findInfraAlertConfig", "parameters": [ { "in": "path", @@ -6612,19 +6784,26 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WithMetadata" + "$ref": "#/components/schemas/InfraAlertConfigWithMetadata" } } } } }, - "summary": "Get Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] }, "post": { - "operationId": "updateMobileAppAlertConfig", + "operationId": "updateInfraAlertConfig", "parameters": [ { "in": "path", @@ -6640,7 +6819,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppAlertConfig" + "$ref": "#/components/schemas/InfraAlertConfig" } } }, @@ -6651,31 +6830,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WithMetadata" + "$ref": "#/components/schemas/InfraAlertConfigWithMetadata" } } }, - "description": "Mobile App Smart Alert successfully updated" + "description": "Infra Smart Alert successfully updated" }, "204": { - "description": "Mobile App Smart Alert did not change" - }, - "400": { - "description": "Invalid Mobile App ID provided" - }, - "500": { - "description": "Internal error" + "description": "Infra Smart Alert did not change" } }, - "summary": "Update Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Update Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/mobile-app-alert-configs/{id}/disable": { + "/api/events/settings/infra-alert-configs/{id}/disable": { "put": { - "operationId": "disableMobileAppAlertConfig", + "operationId": "disableInfraAlertConfig", "parameters": [ { "in": "path", @@ -6706,15 +6886,22 @@ "description": "default response" } }, - "summary": "Disable Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Disable Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/mobile-app-alert-configs/{id}/enable": { + "/api/events/settings/infra-alert-configs/{id}/enable": { "put": { - "operationId": "enableMobileAppAlertConfig", + "operationId": "enableInfraAlertConfig", "parameters": [ { "in": "path", @@ -6745,15 +6932,22 @@ "description": "default response" } }, - "summary": "Enable Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Enable Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/mobile-app-alert-configs/{id}/restore/{created}": { + "/api/events/settings/infra-alert-configs/{id}/restore/{created}": { "put": { - "operationId": "restoreMobileAppAlertConfig", + "operationId": "restoreInfraAlertConfig", "parameters": [ { "in": "path", @@ -6794,45 +6988,23 @@ "description": "default response" } }, - "summary": "Restore Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "CanConfigureGlobalAlertConfigs" + ] + } + ], + "summary": "Restore Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/mobile-app-alert-configs/{id}/update-baseline": { - "post": { - "description": "Recalculate and update the baseline given the id of the config. The LastUpdated field of the config is changed to the current time.", - "operationId": "updateMobileAppHistoricBaseline", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], - "responses": { - "default": { - "content": { - "application/json": {} - }, - "description": "default response" - } - }, - "summary": "Recalculate a Static Seasonal Threshold", - "tags": [ - "Event Settings" - ] - } - }, - "/api/events/settings/mobile-app-alert-configs/{id}/versions": { + "/api/events/settings/infra-alert-configs/{id}/versions": { "get": { - "description": "Find all versions of a Mobile App Alert Config by ID. This will deliver deleted configs too. Configs are sorted descending by their created date.", - "operationId": "findMobileAppAlertConfigVersions", + "description": "Find all versions of a Infra Alert Config by ID. This will deliver deleted configs too. Configs are sorted descending by their created date.", + "operationId": "findInfraAlertConfigVersions", "parameters": [ { "in": "path", @@ -6859,20 +7031,27 @@ } } }, - "summary": "Get versions of Mobile App Alert Config", + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get versions of Infra Alert Config", "tags": [ - "Event Settings" + "Infrastructure Alert Configuration" ] } }, - "/api/events/settings/website-alert-configs": { + "/api/events/settings/mobile-app-alert-configs": { "get": { "description": "Configs are sorted descending by their created date.", - "operationId": "findActiveWebsiteAlertConfigs", + "operationId": "findActiveMobileAppAlertConfigs", "parameters": [ { "in": "query", - "name": "websiteId", + "name": "mobileAppId", "schema": { "type": "string", "example": null @@ -6902,32 +7081,25 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + "$ref": "#/components/schemas/WithMetadata" } } } } } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "All Website Alert Configs", + "summary": "All Mobile App Alert Configs", "tags": [ "Event Settings" ] }, "post": { - "operationId": "createWebsiteAlertConfig", + "operationId": "createMobileAppAlertConfig", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteAlertConfig" + "$ref": "#/components/schemas/MobileAppAlertConfig" } } }, @@ -6938,29 +7110,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + "$ref": "#/components/schemas/WithMetadata" } } } } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Create Website Alert Config", + "summary": "Create Mobile App Alert Config", "tags": [ "Event Settings" - ], - "description": "This API endpoint creates the Website Alert Configuration.\n\n## Mandatory Parameters:\n\n- **name:** Name for the website alert configuration.\n\n- **description:** Description for the website alert configuration.\n\n- **severity:** The severity of the alert when triggered, which is either `5` (Warning), or `10` (Critical).\n\n- **triggering:** Optional flag to indicate whether also an Incident is triggered or not.\n\n- **websiteId:** Unique ID of the website.\n\n- **tagFilterExpression:** Boolean expression of tag filters to define the scope of relevant website beacons.\n\n- **granularity:** The evaluation granularity used for detection of violations of the defined threshold. In other words, it defines the size of the tumbling window used.\n\n- **rule:** Indicates the type of rule this alert configuration is about.\n\n- **threshold:** Indicates the type of threshold this alert rule is evaluated on.\n\n- **timeThreshold:** Indicates the type of violation of the defined threshold.\n\n- **alertChannelIds:** List of IDs of alert channels defined in Instana.\n" + ] } }, - "/api/events/settings/website-alert-configs/{id}": { + "/api/events/settings/mobile-app-alert-configs/{id}": { "delete": { - "operationId": "deleteWebsiteAlertConfig", + "operationId": "deleteMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -6980,21 +7144,14 @@ "description": "default response" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Delete Website Alert Config", + "summary": "Delete Mobile App Alert Config", "tags": [ "Event Settings" ] }, "get": { - "description": "Find a Website Alert Config by ID. This will deliver deleted configs too.", - "operationId": "findWebsiteAlertConfig", + "description": "Find a Mobile App Alert Config by ID. This will deliver deleted configs too.", + "operationId": "findMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -7020,26 +7177,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + "$ref": "#/components/schemas/WithMetadata" } } } } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Get Website Alert Config", + "summary": "Get Mobile App Alert Config", "tags": [ "Event Settings" ] }, "post": { - "operationId": "updateWebsiteAlertConfig", + "operationId": "updateMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -7055,7 +7205,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteAlertConfig" + "$ref": "#/components/schemas/MobileAppAlertConfig" } } }, @@ -7066,39 +7216,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + "$ref": "#/components/schemas/WithMetadata" } } }, - "description": "Website Smart Alert successfully updated" + "description": "Mobile App Smart Alert successfully updated" }, "204": { - "description": "Website Smart Alert did not change" + "description": "Mobile App Smart Alert did not change" }, "400": { - "description": "Invalid Website ID provided" + "description": "Invalid Mobile App ID provided" }, "500": { "description": "Internal error" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Update Website Alert Config", + "summary": "Update Mobile App Alert Config", "tags": [ "Event Settings" - ], - "description": "This API endpoint updates the Website Alert Configuration.\n\n## Mandatory Parameters:\n\n- **id:** ID of the website alert config which needs to be updated.\n\n- **name:** Name for the website alert configuration.\n\n- **description:** Description for the website alert configuration.\n\n- **severity:** The severity of the alert when triggered, which is either `5` (Warning), or `10` (Critical).\n\n- **triggering:** Optional flag to indicate whether also an Incident is triggered or not.\n\n- **websiteId:** Unique ID of the website.\n\n- **tagFilterExpression:** Boolean expression of tag filters to define the scope of relevant website beacons.\n\n- **granularity:** The evaluation granularity used for detection of violations of the defined threshold. In other words, it defines the size of the tumbling window used.\n\n- **rule:** Indicates the type of rule this alert configuration is about.\n\n- **threshold:** Indicates the type of threshold this alert rule is evaluated on.\n\n- **timeThreshold:** Indicates the type of violation of the defined threshold.\n\n- **alertChannelIds:** List of IDs of alert channels defined in Instana.\n" + ] } }, - "/api/events/settings/website-alert-configs/{id}/disable": { + "/api/events/settings/mobile-app-alert-configs/{id}/disable": { "put": { - "operationId": "disableWebsiteAlertConfig", + "operationId": "disableMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -7129,22 +7271,15 @@ "description": "default response" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Disable Website Alert Config", + "summary": "Disable Mobile App Alert Config", "tags": [ "Event Settings" ] } }, - "/api/events/settings/website-alert-configs/{id}/enable": { + "/api/events/settings/mobile-app-alert-configs/{id}/enable": { "put": { - "operationId": "enableWebsiteAlertConfig", + "operationId": "enableMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -7175,22 +7310,15 @@ "description": "default response" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Enable Website Alert Config", + "summary": "Enable Mobile App Alert Config", "tags": [ "Event Settings" ] } }, - "/api/events/settings/website-alert-configs/{id}/restore/{created}": { + "/api/events/settings/mobile-app-alert-configs/{id}/restore/{created}": { "put": { - "operationId": "restoreWebsiteAlertConfig", + "operationId": "restoreMobileAppAlertConfig", "parameters": [ { "in": "path", @@ -7231,23 +7359,16 @@ "description": "default response" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Restore Website Alert Config", + "summary": "Restore Mobile App Alert Config", "tags": [ "Event Settings" ] } }, - "/api/events/settings/website-alert-configs/{id}/update-baseline": { + "/api/events/settings/mobile-app-alert-configs/{id}/update-baseline": { "post": { "description": "Recalculate and update the baseline given the id of the config. The LastUpdated field of the config is changed to the current time.", - "operationId": "updateWebsiteHistoricBaseline", + "operationId": "updateMobileAppHistoricBaseline", "parameters": [ { "in": "path", @@ -7267,23 +7388,16 @@ "description": "default response" } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], "summary": "Recalculate a Static Seasonal Threshold", "tags": [ "Event Settings" ] } }, - "/api/events/settings/website-alert-configs/{id}/versions": { + "/api/events/settings/mobile-app-alert-configs/{id}/versions": { "get": { - "description": "Find all versions of a Website Alert Config by ID. This will deliver deleted configs too. Configs are sorted descending by their created date.", - "operationId": "findWebsiteAlertConfigVersions", + "description": "Find all versions of a Mobile App Alert Config by ID. This will deliver deleted configs too. Configs are sorted descending by their created date.", + "operationId": "findMobileAppAlertConfigVersions", "parameters": [ { "in": "path", @@ -7310,31 +7424,39 @@ } } }, - "security": [ - { - "ApiKeyAuth": [ - "CanConfigureCustomAlerts" - ] - } - ], - "summary": "Get versions of Website Alert Config", + "summary": "Get versions of Mobile App Alert Config", "tags": [ "Event Settings" ] } }, - "/api/events/{eventId}": { + "/api/events/settings/website-alert-configs": { "get": { - "operationId": "getEvent", + "description": "Configs are sorted descending by their created date.", + "operationId": "findActiveWebsiteAlertConfigs", "parameters": [ { - "in": "path", - "name": "eventId", - "required": true, + "in": "query", + "name": "websiteId", "schema": { "type": "string", "example": null } + }, + { + "in": "query", + "name": "alertIds", + "schema": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "maxItems": 1000, + "minItems": 0, + "uniqueItems": true + } } ], "responses": { @@ -7342,7 +7464,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EventResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + } } } } @@ -7351,71 +7477,33 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "CanConfigureCustomAlerts" ] } ], - "summary": "Get a particular event", + "summary": "All Website Alert Configs", "tags": [ - "Events" - ], - "description": "This endpoint retrieves an event given its ID.\n\n### Path Parameters:\n\n- **eventId:** The ID of the event to fetch." - } - }, - "/api/host-agent": { - "get": { - "operationId": "searchHostAgents", - "parameters": [ - { - "in": "query", - "name": "query", - "schema": { - "type": "string", - "example": null + "Event Settings" + ] + }, + "post": { + "operationId": "createWebsiteAlertConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteAlertConfig" + } } }, - { - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "windowSize", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "size", - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - }, - { - "in": "query", - "name": "offline", - "schema": { - "type": "boolean", - "example": null - } - } - ], + "required": true + }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SnapshotResult" + "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" } } } @@ -7424,60 +7512,106 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "CanConfigureCustomAlerts" ] } ], - "summary": "Query host agent snapshots", + "summary": "Create Website Alert Config", "tags": [ - "Host Agent" - ] + "Event Settings" + ], + "description": "This API endpoint creates the Website Alert Configuration.\n\n## Mandatory Parameters:\n\n- **name:** Name for the website alert configuration.\n\n- **description:** Description for the website alert configuration.\n\n- **severity:** The severity of the alert when triggered, which is either `5` (Warning), or `10` (Critical).\n\n- **triggering:** Optional flag to indicate whether also an Incident is triggered or not.\n\n- **websiteId:** Unique ID of the website.\n\n- **tagFilterExpression:** Boolean expression of tag filters to define the scope of relevant website beacons.\n\n- **granularity:** The evaluation granularity used for detection of violations of the defined threshold. In other words, it defines the size of the tumbling window used.\n\n- **rule:** Indicates the type of rule this alert configuration is about.\n\n- **threshold:** Indicates the type of threshold this alert rule is evaluated on.\n\n- **timeThreshold:** Indicates the type of violation of the defined threshold.\n\n- **alertChannelIds:** List of IDs of alert channels defined in Instana.\n" } }, - "/api/host-agent/configuration": { - "post": { - "operationId": "updateConfigurationByQuery", + "/api/events/settings/website-alert-configs/{id}": { + "delete": { + "operationId": "deleteWebsiteAlertConfig", "parameters": [ { - "in": "query", - "name": "query", + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string", "example": null } - }, + } + ], + "responses": { + "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ { - "in": "query", - "name": "to", + "ApiKeyAuth": [ + "CanConfigureCustomAlerts" + ] + } + ], + "summary": "Delete Website Alert Config", + "tags": [ + "Event Settings" + ] + }, + "get": { + "description": "Find a Website Alert Config by ID. This will deliver deleted configs too.", + "operationId": "findWebsiteAlertConfig", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "integer", - "format": "int64", + "type": "string", "example": null } }, { "in": "query", - "name": "windowSize", + "name": "validOn", "schema": { "type": "integer", "format": "int64", "example": null } - }, - { - "in": "query", - "name": "size", - "schema": { - "type": "integer", - "format": "int32", - "example": null + } + ], + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + } + } } - }, + } + }, + "security": [ { - "in": "query", - "name": "offline", + "ApiKeyAuth": [ + "CanConfigureCustomAlerts" + ] + } + ], + "summary": "Get Website Alert Config", + "tags": [ + "Event Settings" + ] + }, + "post": { + "operationId": "updateWebsiteAlertConfig", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, "schema": { - "type": "boolean", + "type": "string", "example": null } } @@ -7486,45 +7620,54 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentConfigurationUpdate" + "$ref": "#/components/schemas/WebsiteAlertConfig" } } - } + }, + "required": true }, "responses": { - "default": { + "200": { "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteAlertConfigWithMetadata" + } + } }, - "description": "default response" + "description": "Website Smart Alert successfully updated" + }, + "204": { + "description": "Website Smart Alert did not change" + }, + "400": { + "description": "Invalid Website ID provided" + }, + "500": { + "description": "Internal error" } }, "security": [ { "ApiKeyAuth": [ - "Default" - ] - }, - { - "ApiKeyAuth": [ - "canConfigureAgents" + "CanConfigureCustomAlerts" ] } ], - "summary": "Update agent configuration by query", + "summary": "Update Website Alert Config", "tags": [ - "Host Agent" + "Event Settings" ], - "description": "This endpoint can be used to initialize or change configuration management settings for all agents selected by the given Dynamic Focus Query.\n\n" + "description": "This API endpoint updates the Website Alert Configuration.\n\n## Mandatory Parameters:\n\n- **id:** ID of the website alert config which needs to be updated.\n\n- **name:** Name for the website alert configuration.\n\n- **description:** Description for the website alert configuration.\n\n- **severity:** The severity of the alert when triggered, which is either `5` (Warning), or `10` (Critical).\n\n- **triggering:** Optional flag to indicate whether also an Incident is triggered or not.\n\n- **websiteId:** Unique ID of the website.\n\n- **tagFilterExpression:** Boolean expression of tag filters to define the scope of relevant website beacons.\n\n- **granularity:** The evaluation granularity used for detection of violations of the defined threshold. In other words, it defines the size of the tumbling window used.\n\n- **rule:** Indicates the type of rule this alert configuration is about.\n\n- **threshold:** Indicates the type of threshold this alert rule is evaluated on.\n\n- **timeThreshold:** Indicates the type of violation of the defined threshold.\n\n- **alertChannelIds:** List of IDs of alert channels defined in Instana.\n" } }, - "/api/host-agent/{hostId}/configuration": { - "post": { - "operationId": "updateConfigurationByHost", + "/api/events/settings/website-alert-configs/{id}/disable": { + "put": { + "operationId": "disableWebsiteAlertConfig", "parameters": [ { "in": "path", - "name": "hostId", + "name": "id", "required": true, "schema": { "type": "string", @@ -7536,7 +7679,9 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentConfigurationUpdate" + "type": "string", + "example": null, + "nullable": true } } } @@ -7552,62 +7697,45 @@ "security": [ { "ApiKeyAuth": [ - "Default" - ] - }, - { - "ApiKeyAuth": [ - "canConfigureAgents" + "CanConfigureCustomAlerts" ] } ], - "summary": "Update agent configuration by host", + "summary": "Disable Website Alert Config", "tags": [ - "Host Agent" - ], - "description": "This endpoint can be used to initialize or change configuration management settings for a specific host agent.\n\n" + "Event Settings" + ] } }, - "/api/host-agent/{hostId}/logs": { - "get": { - "operationId": "getAgentLogs", + "/api/events/settings/website-alert-configs/{id}/enable": { + "put": { + "operationId": "enableWebsiteAlertConfig", "parameters": [ { "in": "path", - "name": "hostId", + "name": "id", "required": true, "schema": { "type": "string", "example": null } - }, - { - "in": "query", - "name": "download", - "schema": { - "type": "boolean", - "example": null - } - }, - { - "in": "query", - "name": "file", - "required": true, - "schema": { - "type": "array", - "example": null, - "items": { + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { "type": "string", - "example": null - }, - "uniqueItems": true + "example": null, + "nullable": true + } } } - ], + }, "responses": { "default": { "content": { - "application/octet-stream": {} + "application/json": {} }, "description": "default response" } @@ -7615,35 +7743,51 @@ "security": [ { "ApiKeyAuth": [ - "Default" - ] - }, - { - "ApiKeyAuth": [ - "canConfigureAgents" + "CanConfigureCustomAlerts" ] } ], - "summary": "Agent download logs", + "summary": "Enable Website Alert Config", "tags": [ - "Host Agent" + "Event Settings" ] } }, - "/api/host-agent/{hostId}/update": { - "post": { - "operationId": "updateAgent", + "/api/events/settings/website-alert-configs/{id}/restore/{created}": { + "put": { + "operationId": "restoreWebsiteAlertConfig", "parameters": [ { "in": "path", - "name": "hostId", + "name": "id", "required": true, "schema": { "type": "string", "example": null } + }, + { + "in": "path", + "name": "created", + "required": true, + "schema": { + "type": "integer", + "format": "int64", + "example": null + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string", + "example": null, + "nullable": true + } + } + } + }, "responses": { "default": { "content": { @@ -7655,24 +7799,20 @@ "security": [ { "ApiKeyAuth": [ - "Default" - ] - }, - { - "ApiKeyAuth": [ - "canConfigureAgents" + "CanConfigureCustomAlerts" ] } ], - "summary": "Agent update", + "summary": "Restore Website Alert Config", "tags": [ - "Host Agent" + "Event Settings" ] } }, - "/api/host-agent/{id}": { - "get": { - "operationId": "getAgentSnapshot", + "/api/events/settings/website-alert-configs/{id}/update-baseline": { + "post": { + "description": "Recalculate and update the baseline given the id of the config. The LastUpdated field of the config is changed to the current time.", + "operationId": "updateWebsiteHistoricBaseline", "parameters": [ { "in": "path", @@ -7682,113 +7822,54 @@ "type": "string", "example": null } - }, - { - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "windowSize", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } } ], "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SnapshotItem" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "Default" + "CanConfigureCustomAlerts" ] } ], - "summary": "Get host agent snapshot details", + "summary": "Recalculate a Static Seasonal Threshold", "tags": [ - "Host Agent" + "Event Settings" ] } }, - "/api/infrastructure-monitoring/analyze/entities": { - "post": { - "description": "This endpoint retrieves entities for a given entity type along with the requested metrics.", - "operationId": "getEntities", - "requestBody": { - "content": { - "application/json": { - "examples": { - "This example retrieves a JVM entity labeled \"custom-metrics.jar\" with metrics for memory used and blocked threads (both using a one hour granularity and a one minute granularity).": { - "description": "This example retrieves a JVM entity labeled \"custom-metrics.jar\" with metrics for memory used and blocked threads (both using a one hour granularity and a one minute granularity).", - "value": { - "tagFilterExpression": { - "type": "TAG_FILTER", - "entity": "NOT_APPLICABLE", - "name": "label", - "operator": "EQUALS", - "value": "custom-metrics.jar" - }, - "timeFrame": { - "to": 1673969562715, - "windowSize": 3600000 - }, - "pagination": { - "retrievalSize": 200 - }, - "type": "jvmRuntimePlatform", - "metrics": [ - { - "metric": "memory.used", - "granularity": 3600000, - "aggregation": "MAX" - }, - { - "metric": "memory.used", - "granularity": 600000, - "aggregation": "MAX" - }, - { - "metric": "threads.blocked", - "granularity": 3600000, - "aggregation": "MEAN" - }, - { - "metric": "threads.blocked", - "granularity": 600000, - "aggregation": "MEAN" - } - ] - } - } - }, - "schema": { - "$ref": "#/components/schemas/GetInfrastructureQuery" - } + "/api/events/settings/website-alert-configs/{id}/versions": { + "get": { + "description": "Find all versions of a Website Alert Config by ID. This will deliver deleted configs too. Configs are sorted descending by their created date.", + "operationId": "findWebsiteAlertConfigVersions", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InfrastructureEntitiesResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ConfigVersion" + } } } } @@ -7797,84 +7878,36 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "CanConfigureCustomAlerts" ] } ], - "summary": "Get infrastructure entities", + "summary": "Get versions of Website Alert Config", "tags": [ - "Infrastructure Analyze" + "Event Settings" ] } }, - "/api/infrastructure-monitoring/analyze/entity-groups": { - "post": { - "description": "This endpoint groups entities for a given entity type and aggregates metrics for these groups.", - "operationId": "getEntityGroups", - "requestBody": { - "content": { - "application/json": { - "examples": { - "This example retrieves JVM entities grouped with the same host name ordered by label, aggregating memory used and blocked threads (both using a one hour granularity and a one minute granularity).": { - "description": "This example retrieves JVM entities grouped with the same host name ordered by label, aggregating memory used and blocked threads (both using a one hour granularity and a one minute granularity).", - "value": { - "timeFrame": { - "to": 1674075565075, - "windowSize": 3600000 - }, - "tagFilterExpression": { - "type": "EXPRESSION", - "logicalOperator": "AND", - "elements": [] - }, - "pagination": { - "retrievalSize": 20 - }, - "groupBy": [ - "host.name" - ], - "type": "jvmRuntimePlatform", - "metrics": [ - { - "metric": "memory.used", - "granularity": 3600000, - "aggregation": "MEAN" - }, - { - "metric": "memory.used", - "granularity": 600000, - "aggregation": "MEAN" - }, - { - "metric": "threads.blocked", - "granularity": 3600000, - "aggregation": "MEAN" - }, - { - "metric": "threads.blocked", - "granularity": 600000, - "aggregation": "MEAN" - } - ], - "order": { - "by": "label", - "direction": "ASC" - } - } - } - }, - "schema": { - "$ref": "#/components/schemas/GetInfrastructureGroupsQuery" - } + "/api/events/{eventId}": { + "get": { + "operationId": "getEvent", + "parameters": [ + { + "in": "path", + "name": "eventId", + "required": true, + "schema": { + "type": "string", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InfrastructureGroupsResult" + "$ref": "#/components/schemas/EventResult" } } } @@ -7887,47 +7920,67 @@ ] } ], - "summary": "Get grouped infrastructure entities with aggregated metrics", + "summary": "Get a particular event", "tags": [ - "Infrastructure Analyze" - ] + "Events" + ], + "description": "This endpoint retrieves an event given its ID.\n\n### Path Parameters:\n\n- **eventId:** The ID of the event to fetch." } }, - "/api/infrastructure-monitoring/analyze/entity-types": { - "post": { - "description": "This endpoint retrieves available entity types.", - "operationId": "getAvailablePlugins", - "requestBody": { - "content": { - "application/json": { - "examples": { - "This example retrieves all entity types.": { - "description": "This example retrieves all entity types.", - "value": { - "tagFilterExpression": { - "type": "EXPRESSION", - "logicalOperator": "AND", - "elements": [] - }, - "timeFrame": { - "to": 1673969562715, - "windowSize": 3600000 - } - } - } - }, - "schema": { - "$ref": "#/components/schemas/GetAvailablePluginsQuery" - } + "/api/host-agent": { + "get": { + "operationId": "searchHostAgents", + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "size", + "schema": { + "type": "integer", + "format": "int32", + "example": null + } + }, + { + "in": "query", + "name": "offline", + "schema": { + "type": "boolean", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AvailablePlugins" + "$ref": "#/components/schemas/SnapshotResult" } } } @@ -7940,39 +7993,65 @@ ] } ], - "summary": "Get available entity types", + "summary": "Query host agent snapshots", "tags": [ - "Infrastructure Analyze" + "Host Agent" ] } }, - "/api/infrastructure-monitoring/analyze/metrics": { + "/api/host-agent/configuration": { "post": { - "description": "This endpoint retrieves available metrics for an entity type.", - "operationId": "getAvailableMetrics", + "operationId": "updateConfigurationByQuery", + "parameters": [ + { + "in": "query", + "name": "query", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "size", + "schema": { + "type": "integer", + "format": "int32", + "example": null + } + }, + { + "in": "query", + "name": "offline", + "schema": { + "type": "boolean", + "example": null + } + } + ], "requestBody": { "content": { "application/json": { - "examples": { - "This example retrieves all available metrics for JVM entities.": { - "description": "This example retrieves all available metrics for JVM entities.", - "value": { - "tagFilterExpression": { - "type": "EXPRESSION", - "logicalOperator": "AND", - "elements": [] - }, - "timeFrame": { - "to": 1673969562715, - "windowSize": 3600000 - }, - "query": "", - "type": "jvmRuntimePlatform" - } - } - }, "schema": { - "$ref": "#/components/schemas/GetAvailableMetricsQuery" + "$ref": "#/components/schemas/AgentConfigurationUpdate" } } } @@ -7980,12 +8059,9 @@ "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AvailableMetrics" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ @@ -7993,49 +8069,49 @@ "ApiKeyAuth": [ "Default" ] + }, + { + "ApiKeyAuth": [ + "canConfigureAgents" + ] } ], - "summary": "Get available metrics", + "summary": "Update agent configuration by query", "tags": [ - "Infrastructure Analyze" - ] + "Host Agent" + ], + "description": "This endpoint can be used to initialize or change configuration management settings for all agents selected by the given Dynamic Focus Query.\n\n" } }, - "/api/infrastructure-monitoring/catalog/metrics/{plugin}": { - "get": { - "operationId": "getInfrastructureCatalogMetrics", + "/api/host-agent/{hostId}/configuration": { + "post": { + "operationId": "updateConfigurationByHost", "parameters": [ { "in": "path", - "name": "plugin", + "name": "hostId", "required": true, "schema": { "type": "string", "example": null } - }, - { - "in": "query", - "name": "filter", - "schema": { - "type": "string", - "example": null - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentConfigurationUpdate" + } + } + } + }, "responses": { "default": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/MetricInstance" - } - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ @@ -8043,31 +8119,62 @@ "ApiKeyAuth": [ "Default" ] + }, + { + "ApiKeyAuth": [ + "canConfigureAgents" + ] } ], - "summary": "Get metric catalog", + "summary": "Update agent configuration by host", "tags": [ - "Infrastructure Catalog" + "Host Agent" ], - "description": "This endpoint retrieves all available metric definitions of the requested plugin.\n\n### Path Parameters:\n\n**plugin** The plugin id from [available plugins](#operation/getInfrastructureCatalogPlugins)\n\n### Optional Parameters:\n\n**filter** You can restrict the returned metric definitions by passing a filter.\n\n* `custom` to retrieve custom metric definitions only.\n* `builtin` to retrieve built-in metric definitions only.\n" + "description": "This endpoint can be used to initialize or change configuration management settings for a specific host agent.\n\n" } }, - "/api/infrastructure-monitoring/catalog/plugins": { + "/api/host-agent/{hostId}/logs": { "get": { - "operationId": "getInfrastructureCatalogPlugins", + "operationId": "getAgentLogs", + "parameters": [ + { + "in": "path", + "name": "hostId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "download", + "schema": { + "type": "boolean", + "example": null + } + }, + { + "in": "query", + "name": "file", + "required": true, + "schema": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "uniqueItems": true + } + } + ], "responses": { "default": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/PluginResult" - } - } - } - } + "application/octet-stream": {} + }, + "description": "default response" } }, "security": [ @@ -8075,62 +8182,39 @@ "ApiKeyAuth": [ "Default" ] + }, + { + "ApiKeyAuth": [ + "canConfigureAgents" + ] } ], - "summary": "Get plugin catalog", + "summary": "Agent download logs", "tags": [ - "Infrastructure Catalog" - ], - "description": "This endpoint retrieves all available plugin ids for your monitored system.\n" + "Host Agent" + ] } }, - "/api/infrastructure-monitoring/catalog/plugins-with-custom-metrics": { - "get": { - "operationId": "getInfrastructureCatalogPluginsWithCustomMetrics", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/PluginResult" - } - } - } - } - } - }, - "security": [ + "/api/host-agent/{hostId}/update": { + "post": { + "operationId": "updateAgent", + "parameters": [ { - "ApiKeyAuth": [ - "Default" - ] + "in": "path", + "name": "hostId", + "required": true, + "schema": { + "type": "string", + "example": null + } } ], - "summary": "Get all plugins with custom metrics catalog", - "tags": [ - "Infrastructure Catalog" - ] - } - }, - "/api/infrastructure-monitoring/catalog/search": { - "get": { - "operationId": "getInfrastructureCatalogSearchFields", "responses": { "default": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/SearchFieldResult" - } - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ @@ -8138,27 +8222,49 @@ "ApiKeyAuth": [ "Default" ] + }, + { + "ApiKeyAuth": [ + "canConfigureAgents" + ] } ], - "summary": "get search field catalog", + "summary": "Agent update", "tags": [ - "Infrastructure Catalog" - ], - "description": "This endpoint retrieves all available search keywords for dynamic focus queries.\n\nThese search fields can be accessed via lucene queries. Each field belongs to a context, e.g. to entity, trace or event data.\nSome fields contain a set of possible fixed values, in this case a deviant value is invalid.\n\n```\n?query={keyword}:{value}\n```\n" + "Host Agent" + ] } }, - "/api/infrastructure-monitoring/graph/related-hosts/{snapshotId}": { + "/api/host-agent/{id}": { "get": { - "operationId": "getRelatedHosts", + "operationId": "getAgentSnapshot", "parameters": [ { "in": "path", - "name": "snapshotId", + "name": "id", "required": true, "schema": { "type": "string", "example": null } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } } ], "responses": { @@ -8166,12 +8272,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - } + "$ref": "#/components/schemas/SnapshotItem" } } } @@ -8184,30 +8285,65 @@ ] } ], - "summary": "Related hosts", + "summary": "Get host agent snapshot details", "tags": [ - "Infrastructure Topology" + "Host Agent" ] } }, - "/api/infrastructure-monitoring/metrics": { + "/api/infrastructure-monitoring/analyze/entities": { "post": { - "operationId": "getInfrastructureMetrics", - "parameters": [ - { - "in": "query", - "name": "offline", - "schema": { - "type": "boolean", - "example": null - } - } - ], + "description": "This endpoint retrieves entities for a given entity type along with the requested metrics.", + "operationId": "getEntities", "requestBody": { "content": { "application/json": { + "examples": { + "This example retrieves a JVM entity labeled \"custom-metrics.jar\" with metrics for memory used and blocked threads (both using a one hour granularity and a one minute granularity).": { + "description": "This example retrieves a JVM entity labeled \"custom-metrics.jar\" with metrics for memory used and blocked threads (both using a one hour granularity and a one minute granularity).", + "value": { + "tagFilterExpression": { + "type": "TAG_FILTER", + "entity": "NOT_APPLICABLE", + "name": "label", + "operator": "EQUALS", + "value": "custom-metrics.jar" + }, + "timeFrame": { + "to": 1673969562715, + "windowSize": 3600000 + }, + "pagination": { + "retrievalSize": 200 + }, + "type": "jvmRuntimePlatform", + "metrics": [ + { + "metric": "memory.used", + "granularity": 3600000, + "aggregation": "MAX" + }, + { + "metric": "memory.used", + "granularity": 600000, + "aggregation": "MAX" + }, + { + "metric": "threads.blocked", + "granularity": 3600000, + "aggregation": "MEAN" + }, + { + "metric": "threads.blocked", + "granularity": 600000, + "aggregation": "MEAN" + } + ] + } + } + }, "schema": { - "$ref": "#/components/schemas/GetCombinedMetrics" + "$ref": "#/components/schemas/GetInfrastructureQuery" } } } @@ -8217,7 +8353,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InfrastructureMetricResult" + "$ref": "#/components/schemas/InfrastructureEntitiesResult" } } } @@ -8230,22 +8366,80 @@ ] } ], - "summary": "Get infrastructure metrics", + "summary": "Get infrastructure entities", "tags": [ - "Infrastructure Metrics" - ], - "description": "- The **offline** parameter is used to allow deeper visibility into snapshots. Set to `false`, the query will return all snapshots that are still available on the given **to** timestamp. However, set to `true`, the query will return all snapshots that have been active within the time window, this must at least include the online result and snapshots terminated within this time.\r\n" + "Infrastructure Analyze" + ] } }, - "/api/infrastructure-monitoring/monitoring-state": { - "get": { - "operationId": "getMonitoringState", + "/api/infrastructure-monitoring/analyze/entity-groups": { + "post": { + "description": "This endpoint groups entities for a given entity type and aggregates metrics for these groups.", + "operationId": "getEntityGroups", + "requestBody": { + "content": { + "application/json": { + "examples": { + "This example retrieves JVM entities grouped with the same host name ordered by label, aggregating memory used and blocked threads (both using a one hour granularity and a one minute granularity).": { + "description": "This example retrieves JVM entities grouped with the same host name ordered by label, aggregating memory used and blocked threads (both using a one hour granularity and a one minute granularity).", + "value": { + "timeFrame": { + "to": 1674075565075, + "windowSize": 3600000 + }, + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "AND", + "elements": [] + }, + "pagination": { + "retrievalSize": 20 + }, + "groupBy": [ + "host.name" + ], + "type": "jvmRuntimePlatform", + "metrics": [ + { + "metric": "memory.used", + "granularity": 3600000, + "aggregation": "MEAN" + }, + { + "metric": "memory.used", + "granularity": 600000, + "aggregation": "MEAN" + }, + { + "metric": "threads.blocked", + "granularity": 3600000, + "aggregation": "MEAN" + }, + { + "metric": "threads.blocked", + "granularity": 600000, + "aggregation": "MEAN" + } + ], + "order": { + "by": "label", + "direction": "ASC" + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/GetInfrastructureGroupsQuery" + } + } + } + }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MonitoringState" + "$ref": "#/components/schemas/InfrastructureGroupsResult" } } } @@ -8258,86 +8452,47 @@ ] } ], - "summary": "Monitored host count", + "summary": "Get grouped infrastructure entities with aggregated metrics", "tags": [ - "Infrastructure Resources" + "Infrastructure Analyze" ] } }, - "/api/infrastructure-monitoring/snapshots": { - "get": { - "operationId": "getSnapshots", - "parameters": [ - { - "description": "query to use to filter snapshot retrieval", - "example": "entity.zone:myZone*", - "in": "query", - "name": "query", - "schema": { - "type": "string", - "example": null - } - }, - { - "description": "end of timeframe expressed as the Unix epoch time in milliseconds", - "example": 1689018652000, - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "description": "windowSize in milliseconds", - "example": 3600000, - "in": "query", - "name": "windowSize", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "description": "maximum number of snapshots to retrieve", - "example": 100, - "in": "query", - "name": "size", - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - }, - { - "description": "entity type", - "example": "host", - "in": "query", - "name": "plugin", - "schema": { - "type": "string", - "example": null - } - }, - { - "description": "retrieve snapshots which were online during the timeframe, otherwise, return only snapshot which were online at the end of the timeframe", - "example": false, - "in": "query", - "name": "offline", - "schema": { - "type": "boolean", - "example": null + "/api/infrastructure-monitoring/analyze/entity-types": { + "post": { + "description": "This endpoint retrieves available entity types.", + "operationId": "getAvailablePlugins", + "requestBody": { + "content": { + "application/json": { + "examples": { + "This example retrieves all entity types.": { + "description": "This example retrieves all entity types.", + "value": { + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "AND", + "elements": [] + }, + "timeFrame": { + "to": 1673969562715, + "windowSize": 3600000 + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/GetAvailablePluginsQuery" + } } } - ], + }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SnapshotResult" + "$ref": "#/components/schemas/AvailablePlugins" } } } @@ -8350,35 +8505,39 @@ ] } ], - "summary": "Search snapshots", + "summary": "Get available entity types", "tags": [ - "Infrastructure Resources" - ], - "description": "These APIs can be used to retrieve information about hosts, processes, JVMs and other entities that we are calling snapshots. A snapshot represents static information about an entity as it was at a specific point in time. To clarify:\r\n**Static information** is any information which is seldom changing, e.g. process IDs, host FQDNs or a list of host hard disks. The counterpart to static information are metrics which have a much higher change rate, e.g. host CPU usage or JVM garbage collection activity. Snapshots only contain static information.\r\n- Snapshots are **versioned** and represent an entity's state for a specific point in time. While snapshots only contain static information, even that information may change. For example you may add another hard disk to a server. For such a change, a new snapshot would be created.\r\n- The **size** parameter can be used in order to limit the maximum number of retrieved snapshots.\r\n- The **offline** parameter is used to allow deeper visibility into snapshots. Set to `false`, the query will return all snapshots that are still available on the given **to** timestamp. However, set to `true`, the query will return all snapshots that have been active within the time window, this must at least include the online result and snapshots terminated within this time.\r\n" - }, + "Infrastructure Analyze" + ] + } + }, + "/api/infrastructure-monitoring/analyze/metrics": { "post": { - "description": "This endpoint retrieves detail information for one or more snapshots. timeFrame defaults to the last 10 minutes if not specified.", - "operationId": "postSnapshots", + "description": "This endpoint retrieves available metrics for an entity type.", + "operationId": "getAvailableMetrics", "requestBody": { "content": { "application/json": { "examples": { - "This example retrieves the detail information for two snapshots.": { - "description": "This example retrieves the detail information for two snapshots.", + "This example retrieves all available metrics for JVM entities.": { + "description": "This example retrieves all available metrics for JVM entities.", "value": { - "snapshotIds": [ - "AB3DeFGHIJkLm9OpQrstUVwxY_z", - "ZY4XwVUTSRqPo8MlKjihGFedC_a" - ], + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "AND", + "elements": [] + }, "timeFrame": { - "to": 1689018652000, + "to": 1673969562715, "windowSize": 3600000 - } + }, + "query": "", + "type": "jvmRuntimePlatform" } } }, "schema": { - "$ref": "#/components/schemas/GetSnapshotsQuery" + "$ref": "#/components/schemas/GetAvailableMetricsQuery" } } } @@ -8388,7 +8547,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PostSnapshotsResult" + "$ref": "#/components/schemas/AvailableMetrics" } } } @@ -8401,20 +8560,19 @@ ] } ], - "summary": "Get snapshot details for multiple snapshots", + "summary": "Get available metrics", "tags": [ - "Infrastructure Resources" + "Infrastructure Analyze" ] } }, - "/api/infrastructure-monitoring/snapshots/{id}": { + "/api/infrastructure-monitoring/catalog/metrics/{plugin}": { "get": { - "operationId": "getSnapshot", + "operationId": "getInfrastructureCatalogMetrics", "parameters": [ { - "description": "snapshot id", "in": "path", - "name": "id", + "name": "plugin", "required": true, "schema": { "type": "string", @@ -8422,24 +8580,10 @@ } }, { - "description": "end of timeframe expressed as the Unix epoch time in milliseconds", - "example": 1689018652000, - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "description": "windowSize in milliseconds", - "example": 3600000, "in": "query", - "name": "windowSize", + "name": "filter", "schema": { - "type": "integer", - "format": "int64", + "type": "string", "example": null } } @@ -8449,7 +8593,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SnapshotItem" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/MetricInstance" + } } } } @@ -8462,53 +8610,23 @@ ] } ], - "summary": "Get snapshot details", + "summary": "Get metric catalog", "tags": [ - "Infrastructure Resources" - ] + "Infrastructure Catalog" + ], + "description": "This endpoint retrieves all available metric definitions of the requested plugin.\n\n### Path Parameters:\n\n**plugin** The plugin id from [available plugins](#operation/getInfrastructureCatalogPlugins)\n\n### Optional Parameters:\n\n**filter** You can restrict the returned metric definitions by passing a filter.\n\n* `custom` to retrieve custom metric definitions only.\n* `builtin` to retrieve built-in metric definitions only.\n" } }, - "/api/infrastructure-monitoring/software/versions": { + "/api/infrastructure-monitoring/catalog/payloads/{pluginId}": { "get": { - "description": "Retrieve information about the software you are running. This includes runtime and package manager information.\n\nThe `name`, `version`, `origin` and `type` parameters are optional filters that can be used to reduce the result data set.", - "operationId": "softwareVersions", + "operationId": "getAvailablePayloadKeysByPluginId", "parameters": [ { - "in": "query", - "name": "time", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "origin", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "type", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "name", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "version", + "description": "plugin id", + "example": "db2Database", + "in": "path", + "name": "pluginId", + "required": true, "schema": { "type": "string", "example": null @@ -8523,7 +8641,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/SoftwareVersion" + "$ref": "#/components/schemas/GetPayloadKeysResult" } } } @@ -8537,31 +8655,25 @@ ] } ], - "summary": "Get installed software", + "summary": "Get payload keys for plugin", "tags": [ - "Infrastructure Resources" + "Infrastructure Catalog" ] } }, - "/api/infrastructure-monitoring/topology": { + "/api/infrastructure-monitoring/catalog/plugins": { "get": { - "operationId": "getTopology", - "parameters": [ - { - "in": "query", - "name": "includeData", - "schema": { - "type": "boolean", - "example": null - } - } - ], + "operationId": "getInfrastructureCatalogPlugins", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Topology" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/PluginResult" + } } } } @@ -8574,21 +8686,26 @@ ] } ], - "summary": "Gets the infrastructure topology", + "summary": "Get plugin catalog", "tags": [ - "Infrastructure Topology" - ] + "Infrastructure Catalog" + ], + "description": "This endpoint retrieves all available plugin ids for your monitored system.\n" } }, - "/api/instana/health": { + "/api/infrastructure-monitoring/catalog/plugins-with-custom-metrics": { "get": { - "operationId": "getHealthState", + "operationId": "getInfrastructureCatalogPluginsWithCustomMetrics", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HealthState" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/PluginResult" + } } } } @@ -8601,16 +8718,15 @@ ] } ], - "summary": "Basic health traffic light", + "summary": "Get all plugins with custom metrics catalog", "tags": [ - "Health" - ], - "description": "The returned JSON object will provide a health property which contains a simple traffic light (GREEN/YELLO/RED). For any non-Green-state a list \nof reasons will be provided in the messages array.\n\nPossible messages:\n* No data being processed\n* No data arriving from agents\n" - } + "Infrastructure Catalog" + ] + } }, - "/api/instana/usage/api": { + "/api/infrastructure-monitoring/catalog/search": { "get": { - "operationId": "getAllUsage", + "operationId": "getInfrastructureCatalogSearchFields", "responses": { "default": { "content": { @@ -8619,7 +8735,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/UsageResult" + "$ref": "#/components/schemas/SearchFieldResult" } } } @@ -8629,47 +8745,27 @@ "security": [ { "ApiKeyAuth": [ - "CanViewAccountAndBillingInformation" + "Default" ] } ], - "summary": "API usage by customer", + "summary": "get search field catalog", "tags": [ - "Usage" - ] + "Infrastructure Catalog" + ], + "description": "This endpoint retrieves all available search keywords for dynamic focus queries.\n\nThese search fields can be accessed via lucene queries. Each field belongs to a context, e.g. to entity, trace or event data.\nSome fields contain a set of possible fixed values, in this case a deviant value is invalid.\n\n```\n?query={keyword}:{value}\n```\n" } }, - "/api/instana/usage/api/{day}/{month}/{year}": { + "/api/infrastructure-monitoring/graph/related-hosts/{snapshotId}": { "get": { - "operationId": "getUsagePerDay", + "operationId": "getRelatedHosts", "parameters": [ { "in": "path", - "name": "day", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - }, - { - "in": "path", - "name": "month", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - }, - { - "in": "path", - "name": "year", + "name": "snapshotId", "required": true, "schema": { - "type": "integer", - "format": "int32", + "type": "string", "example": null } } @@ -8682,7 +8778,8 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/UsageResult" + "type": "string", + "example": null } } } @@ -8692,51 +8789,72 @@ "security": [ { "ApiKeyAuth": [ - "CanViewAccountAndBillingInformation" + "Default" ] } ], - "summary": "API usage day / month / year", + "summary": "Related hosts", "tags": [ - "Usage" + "Infrastructure Topology" ] } }, - "/api/instana/usage/api/{month}/{year}": { - "get": { - "operationId": "getUsagePerMonth", + "/api/infrastructure-monitoring/metrics": { + "post": { + "operationId": "getInfrastructureMetrics", "parameters": [ { - "in": "path", - "name": "month", - "required": true, + "in": "query", + "name": "offline", "schema": { - "type": "integer", - "format": "int32", + "type": "boolean", "example": null } - }, - { - "in": "path", - "name": "year", - "required": true, - "schema": { - "type": "integer", - "format": "int32", - "example": null + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetCombinedMetrics" + } + } + } + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InfrastructureMetricResult" + } + } } } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get infrastructure metrics", + "tags": [ + "Infrastructure Metrics" ], + "description": "- The **offline** parameter is used to allow deeper visibility into snapshots. Set to `false`, the query will return all snapshots that are still available on the given **to** timestamp. However, set to `true`, the query will return all snapshots that have been active within the time window, this must at least include the online result and snapshots terminated within this time.\r\n" + } + }, + "/api/infrastructure-monitoring/monitoring-state": { + "get": { + "operationId": "getMonitoringState", "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/UsageResult" - } + "$ref": "#/components/schemas/MonitoringState" } } } @@ -8745,47 +8863,60 @@ "security": [ { "ApiKeyAuth": [ - "CanViewAccountAndBillingInformation" + "Default" ] } ], - "summary": "API usage month / year", + "summary": "Monitored host count", "tags": [ - "Usage" + "Infrastructure Resources" ] } }, - "/api/instana/usage/hosts/{day}/{month}/{year}": { + "/api/infrastructure-monitoring/payloads/{snapshotId}/{payloadKey}": { "get": { - "operationId": "getHostsPerDay", + "operationId": "getPluginPayload", "parameters": [ { + "description": "Snapshot id.", "in": "path", - "name": "day", + "name": "snapshotId", "required": true, "schema": { - "type": "integer", - "format": "int32", + "type": "string", "example": null } }, { + "description": "Payload key. Use `/api/infrastructure-monitoring/catalog/payloads` to retrieve the list of possible keys.", + "example": "topqueries", "in": "path", - "name": "month", + "name": "payloadKey", "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "description": "End of timeframe expressed as the Unix epoch time in milliseconds.", + "example": 1689018652000, + "in": "query", + "name": "to", "schema": { "type": "integer", - "format": "int32", + "format": "int64", "example": null } }, { - "in": "path", - "name": "year", - "required": true, + "description": "Window size in milliseconds.", + "example": 3600000, + "in": "query", + "name": "windowSize", "schema": { "type": "integer", - "format": "int32", + "format": "int64", "example": null } } @@ -8793,54 +8924,89 @@ "responses": { "default": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/UsageResult" - } - } - } + "application/json": {} } } }, "security": [ { "ApiKeyAuth": [ - "CanViewAccountAndBillingInformation" + "Default" ] } ], - "summary": "Host count day / month / year", + "summary": "Get a payload for a snapshot", "tags": [ - "Usage" + "Infrastructure Resources" ] } }, - "/api/instana/usage/hosts/{month}/{year}": { + "/api/infrastructure-monitoring/snapshots": { "get": { - "operationId": "getHostsPerMonth", + "operationId": "getSnapshots", "parameters": [ { - "in": "path", - "name": "month", - "required": true, + "description": "query to use to filter snapshot retrieval", + "example": "entity.zone:myZone*", + "in": "query", + "name": "query", + "schema": { + "type": "string", + "example": null + } + }, + { + "description": "end of timeframe expressed as the Unix epoch time in milliseconds", + "example": 1689018652000, + "in": "query", + "name": "to", "schema": { "type": "integer", - "format": "int32", + "format": "int64", "example": null } }, { - "in": "path", - "name": "year", - "required": true, + "description": "windowSize in milliseconds", + "example": 3600000, + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "description": "maximum number of snapshots to retrieve", + "example": 100, + "in": "query", + "name": "size", "schema": { "type": "integer", "format": "int32", "example": null } + }, + { + "description": "entity type", + "example": "host", + "in": "query", + "name": "plugin", + "schema": { + "type": "string", + "example": null + } + }, + { + "description": "retrieve snapshots which were online during the timeframe, otherwise, return only snapshot which were online at the end of the timeframe", + "example": false, + "in": "query", + "name": "offline", + "schema": { + "type": "boolean", + "example": null + } } ], "responses": { @@ -8848,11 +9014,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/UsageResult" - } + "$ref": "#/components/schemas/SnapshotResult" } } } @@ -8861,61 +9023,39 @@ "security": [ { "ApiKeyAuth": [ - "CanViewAccountAndBillingInformation" + "Default" ] } ], - "summary": "Host count month / year", + "summary": "Search snapshots", "tags": [ - "Usage" - ] - } - }, - "/api/instana/version": { - "get": { - "operationId": "getVersion", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InstanaVersionInfo" - } - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "Default" - ] - } + "Infrastructure Resources" ], - "summary": "API version information", - "tags": [ - "Health" - ] - } - }, - "/api/mobile-app-monitoring/analyze/beacon-groups": { + "description": "These APIs can be used to retrieve information about hosts, processes, JVMs and other entities that we are calling snapshots. A snapshot represents static information about an entity as it was at a specific point in time. To clarify:\r\n**Static information** is any information which is seldom changing, e.g. process IDs, host FQDNs or a list of host hard disks. The counterpart to static information are metrics which have a much higher change rate, e.g. host CPU usage or JVM garbage collection activity. Snapshots only contain static information.\r\n- Snapshots are **versioned** and represent an entity's state for a specific point in time. While snapshots only contain static information, even that information may change. For example you may add another hard disk to a server. For such a change, a new snapshot would be created.\r\n- The **size** parameter can be used in order to limit the maximum number of retrieved snapshots.\r\n- The **offline** parameter is used to allow deeper visibility into snapshots. Set to `false`, the query will return all snapshots that are still available on the given **to** timestamp. However, set to `true`, the query will return all snapshots that have been active within the time window, this must at least include the online result and snapshots terminated within this time.\r\n" + }, "post": { - "operationId": "getMobileAppBeaconGroups", - "parameters": [ - { - "in": "query", - "name": "fillTimeSeries", - "schema": { - "type": "boolean", - "example": null - } - } - ], + "description": "This endpoint retrieves detail information for one or more snapshots. timeFrame defaults to the last 10 minutes if not specified.", + "operationId": "postSnapshots", "requestBody": { "content": { "application/json": { + "examples": { + "This example retrieves the detail information for two snapshots.": { + "description": "This example retrieves the detail information for two snapshots.", + "value": { + "snapshotIds": [ + "AB3DeFGHIJkLm9OpQrstUVwxY_z", + "ZY4XwVUTSRqPo8MlKjihGFedC_a" + ], + "timeFrame": { + "to": 1689018652000, + "windowSize": 3600000 + } + } + } + }, "schema": { - "$ref": "#/components/schemas/GetMobileAppBeaconGroups" + "$ref": "#/components/schemas/GetSnapshotsQuery" } } } @@ -8925,7 +9065,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppBeaconGroupsResult" + "$ref": "#/components/schemas/PostSnapshotsResult" } } } @@ -8938,30 +9078,55 @@ ] } ], - "summary": "Get grouped beacon metrics", + "summary": "Get snapshot details for multiple snapshots", "tags": [ - "Mobile App Analyze" + "Infrastructure Resources" ] } }, - "/api/mobile-app-monitoring/analyze/beacons": { - "post": { - "operationId": "getMobileAppBeacons", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetMobileAppBeacons" - } + "/api/infrastructure-monitoring/snapshots/{id}": { + "get": { + "operationId": "getSnapshot", + "parameters": [ + { + "description": "snapshot id", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "description": "end of timeframe expressed as the Unix epoch time in milliseconds", + "example": 1689018652000, + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "description": "windowSize in milliseconds", + "example": 3600000, + "in": "query", + "name": "windowSize", + "schema": { + "type": "integer", + "format": "int64", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppBeaconResult" + "$ref": "#/components/schemas/SnapshotItem" } } } @@ -8974,20 +9139,29 @@ ] } ], - "summary": "Get all beacons", + "summary": "Get snapshot details", "tags": [ - "Mobile App Analyze" + "Infrastructure Resources" ] } }, - "/api/mobile-app-monitoring/catalog": { + "/api/infrastructure-monitoring/software/versions": { "get": { - "operationId": "getMobileAppTagCatalog", + "description": "Retrieve information about the software you are running. This includes runtime and package manager information.\n\nThe `name`, `version`, `origin` and `type` parameters are optional filters that can be used to reduce the result data set.", + "operationId": "softwareVersions", "parameters": [ { "in": "query", - "name": "beaconType", - "required": true, + "name": "time", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "origin", "schema": { "type": "string", "example": null @@ -8995,34 +9169,39 @@ }, { "in": "query", - "name": "useCase", - "required": true, + "name": "type", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "name", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "version", "schema": { "type": "string", - "enum": [ - "GROUPING", - "FILTERING", - "SMART_ALERTS", - "SMART_ALERTS_LOGS", - "SMART_ALERTS_ADAPTIVE_BASELINE", - "SMART_ALERTS_CUSTOM_PAYLOAD", - "SLI_MANAGEMENT", - "APPLICATION_CONFIG", - "APPLICATION_CONFIG_BLUEPRINT" - ], "example": null } } ], "responses": { - "400": { - "description": "When the combination of beaconType and useCase is unsupported/unknown." - }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TagCatalog" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SoftwareVersion" + } } } } @@ -9035,25 +9214,31 @@ ] } ], - "summary": "Get mobile app tag catalog", + "summary": "Get installed software", "tags": [ - "Mobile App Catalog" + "Infrastructure Resources" ] } }, - "/api/mobile-app-monitoring/catalog/metrics": { + "/api/infrastructure-monitoring/topology": { "get": { - "operationId": "getMobileAppMetricCatalog", + "operationId": "getTopology", + "parameters": [ + { + "in": "query", + "name": "includeData", + "schema": { + "type": "boolean", + "example": null + } + } + ], "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/MobileAppMonitoringMetricDescription" - } + "$ref": "#/components/schemas/Topology" } } } @@ -9066,25 +9251,21 @@ ] } ], - "summary": "Metric catalog", + "summary": "Gets the infrastructure topology", "tags": [ - "Mobile App Catalog" + "Infrastructure Topology" ] } }, - "/api/mobile-app-monitoring/config": { + "/api/instana/health": { "get": { - "operationId": "getMobileAppConfig", + "operationId": "getHealthState", "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/MobileApp" - } + "$ref": "#/components/schemas/HealthState" } } } @@ -9093,155 +9274,146 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "Default" ] } ], - "summary": "Get configured mobile apps", + "summary": "Basic health traffic light", "tags": [ - "Mobile App Configuration" - ] - }, - "post": { - "operationId": "postMobileAppConfig", - "parameters": [ - { - "in": "query", - "name": "name", - "schema": { - "type": "string", - "example": null - } - } + "Health" ], + "description": "The returned JSON object will provide a health property which contains a simple traffic light (GREEN/YELLO/RED). For any non-Green-state a list \nof reasons will be provided in the messages array.\n\nPossible messages:\n* No data being processed\n* No data arriving from agents\n" + } + }, + "/api/instana/usage/api": { + "get": { + "operationId": "getAllUsage", "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UsageResult" + } } } - }, - "description": "Mobile App successfully configured" - }, - "400": { - "description": "Missing name query parameter or name already used for a configured mobile app." + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "CanViewAccountAndBillingInformation" ] } ], - "summary": "Configure new mobile app", + "summary": "API usage by customer", "tags": [ - "Mobile App Configuration" + "Usage" ] } }, - "/api/mobile-app-monitoring/config/{mobileAppId}": { - "delete": { - "operationId": "deleteMobileAppConfig", + "/api/instana/usage/api/{day}/{month}/{year}": { + "get": { + "operationId": "getUsagePerDay", "parameters": [ { "in": "path", - "name": "mobileAppId", + "name": "day", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } - } - ], - "responses": { - "204": { - "description": "Mobile app successfully removed" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" - ] - } - ], - "summary": "Remove mobile app", - "tags": [ - "Mobile App Configuration" - ] - }, - "put": { - "operationId": "renameMobileAppConfig", - "parameters": [ + }, { "in": "path", - "name": "mobileAppId", + "name": "month", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } }, { - "in": "query", - "name": "name", + "in": "path", + "name": "year", + "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } } ], "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileApp" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UsageResult" + } } } - }, - "description": "Mobile app successfully renamed" - }, - "400": { - "description": "Missing name query parameter or name already used for a configured mobile app." + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "CanViewAccountAndBillingInformation" ] } ], - "summary": "Rename mobile app", + "summary": "API usage day / month / year", "tags": [ - "Mobile App Configuration" + "Usage" ] } }, - "/api/mobile-app-monitoring/config/{mobileAppId}/geo-location": { + "/api/instana/usage/api/{month}/{year}": { "get": { - "operationId": "getMobileAppGeoLocationConfiguration", + "operationId": "getUsagePerMonth", "parameters": [ { "in": "path", - "name": "mobileAppId", + "name": "month", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", + "example": null + } + }, + { + "in": "path", + "name": "year", + "required": true, + "schema": { + "type": "integer", + "format": "int32", "example": null } } ], "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UsageResult" + } } } } @@ -9250,43 +9422,61 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "CanViewAccountAndBillingInformation" ] } ], - "summary": "Get geo location configuration for mobile app", + "summary": "API usage month / year", "tags": [ - "Mobile App Configuration" + "Usage" ] - }, - "put": { - "operationId": "updateMobileAppGeoLocationConfiguration", + } + }, + "/api/instana/usage/hosts/{day}/{month}/{year}": { + "get": { + "operationId": "getHostsPerDay", "parameters": [ { "in": "path", - "name": "mobileAppId", + "name": "day", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" - } + }, + { + "in": "path", + "name": "month", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "example": null + } + }, + { + "in": "path", + "name": "year", + "required": true, + "schema": { + "type": "integer", + "format": "int32", + "example": null } } - }, + ], "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UsageResult" + } } } } @@ -9295,112 +9485,78 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "CanViewAccountAndBillingInformation" ] } ], - "summary": "Update geo location configuration for mobile app", + "summary": "Host count day / month / year", "tags": [ - "Mobile App Configuration" + "Usage" ] } }, - "/api/mobile-app-monitoring/config/{mobileAppId}/geo-mapping-rules": { + "/api/instana/usage/hosts/{month}/{year}": { "get": { - "operationId": "getMobileAppGeoMappingRules", + "operationId": "getHostsPerMonth", "parameters": [ { "in": "path", - "name": "mobileAppId", + "name": "month", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } - } - ], - "responses": { - "200": { - "content": { - "text/csv": {} - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" - ] - } - ], - "summary": "Get custom geo mapping rules for mobile app", - "tags": [ - "Mobile App Configuration" - ] - }, - "put": { - "operationId": "setMobileAppGeoMappingRules", - "parameters": [ + }, { "in": "path", - "name": "mobileAppId", + "name": "year", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } } ], - "requestBody": { - "content": { - "text/csv": { - "schema": { - "type": "string", - "example": null - } - } - } - }, "responses": { - "200": { + "default": { "content": { - "text/csv": {} + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UsageResult" + } + } + } } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "CanViewAccountAndBillingInformation" ] } ], - "summary": "Set custom geo mapping rules for mobile app", + "summary": "Host count month / year", "tags": [ - "Mobile App Configuration" + "Usage" ] } }, - "/api/mobile-app-monitoring/config/{mobileAppId}/ip-masking": { + "/api/instana/version": { "get": { - "operationId": "getMobileAppIpMaskingConfiguration", - "parameters": [ - { - "in": "path", - "name": "mobileAppId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "operationId": "getVersion", "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" + "$ref": "#/components/schemas/InstanaVersionInfo" } } } @@ -9409,24 +9565,25 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "Default" ] } ], - "summary": "Get IP masking configuration for mobile app", + "summary": "API version information", "tags": [ - "Mobile App Configuration" + "Health" ] - }, - "put": { - "operationId": "updateMobileAppIpMaskingConfiguration", + } + }, + "/api/mobile-app-monitoring/analyze/beacon-groups": { + "post": { + "operationId": "getMobileAppBeaconGroups", "parameters": [ { - "in": "path", - "name": "mobileAppId", - "required": true, + "in": "query", + "name": "fillTimeSeries", "schema": { - "type": "string", + "type": "boolean", "example": null } } @@ -9435,17 +9592,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" + "$ref": "#/components/schemas/GetMobileAppBeaconGroups" } } } }, "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" + "$ref": "#/components/schemas/MobileAppBeaconGroupsResult" } } } @@ -9454,25 +9611,24 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureMobileAppMonitoring" + "Default" ] } ], - "summary": "Update IP masking configuration for mobile app", + "summary": "Get grouped beacon metrics", "tags": [ - "Mobile App Configuration" + "Mobile App Analyze" ] } }, - "/api/mobile-app-monitoring/metrics": { + "/api/mobile-app-monitoring/analyze/beacons": { "post": { - "deprecated": true, - "operationId": "getMobileAppBeaconMetrics", + "operationId": "getMobileAppBeacons", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetMobileAppMetrics" + "$ref": "#/components/schemas/GetMobileAppBeacons" } } } @@ -9482,7 +9638,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MobileAppMetricResult" + "$ref": "#/components/schemas/MobileAppBeaconResult" } } } @@ -9495,54 +9651,56 @@ ] } ], - "summary": "Get beacon metrics", + "summary": "Get all beacons", "tags": [ - "Mobile App Metrics" + "Mobile App Analyze" ] } }, - "/api/mobile-app-monitoring/session": { + "/api/mobile-app-monitoring/catalog": { "get": { - "operationId": "getSession", + "operationId": "getMobileAppTagCatalog", "parameters": [ { - "in": "path", - "name": "id", + "in": "query", + "name": "beaconType", "required": true, "schema": { "type": "string", "example": null - }, - "style": "matrix" + } }, { - "in": "path", - "name": "timestamp", + "in": "query", + "name": "useCase", "required": true, "schema": { - "type": "integer", - "format": "int64", + "type": "string", + "enum": [ + "GROUPING", + "FILTERING", + "SMART_ALERTS", + "SMART_ALERTS_LOGS", + "SMART_ALERTS_ADAPTIVE_BASELINE", + "SMART_ALERTS_CUSTOM_PAYLOAD", + "SLI_MANAGEMENT", + "APPLICATION_CONFIG", + "APPLICATION_CONFIG_BLUEPRINT", + "MAINTENANCE_WINDOWS" + ], "example": null - }, - "style": "matrix" + } } ], "responses": { "400": { - "description": "Missing session id or missing timestamp" - }, - "404": { - "description": "Mobile app not found" + "description": "When the combination of beaconType and useCase is unsupported/unknown." }, "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/MobileAppMonitoringBeacon" - } + "$ref": "#/components/schemas/TagCatalog" } } } @@ -9555,30 +9713,25 @@ ] } ], - "summary": "Get session", + "summary": "Get mobile app tag catalog", "tags": [ - "Mobile App Metrics" + "Mobile App Catalog" ] } }, - "/api/mobile-app-monitoring/v2/metrics": { - "post": { - "operationId": "getMobileAppBeaconMetricsV2", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetMobileAppMetricsV2" - } - } - } - }, + "/api/mobile-app-monitoring/catalog/metrics": { + "get": { + "operationId": "getMobileAppMetricCatalog", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MetricAPIResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/MobileAppMonitoringMetricDescription" + } } } } @@ -9591,44 +9744,15 @@ ] } ], - "summary": "Get beacon metrics", + "summary": "Metric catalog", "tags": [ - "Mobile App Metrics" + "Mobile App Catalog" ] } }, - "/api/releases": { + "/api/mobile-app-monitoring/catalog/tags": { "get": { - "operationId": "getAllReleases", - "parameters": [ - { - "in": "query", - "name": "from", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "maxResults", - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - } - ], + "operationId": "getAllMobileAppCatalogTags", "responses": { "default": { "content": { @@ -9637,7 +9761,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/ReleaseWithMetadata" + "$ref": "#/components/schemas/Tag" } } } @@ -9647,34 +9771,29 @@ "security": [ { "ApiKeyAuth": [ - "CanConfigureReleases" + "Default" ] } ], - "summary": "Get all releases", + "summary": "Get all existing mobile app tags", "tags": [ - "Releases" - ], - "description": "This endpoint exposes the Releases functionality.\n\nThese APIs can be used to create, update, delete and fetch already existing releases.\n\n## Mandatory Parameters:\n\n**releaseId:** A unique identifier assigned to each release.\n\n## Optional Parameters:\n\n**name:** Name of the exact release you want to retrieve, eg. \"Release-161\", \"Release-162\".\n\n**start:** Start time of the particular release (as UNIX timestamp in milliseconds).\n\n**from:** Filters the releases to retrieve only the releases which have \"start\" time greater than or equal to this value (as UNIX timestamp in milliseconds).\n\n**to:** Filters the releases to retrieve only the releases which have \"start\" time lesser than or equal to this value (as UNIX timestamp in milliseconds).\n\n**maxResults:** Maximum number of releases to be retrieved.\n\n## Defaults:\n\n**from, to, maxResults:** By default these parameters are not set. " - }, - "post": { - "operationId": "postRelease", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Release" - } - } - }, - "required": true - }, + "Mobile App Catalog" + ] + } + }, + "/api/mobile-app-monitoring/config": { + "get": { + "operationId": "getMobileAppConfig", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReleaseWithMetadata" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/MobileApp" + } } } } @@ -9683,24 +9802,21 @@ "security": [ { "ApiKeyAuth": [ - "CanConfigureReleases" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "Create release", + "summary": "Get configured mobile apps", "tags": [ - "Releases" + "Mobile App Configuration" ] - } - }, - "/api/releases/{releaseId}": { - "delete": { - "operationId": "deleteRelease", + }, + "post": { + "operationId": "postMobileAppConfig", "parameters": [ { - "in": "path", - "name": "releaseId", - "required": true, + "in": "query", + "name": "name", "schema": { "type": "string", "example": null @@ -9708,31 +9824,40 @@ } ], "responses": { - "default": { + "200": { "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/MobileApp" + } + } }, - "description": "default response" + "description": "Mobile App successfully configured" + }, + "400": { + "description": "Missing name query parameter or name already used for a configured mobile app." } }, "security": [ { "ApiKeyAuth": [ - "CanConfigureReleases" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "Delete release", + "summary": "Configure new mobile app", "tags": [ - "Releases" + "Mobile App Configuration" ] - }, - "get": { - "operationId": "getRelease", + } + }, + "/api/mobile-app-monitoring/config/{mobileAppId}": { + "delete": { + "operationId": "deleteMobileAppConfig", "parameters": [ { "in": "path", - "name": "releaseId", + "name": "mobileAppId", "required": true, "schema": { "type": "string", @@ -9741,112 +9866,91 @@ } ], "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReleaseWithMetadata" - } - } - } + "204": { + "description": "Mobile app successfully removed" } }, "security": [ { "ApiKeyAuth": [ - "CanConfigureReleases" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "Get release", + "summary": "Remove mobile app", "tags": [ - "Releases" + "Mobile App Configuration" ] }, "put": { - "operationId": "putRelease", + "operationId": "renameMobileAppConfig", "parameters": [ { "in": "path", - "name": "releaseId", + "name": "mobileAppId", "required": true, "schema": { "type": "string", "example": null } + }, + { + "in": "query", + "name": "name", + "schema": { + "type": "string", + "example": null + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Release" - } - } - }, - "required": true - }, "responses": { - "default": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReleaseWithMetadata" + "$ref": "#/components/schemas/MobileApp" } } - } + }, + "description": "Mobile app successfully renamed" + }, + "400": { + "description": "Missing name query parameter or name already used for a configured mobile app." } }, "security": [ { "ApiKeyAuth": [ - "CanConfigureReleases" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "Update release", + "summary": "Rename mobile app", "tags": [ - "Releases" + "Mobile App Configuration" ] } }, - "/api/settings/accesslog": { + "/api/mobile-app-monitoring/config/{mobileAppId}/geo-location": { "get": { - "operationId": "getAccessLogs", + "operationId": "getMobileAppGeoLocationConfiguration", "parameters": [ { - "in": "query", - "name": "offset", - "schema": { - "type": "integer", - "format": "int32", - "example": null - } - }, - { - "in": "query", - "name": "query", + "in": "path", + "name": "mobileAppId", + "required": true, "schema": { "type": "string", "example": null } - }, - { - "in": "query", - "name": "pageSize", - "schema": { - "type": "integer", - "format": "int32", - "example": null - } } ], "responses": { - "default": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccessLogResponse" + "$ref": "#/components/schemas/GeoLocationConfiguration" } } } @@ -9855,62 +9959,43 @@ "security": [ { "ApiKeyAuth": [ - "ViewAuditLog" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "Access log", + "summary": "Get geo location configuration for mobile app", "tags": [ - "Audit Log" + "Mobile App Configuration" ] - } - }, - "/api/settings/apdex": { - "get": { - "operationId": "getAllApdexConfigurations", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ApdexConfiguration" - } - } - } - } - } - }, - "security": [ + }, + "put": { + "operationId": "updateMobileAppGeoLocationConfiguration", + "parameters": [ { - "ApiKeyAuth": [] + "in": "path", + "name": "mobileAppId", + "required": true, + "schema": { + "type": "string", + "example": null + } } ], - "summary": "Get All Apdex Configurations", - "tags": [ - "Apdex Settings" - ] - }, - "post": { - "operationId": "createApdexConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApdexConfigurationInput" + "$ref": "#/components/schemas/GeoLocationConfiguration" } } - }, - "required": true + } }, "responses": { - "default": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApdexConfiguration" + "$ref": "#/components/schemas/GeoLocationConfiguration" } } } @@ -9918,35 +10003,24 @@ }, "security": [ { - "ApiKeyAuth": [] + "ApiKeyAuth": [ + "ConfigureMobileAppMonitoring" + ] } ], - "summary": "Create Apdex Configuration", + "summary": "Update geo location configuration for mobile app", "tags": [ - "Apdex Settings" + "Mobile App Configuration" ] } }, - "/api/settings/apdex/{entityType}/{entityId}": { + "/api/mobile-app-monitoring/config/{mobileAppId}/geo-mapping-rules": { "get": { - "operationId": "getApdexConfigurationsForEntityTypeAndId", + "operationId": "getMobileAppGeoMappingRules", "parameters": [ { "in": "path", - "name": "entityType", - "required": true, - "schema": { - "type": "string", - "enum": [ - "APPLICATION", - "WEBSITE" - ], - "example": null - } - }, - { - "in": "path", - "name": "entityId", + "name": "mobileAppId", "required": true, "schema": { "type": "string", @@ -9955,38 +10029,30 @@ } ], "responses": { - "default": { + "200": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ApdexConfiguration" - } - } - } + "text/csv": {} } } }, "security": [ { - "ApiKeyAuth": [] + "ApiKeyAuth": [ + "ConfigureMobileAppMonitoring" + ] } ], - "summary": "Get all Apdex configurations for entity type and entity id", + "summary": "Get custom geo mapping rules for mobile app", "tags": [ - "Apdex Settings" + "Mobile App Configuration" ] - } - }, - "/api/settings/apdex/{id}": { - "delete": { - "operationId": "deleteApdexConfiguration", + }, + "put": { + "operationId": "setMobileAppGeoMappingRules", "parameters": [ { "in": "path", - "name": "id", + "name": "mobileAppId", "required": true, "schema": { "type": "string", @@ -9994,30 +10060,43 @@ } } ], + "requestBody": { + "content": { + "text/csv": { + "schema": { + "type": "string", + "example": null + } + } + } + }, "responses": { - "default": { + "200": { "content": { - "application/json": {} - }, - "description": "default response" + "text/csv": {} + } } }, "security": [ { - "ApiKeyAuth": [] + "ApiKeyAuth": [ + "ConfigureMobileAppMonitoring" + ] } ], - "summary": "Delete Apdex Configuration", + "summary": "Set custom geo mapping rules for mobile app", "tags": [ - "Apdex Settings" + "Mobile App Configuration" ] - }, + } + }, + "/api/mobile-app-monitoring/config/{mobileAppId}/ip-masking": { "get": { - "operationId": "getApdexConfiguration", + "operationId": "getMobileAppIpMaskingConfiguration", "parameters": [ { "in": "path", - "name": "id", + "name": "mobileAppId", "required": true, "schema": { "type": "string", @@ -10026,11 +10105,11 @@ } ], "responses": { - "default": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApdexConfiguration" + "$ref": "#/components/schemas/IpMaskingConfiguration" } } } @@ -10038,28 +10117,44 @@ }, "security": [ { - "ApiKeyAuth": [] + "ApiKeyAuth": [ + "ConfigureMobileAppMonitoring" + ] } ], - "summary": "Get Apdex Configuration", + "summary": "Get IP masking configuration for mobile app", "tags": [ - "Apdex Settings" + "Mobile App Configuration" ] - } - }, - "/api/settings/api-tokens": { - "get": { - "operationId": "getApiTokens", + }, + "put": { + "operationId": "updateMobileAppIpMaskingConfiguration", + "parameters": [ + { + "in": "path", + "name": "mobileAppId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpMaskingConfiguration" + } + } + } + }, "responses": { - "default": { + "200": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ApiToken" - } + "$ref": "#/components/schemas/IpMaskingConfiguration" } } } @@ -10068,36 +10163,35 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureApiTokens" + "ConfigureMobileAppMonitoring" ] } ], - "summary": "All API tokens", + "summary": "Update IP masking configuration for mobile app", "tags": [ - "API Token" + "Mobile App Configuration" ] - }, + } + }, + "/api/mobile-app-monitoring/metrics": { "post": { - "operationId": "postApiToken", + "deprecated": true, + "operationId": "getMobileAppBeaconMetrics", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiToken" + "$ref": "#/components/schemas/GetMobileAppMetrics" } } - }, - "required": true + } }, "responses": { - "400": { - "description": "If token already exist on other environment." - }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiToken" + "$ref": "#/components/schemas/MobileAppMetricResult" } } } @@ -10106,69 +10200,58 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureApiTokens" + "Default" ] } ], - "summary": "Create an API token", + "summary": "Get beacon metrics", "tags": [ - "API Token" + "Mobile App Metrics" ] } }, - "/api/settings/api-tokens/{internalId}": { - "delete": { - "operationId": "deleteApiToken", + "/api/mobile-app-monitoring/session": { + "get": { + "operationId": "getSession", "parameters": [ { "in": "path", - "name": "internalId", + "name": "id", "required": true, "schema": { "type": "string", "example": null - } - } - ], - "responses": { - "default": { - "content": { - "application/json": {} }, - "description": "default response" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureApiTokens" - ] - } - ], - "summary": "Delete API token", - "tags": [ - "API Token" - ] - }, - "get": { - "operationId": "getApiToken", - "parameters": [ + "style": "matrix" + }, { "in": "path", - "name": "internalId", + "name": "timestamp", "required": true, "schema": { - "type": "string", + "type": "integer", + "format": "int64", "example": null - } + }, + "style": "matrix" } ], "responses": { + "400": { + "description": "Missing session id or missing timestamp" + }, + "404": { + "description": "Mobile app not found" + }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiToken" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/MobileAppMonitoringBeacon" + } } } } @@ -10177,47 +10260,34 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureApiTokens" + "Default" ] } ], - "summary": "API token", + "summary": "Get session", "tags": [ - "API Token" + "Mobile App Metrics" ] - }, - "put": { - "operationId": "putApiToken", - "parameters": [ - { - "in": "path", - "name": "internalId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + } + }, + "/api/mobile-app-monitoring/v2/metrics": { + "post": { + "operationId": "getMobileAppBeaconMetricsV2", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiToken" + "$ref": "#/components/schemas/GetMobileAppMetricsV2" } } - }, - "required": true + } }, "responses": { - "400": { - "description": "If token already exist on other environment." - }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiToken" + "$ref": "#/components/schemas/MetricAPIResult" } } } @@ -10226,40 +10296,41 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureApiTokens" + "Default" ] } ], - "summary": "Create or update an API token", + "summary": "Get beacon metrics", "tags": [ - "API Token" + "Mobile App Metrics" ] } }, - "/api/settings/auditlog": { + "/api/releases": { "get": { - "operationId": "getAuditLogs", + "operationId": "getAllReleases", "parameters": [ { "in": "query", - "name": "offset", + "name": "from", "schema": { "type": "integer", - "format": "int32", + "format": "int64", "example": null } }, { "in": "query", - "name": "query", + "name": "to", "schema": { - "type": "string", + "type": "integer", + "format": "int64", "example": null } }, { "in": "query", - "name": "pageSize", + "name": "maxResults", "schema": { "type": "integer", "format": "int32", @@ -10267,66 +10338,6 @@ } } ], - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AuditLogUiResponse" - } - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ViewAuditLog" - ] - } - ], - "summary": "Audit log", - "tags": [ - "Audit Log" - ] - } - }, - "/api/settings/invitations": { - "delete": { - "operationId": "revokePendingInvitation", - "parameters": [ - { - "in": "query", - "name": "email", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], - "responses": { - "default": { - "content": { - "application/json": {} - }, - "description": "default response" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureUsers" - ] - } - ], - "summary": "Revoke pending invitation", - "tags": [ - "User" - ] - }, - "get": { - "operationId": "getInvitations", "responses": { "default": { "content": { @@ -10335,7 +10346,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/InvitationResult" + "$ref": "#/components/schemas/ReleaseWithMetadata" } } } @@ -10345,26 +10356,23 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "CanConfigureReleases" ] } ], - "summary": "All pending invitations", + "summary": "Get all releases", "tags": [ - "User" - ] + "Releases" + ], + "description": "This endpoint exposes the Releases functionality.\n\nThese APIs can be used to create, update, delete and fetch already existing releases.\n\n## Mandatory Parameters:\n\n**releaseId:** A unique identifier assigned to each release.\n\n## Optional Parameters:\n\n**name:** Name of the exact release you want to retrieve, eg. \"Release-161\", \"Release-162\".\n\n**start:** Start time of the particular release (as UNIX timestamp in milliseconds).\n\n**from:** Filters the releases to retrieve only the releases which have \"start\" time greater than or equal to this value (as UNIX timestamp in milliseconds).\n\n**to:** Filters the releases to retrieve only the releases which have \"start\" time lesser than or equal to this value (as UNIX timestamp in milliseconds).\n\n**maxResults:** Maximum number of releases to be retrieved.\n\n## Defaults:\n\n**from, to, maxResults:** By default these parameters are not set. " }, "post": { - "operationId": "inviteUsers", + "operationId": "postRelease", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/Invitation" - } + "$ref": "#/components/schemas/Release" } } }, @@ -10375,43 +10383,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/InvitationResponse" - } - } - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureUsers" - ] - } - ], - "summary": "Send user invitations", - "tags": [ - "User" - ] - } - }, - "/api/settings/maintenance": { - "get": { - "deprecated": true, - "operationId": "getMaintenanceConfigs", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ValidatedMaintenanceConfigWithStatus" - } + "$ref": "#/components/schemas/ReleaseWithMetadata" } } } @@ -10420,24 +10392,23 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "CanConfigureReleases" ] } ], - "summary": "All maintenance configurations", + "summary": "Create release", "tags": [ - "Maintenance Configuration" + "Releases" ] } }, - "/api/settings/maintenance/{id}": { + "/api/releases/{releaseId}": { "delete": { - "deprecated": true, - "operationId": "deleteMaintenanceConfig", + "operationId": "deleteRelease", "parameters": [ { "in": "path", - "name": "id", + "name": "releaseId", "required": true, "schema": { "type": "string", @@ -10456,22 +10427,21 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "CanConfigureReleases" ] } ], - "summary": "Delete maintenance configuration", + "summary": "Delete release", "tags": [ - "Maintenance Configuration" + "Releases" ] }, "get": { - "deprecated": true, - "operationId": "getMaintenanceConfig", + "operationId": "getRelease", "parameters": [ { "in": "path", - "name": "id", + "name": "releaseId", "required": true, "schema": { "type": "string", @@ -10484,7 +10454,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MaintenanceConfigWithLastUpdated" + "$ref": "#/components/schemas/ReleaseWithMetadata" } } } @@ -10493,22 +10463,21 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "CanConfigureReleases" ] } ], - "summary": "Maintenance configuration", + "summary": "Get release", "tags": [ - "Maintenance Configuration" + "Releases" ] }, "put": { - "deprecated": true, - "operationId": "putMaintenanceConfig", + "operationId": "putRelease", "parameters": [ { "in": "path", - "name": "id", + "name": "releaseId", "required": true, "schema": { "type": "string", @@ -10520,27 +10489,18 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MaintenanceConfig" + "$ref": "#/components/schemas/Release" } } }, "required": true }, "responses": { - "200": { - "description": "Maintenance config has been created or updated, and successfully scheduled immediately if needed" - }, - "202": { - "description": "Maintenance config has been created or updated, but could not to be scheduled immediately. It will therefore be scheduled during the next auto-refresh with a delay of up to 4 minutes." - }, - "400": { - "description": "Invalid JSON or mismatching IDs have been provided" - }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MaintenanceConfigWithLastUpdated" + "$ref": "#/components/schemas/ReleaseWithMetadata" } } } @@ -10549,65 +10509,53 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "CanConfigureReleases" ] } ], - "summary": "Create or update maintenance configuration", + "summary": "Update release", "tags": [ - "Maintenance Configuration" + "Releases" ] } }, - "/api/settings/rbac/groups": { + "/api/settings/accesslog": { "get": { - "operationId": "getGroups", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ApiGroup" - } - } - } + "operationId": "getAccessLogs", + "parameters": [ + { + "in": "query", + "name": "offset", + "schema": { + "type": "integer", + "format": "int32", + "example": null } - } - }, - "security": [ + }, { - "ApiKeyAuth": [ - "ConfigureGroups" - ] - } - ], - "summary": "Get groups", - "tags": [ - "Groups" - ], - "description": "Retrieve the list of all groups on the tenant together with the `Permission Set` for the tenant unit.\n\nThe `Permission Set` object contains a set of permissions applied to the group.\n\nIn case `permissions` include the entry e.g. `LIMITED_APPLICATIONS_SCOPE`, this group will have limited access to application area.\n\nThe areas are included inside the `permissionSet`.\n\nThe scopeRoleId is a fixed value for each area type:\n\n| Area | value |\n| ----------------------- | ------------- |\n| applicationIds | -100 |\n| kubernetesClusterUUIDs | -200 |\n| kubernetesNamespaceUIDs | -300 |\n| websiteIds | -400 |\n| mobileAppIds | -500 |\n| infraDfqFilter | -600 |\n\nFor example:\n\n```\n[\n {\n \"id\": \"7hwdhtt7TU2CJDgYXgwwww\",\n \"name\": \"Scoped Group\",\n \"members\": [\n {\n \"userId\": \"61892cfdfcffab03016b2950\",\n \"email\": \"jhon@example.com\"\n }\n ],\n \"permissionSet\": {\n \"permissions\": [\n \"CAN_VIEW_LOGS\",\n \"CAN_VIEW_TRACE_DETAILS\",\n \"CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS\",\n \"ACCESS_APPLICATIONS\",\n \"LIMITED_APPLICATIONS_SCOPE\", \n \"ACCESS_KUBERNETES\",\n \"LIMITED_KUBERNETES_SCOPE\",\n \"ACCESS_INFRASTRUCTURE_APPS\",\n \"LIMITED_INFRASTRUCTURE_SCOPE\",\n \"LIMITED_WEBSITES_SCOPE\",\n \n ],\n \"applicationIds\": [\n {\n \"scopeId\": \"1qvWgVfLTNqi9gGTcCaNUw\",\n \"scopeRoleId\": \"-100\"\n }\n ],\n \"kubernetesClusterUUIDs\": [\n {\n \"scopeId\": \"induced\",\n \"scopeRoleId\": \"-200\"\n }\n ],\n \"kubernetesNamespaceUIDs\": [],\n \"websiteIds\": [],\n \"mobileAppIds\": [],\n \"infraDfqFilter\": {\n \"scopeId\": \"production\",\n \"scopeRoleId\": \"-600\"\n }\n }\n]\n```\nIn this case `Scoped Group` has no access to websites due to having `LIMITED_WEBSITES_SCOPE` but not `ACCESS_WEBSITES`.\n\nAlso due to having `LIMITED_APPLICATIONS_SCOPE`, the only visible application is the one with this id: `1qvWgVfLTNqi9gGTcCaNUw`.\n\nSame applies to `kubernetesClusterUUIDs`, `kubernetesNamespaceUIDs` and `infraDfqFilter`, with the only difference is that `infraDfqFilter`\nuses a filter \"production\" instead of an id." - }, - "post": { - "operationId": "createGroup", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiGroup" - } + "in": "query", + "name": "query", + "schema": { + "type": "string", + "example": null } }, - "required": true - }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int32", + "example": null + } + } + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/AccessLogResponse" } } } @@ -10616,31 +10564,19 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureGroups" + "ViewAuditLog" ] } ], - "summary": "Create group", + "summary": "Access log", "tags": [ - "Groups" - ], - "description": "Creates a group on the tenant. Each group entry also needs a `Permission Set` per unit.\n\nThe `Permission Set` object contains a set of permissions applied to the group.\n\nIn case `permissions` include the entry e.g. `LIMITED_APPLICATIONS_SCOPE`, this group will have limited access to application area.\n\nPossible access permissions values are:\n\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n\nThe `id` value for the group is ignored, a new id is generated.\n\nThe `scopeRoleId` is ignored, the id corresponding to the area is used.\n\nThe `scopeId` is the id for the corresponding resource." + "Audit Log" + ] } }, - "/api/settings/rbac/groups/user/{email}": { + "/api/settings/apdex": { "get": { - "operationId": "getGroupsByUser", - "parameters": [ - { - "in": "path", - "name": "email", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "operationId": "getAllApdexConfigurations", "responses": { "default": { "content": { @@ -10649,7 +10585,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/ApdexConfiguration" } } } @@ -10658,42 +10594,21 @@ }, "security": [ { - "ApiKeyAuth": [ - "ConfigureGroups" - ] + "ApiKeyAuth": [] } ], - "summary": "Get groups of a single user", + "summary": "Get All Apdex Configurations", "tags": [ - "Groups" - ], - "description": "Returns a list of all groups a user belongs to. This includes data from these groups, the `members`, the `name` and the `Permission set`." - } - }, - "/api/settings/rbac/groups/{groupId}/permissions": { - "put": { - "operationId": "addPermissionsOnGroup", - "parameters": [ - { - "in": "path", - "name": "groupId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "Apdex Settings" + ] + }, + "post": { + "operationId": "createApdexConfiguration", "requestBody": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - } + "$ref": "#/components/schemas/ApdexConfigurationInput" } } }, @@ -10704,7 +10619,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/ApdexConfiguration" } } } @@ -10712,25 +10627,35 @@ }, "security": [ { - "ApiKeyAuth": [ - "ConfigureGroups" - ] + "ApiKeyAuth": [] } ], - "summary": "Add permissions to group", + "summary": "Create Apdex Configuration", "tags": [ - "Groups" - ], - "description": "Add a permission to a group. Permissions are strings associated with the group that some resources requires to fulfill requests.\n\nExamples of `Permissions`:\n\n- `CAN_CONFIGURE_SERVICE_MAPPING`\n- `CAN_CONFIGURE_APPLICATIONS`\n- `CAN_CONFIGURE_EUM_APPLICATIONS`\n- `CAN_CONFIGURE_MOBILE_APP_MONITORING`\n- `CAN_CONFIGURE_USERS`\n- `CAN_INSTALL_NEW_AGENTS`\n- `CAN_SEE_USAGE_INFORMATION`\n- `CAN_CONFIGURE_INTEGRATIONS`\n- `CAN_SEE_ON_PREM_LICENE_INFORMATION`\n- `CAN_CONFIGURE_CUSTOM_ALERTS`\n- `CAN_CONFIGURE_API_TOKENS`\n- `CAN_CONFIGURE_PERSONAL_API_TOKENS`\n- `CAN_CONFIGURE_AGENT_RUN_MODE`\n- `CAN_VIEW_AUDIT_LOG`\n- `CAN_CONFIGURE_AGENTS`\n- `CAN_CONFIGURE_AUTHENTICATION_METHODS`\n- `CAN_CONFIGURE_TEAMS`\n- `CAN_CONFIGURE_RELEASES`\n- `CAN_CONFIGURE_LOG_MANAGEMENT`\n- `CAN_CREATE_PUBLIC_CUSTOM_DASHBOARDS`\n- `CAN_VIEW_LOGS`\n- `CAN_VIEW_TRACE_DETAILS`\n- `CAN_CONFIGURE_SESSION_SETTINGS`\n- `CAN_CONFIGURE_SERVICE_LEVEL_INDICATORS`\n- `CAN_CONFIGURE_GLOBAL_ALERT_PAYLOAD`\n- `CAN_CONFIGURE_GLOBAL_ALERT_CONFIGS`\n- `CAN_VIEW_ACCOUNT_AND_BILLING_INFORMATION`\n- `CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS`\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n" + "Apdex Settings" + ] } }, - "/api/settings/rbac/groups/{groupId}/users": { - "put": { - "operationId": "addUsersToGroup", + "/api/settings/apdex/{entityType}/{entityId}": { + "get": { + "operationId": "getApdexConfigurationsForEntityTypeAndId", "parameters": [ { "in": "path", - "name": "groupId", + "name": "entityType", + "required": true, + "schema": { + "type": "string", + "enum": [ + "APPLICATION", + "WEBSITE" + ], + "example": null + } + }, + { + "in": "path", + "name": "entityId", "required": true, "schema": { "type": "string", @@ -10738,27 +10663,16 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - } - } - } - }, - "required": true - }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ApdexConfiguration" + } } } } @@ -10766,21 +10680,18 @@ }, "security": [ { - "ApiKeyAuth": [ - "ConfigureGroups" - ] + "ApiKeyAuth": [] } ], - "summary": "Add users to group", + "summary": "Get all Apdex configurations for entity type and entity id", "tags": [ - "Groups" - ], - "description": "Add one or more users to a group. The array contains the ids of the users to be added." + "Apdex Settings" + ] } }, - "/api/settings/rbac/groups/{id}": { + "/api/settings/apdex/{id}": { "delete": { - "operationId": "deleteGroup", + "operationId": "deleteApdexConfiguration", "parameters": [ { "in": "path", @@ -10802,18 +10713,16 @@ }, "security": [ { - "ApiKeyAuth": [ - "ConfigureGroups" - ] + "ApiKeyAuth": [] } ], - "summary": "Delete group", + "summary": "Delete Apdex Configuration", "tags": [ - "Groups" + "Apdex Settings" ] }, "get": { - "operationId": "getGroup", + "operationId": "getApdexConfiguration", "parameters": [ { "in": "path", @@ -10830,7 +10739,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/ApdexConfiguration" } } } @@ -10838,46 +10747,66 @@ }, "security": [ { - "ApiKeyAuth": [ - "ConfigureGroups" - ] + "ApiKeyAuth": [] } ], - "summary": "Get group", + "summary": "Get Apdex Configuration", "tags": [ - "Groups" - ], - "description": "Returns group data, including the `Permission set`. See [get groups](#operation/getGroups) for more details." - }, - "put": { - "operationId": "updateGroup", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null + "Apdex Settings" + ] + } + }, + "/api/settings/api-tokens": { + "get": { + "operationId": "getApiTokens", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ApiToken" + } + } + } } } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureApiTokens" + ] + } ], + "summary": "All API tokens", + "tags": [ + "API Token" + ] + }, + "post": { + "operationId": "postApiToken", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/ApiToken" } } }, "required": true }, "responses": { + "400": { + "description": "If token already exist on other environment." + }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiGroup" + "$ref": "#/components/schemas/ApiToken" } } } @@ -10886,33 +10815,23 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureGroups" + "ConfigureApiTokens" ] } ], - "summary": "Update group", + "summary": "Create an API token", "tags": [ - "Groups" - ], - "description": "Add a permission to a group. Permissions are strings associated with the group that some resources requires to fulfill requests.\n\nExamples of `Permissions`:\n\n- `CAN_CONFIGURE_SERVICE_MAPPING`\n- `CAN_CONFIGURE_APPLICATIONS`\n- `CAN_CONFIGURE_EUM_APPLICATIONS`\n- `CAN_CONFIGURE_MOBILE_APP_MONITORING`\n- `CAN_CONFIGURE_USERS`\n- `CAN_INSTALL_NEW_AGENTS`\n- `CAN_SEE_USAGE_INFORMATION`\n- `CAN_CONFIGURE_INTEGRATIONS`\n- `CAN_SEE_ON_PREM_LICENE_INFORMATION`\n- `CAN_CONFIGURE_CUSTOM_ALERTS`\n- `CAN_CONFIGURE_API_TOKENS`\n- `CAN_CONFIGURE_PERSONAL_API_TOKENS`\n- `CAN_CONFIGURE_AGENT_RUN_MODE`\n- `CAN_VIEW_AUDIT_LOG`\n- `CAN_CONFIGURE_AGENTS`\n- `CAN_CONFIGURE_AUTHENTICATION_METHODS`\n- `CAN_CONFIGURE_TEAMS`\n- `CAN_CONFIGURE_RELEASES`\n- `CAN_CONFIGURE_LOG_MANAGEMENT`\n- `CAN_CREATE_PUBLIC_CUSTOM_DASHBOARDS`\n- `CAN_VIEW_LOGS`\n- `CAN_VIEW_TRACE_DETAILS`\n- `CAN_CONFIGURE_SESSION_SETTINGS`\n- `CAN_CONFIGURE_SERVICE_LEVEL_INDICATORS`\n- `CAN_CONFIGURE_GLOBAL_ALERT_PAYLOAD`\n- `CAN_CONFIGURE_GLOBAL_ALERT_CONFIGS`\n- `CAN_VIEW_ACCOUNT_AND_BILLING_INFORMATION`\n- `CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS`\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n" + "API Token" + ] } }, - "/api/settings/rbac/groups/{id}/user/{userId}": { + "/api/settings/api-tokens/{internalId}": { "delete": { - "operationId": "removeUserFromGroup", + "operationId": "deleteApiToken", "parameters": [ { "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "path", - "name": "userId", + "name": "internalId", "required": true, "schema": { "type": "string", @@ -10931,29 +10850,34 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureGroups" + "ConfigureApiTokens" ] } ], - "summary": "Remove user from group", + "summary": "Delete API token", "tags": [ - "Groups" + "API Token" ] - } - }, - "/api/settings/rbac/mappings": { + }, "get": { - "operationId": "getGroupMappings", + "operationId": "getApiToken", + "parameters": [ + { + "in": "path", + "name": "internalId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/GroupMapping" - } + "$ref": "#/components/schemas/ApiToken" } } } @@ -10962,34 +10886,47 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureApiTokens" ] } ], - "summary": "Get all group mappings", + "summary": "API token", "tags": [ - "Groups" - ], - "description": "If mappings between groups on the identity provider (LDAP, OIDC, SAML) and Instana groups where configured, this will return a list of those mappings.\n\nThis can be configured through the [api](#operation/createGroupMapping) or on Instana graphical user interface at Settings > Authentication > IDENTITY PROVIDERS > Group Mapping." + "API Token" + ] }, - "post": { - "operationId": "createGroupMapping", + "put": { + "operationId": "putApiToken", + "parameters": [ + { + "in": "path", + "name": "internalId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMapping" + "$ref": "#/components/schemas/ApiToken" } } }, "required": true }, "responses": { + "400": { + "description": "If token already exist on other environment." + }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMapping" + "$ref": "#/components/schemas/ApiToken" } } } @@ -10998,80 +10935,53 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureApiTokens" ] } ], - "summary": "Create group mapping", + "summary": "Create or update an API token", "tags": [ - "Groups" - ], - "description": "Creates a mapping between a group from the IdP (LDAP, OIDC, SAML) and an Instana group.\n\nIf the IdP is configured and mappings are enabled, the `key` `value` pairs a user sent by the idp will be evaluated every time this user logs in.\n\nIf they match the mapping, the user will be assigned to the group corresponding to the `groupId`.\n\nInside the payload, the `id` for the mapping is ignored, and instead, Instana generates a new id." + "API Token" + ] } }, - "/api/settings/rbac/mappings/{id}": { - "delete": { - "operationId": "deleteGroupMapping", + "/api/settings/auditlog": { + "get": { + "operationId": "getAuditLogs", "parameters": [ { - "in": "path", - "name": "id", - "required": true, + "in": "query", + "name": "offset", "schema": { - "type": "string", + "type": "integer", + "format": "int32", "example": null } - } - ], - "responses": { - "default": { - "content": { - "application/json": {} - }, - "description": "default response" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "Default" - ] - } - ], - "summary": "Delete group mapping", - "tags": [ - "Groups" - ] - }, - "put": { - "operationId": "updateGroupMapping", - "parameters": [ + }, { - "in": "path", - "name": "id", - "required": true, + "in": "query", + "name": "query", "schema": { "type": "string", "example": null } + }, + { + "in": "query", + "name": "pageSize", + "schema": { + "type": "integer", + "format": "int32", + "example": null + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GroupMapping" - } - } - }, - "required": true - }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GroupMapping" + "$ref": "#/components/schemas/AuditLogUiResponse" } } } @@ -11080,20 +10990,19 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ViewAuditLog" ] } ], - "summary": "Update group mapping", + "summary": "Audit log", "tags": [ - "Groups" - ], - "description": "See [creating group mapping](#operation/createGroupMapping)" + "Audit Log" + ] } }, - "/api/settings/session": { + "/api/settings/authentication/googleSSO": { "delete": { - "operationId": "deleteSessionSettings", + "operationId": "deleteGoogleSSOConfig", "responses": { "default": { "content": { @@ -11105,88 +11014,134 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureSessionSettings" + "ConfigureAuthenticationMethods" ] } ], - "summary": "Delete session settings", + "summary": "Delete Google SSO configuration", "tags": [ - "Session Settings" + "Authentication" ] - }, - "get": { - "operationId": "getSessionSettings", + } + }, + "/api/settings/authentication/ldap": { + "delete": { + "operationId": "deleteLdapConfig", "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionSettings" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "ConfigureSessionSettings" + "ConfigureAuthenticationMethods" ] } ], - "summary": "Get session settings", + "summary": "Delete LDAP configuration", "tags": [ - "Session Settings" + "Authentication" ] - }, - "put": { - "operationId": "setSessionSettings", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionSettings" - } - } - } - }, + } + }, + "/api/settings/authentication/oidc": { + "delete": { + "operationId": "deleteOidcConfig", "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SessionSettings" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "ConfigureSessionSettings" + "ConfigureAuthenticationMethods" ] } ], - "summary": "Configure session settings", + "summary": "Delete OIDC configuration", "tags": [ - "Session Settings" + "Authentication" ] } }, - "/api/settings/sli": { - "get": { - "deprecated": true, - "operationId": "getAllSliConfigs", + "/api/settings/authentication/saml": { + "delete": { + "operationId": "deleteSamlConfig", + "responses": { + "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureAuthenticationMethods" + ] + } + ], + "summary": "Delete SAML configuration", + "tags": [ + "Authentication" + ] + } + }, + "/api/settings/invitations": { + "delete": { + "operationId": "revokePendingInvitation", + "parameters": [ + { + "in": "query", + "name": "email", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "responses": { "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureUsers" + ] + } + ], + "summary": "Revoke pending invitation", + "tags": [ + "User" + ], + "description": "This API endpoint allows to delete an invitation, requires the users’ email as a Query parameter.\n" + }, + "get": { + "operationId": "getInvitations", + "responses": { + "200": { "content": { "application/json": { "schema": { "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + "$ref": "#/components/schemas/InvitationResult" } } } @@ -11196,34 +11151,71 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureUsers" ] } ], - "summary": "Get All SLI Configs", + "summary": "All pending invitations", "tags": [ - "SLI Settings" - ] + "User" + ], + "description": "This API endpoint retrieves the list of all pending invitations. \nDuring the IdP configuration all pending invitations will be dismissed and whilst an IdP is configured invitations are prevented. " }, "post": { - "deprecated": true, - "operationId": "createSliConfig", + "operationId": "inviteUsers", "requestBody": { "content": { "application/json": { + "example": [ + { + "email": "username@example.com", + "groupId": "-1" + } + ], "schema": { - "$ref": "#/components/schemas/SliConfiguration" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/Invitation" + } } } }, "required": true }, "responses": { - "default": { + "200": { "content": { "application/json": { + "example": { + "invitationResults": [ + { + "userEmail": "username@example.com", + "invitationStatus": "SUCCESS" + } + ] + }, "schema": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/InvitationResponse" + } + } + } + } + }, + "400": { + "content": { + "application/json": { + "example": { + "errors": [ + "Please set at least one email" + ] + }, + "schema": { + "type": "string", + "example": null } } } @@ -11232,21 +11224,53 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureUsers" ] } ], - "summary": "Create SLI Config", + "summary": "Send user invitations", "tags": [ - "SLI Settings" + "User" ], - "description": "This endpoint creates the Service Level Indicator Configuration\n\n## Mandatory Parameters:\n\n- **id** A unique identifier for each SLI configuration\n\n- **sliName:** Name for the SLI configuration\n\n- **sliEntity:** Entity of the SLI configuration\n\n### SLI Entity specific parameters\n\nDepending on the chosen `sliType` in the `sliEntity`, there are further required parameters:\n\n#### Application SLI entity\n\nThis option can be used to create a Time-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n- **metricConfiguration.metricName:** The metric name on which to compute the SLI\n\n- **metricConfiguration.metricAggregation:** The aggregation of the metric\n\n- **metricConfiguration.threshold:** Threshold for the metric\n\n#### Availability SLI entity\n\nThis opetion can be used to create an Event-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n## Deprecated Parameters for Availability SLI entity:\n\n- **sliEntity.serviceId:** The ID if the Service in he context of an Application Perspective\n\n- **sliEntity.endpointId:** The ID of an Endpoint belonging to a Service\n\n- **sliEntity.goodEventFilters:** The list of TagFilters to match good events / calls\n\n- **sliEntity.badEventFilters:** The list of TagFilters to match bad events / calls\n\nAll of these filters can be included using the list of TagFilterExpressions via **sliEntity.goodEventFilterExpression** and **sliEntity.badEventFilterExpression**.\nThese parameters will be removed in the upcoming releases.\n" + "description": "This API endpoint allows to invite users to this tenant. \nEach user requires the email address and the group to which the user will be added initially. \n\nInviting users whilst an IdP is configured will always result in failures, as in this case users will be provisioned during the login based on the IdP configuration. \nDuring the IdP configurations all pending invitations are automatically revoked.\n\nInviting users who are already members of the tenant will also provide an error result. " } }, - "/api/settings/sli/{id}": { + "/api/settings/maintenance": { + "get": { + "deprecated": true, + "operationId": "getMaintenanceConfigs", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ValidatedMaintenanceConfigWithStatus" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureCustomAlerts" + ] + } + ], + "summary": "All maintenance configurations", + "tags": [ + "Maintenance Configuration" + ] + } + }, + "/api/settings/maintenance/{id}": { "delete": { "deprecated": true, - "operationId": "deleteSliConfig", + "operationId": "deleteMaintenanceConfig", "parameters": [ { "in": "path", @@ -11269,18 +11293,18 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureCustomAlerts" ] } ], - "summary": "Delete SLI Config", + "summary": "Delete maintenance configuration", "tags": [ - "SLI Settings" + "Maintenance Configuration" ] }, "get": { "deprecated": true, - "operationId": "getSliConfig", + "operationId": "getMaintenanceConfig", "parameters": [ { "in": "path", @@ -11297,7 +11321,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + "$ref": "#/components/schemas/MaintenanceConfigWithLastUpdated" } } } @@ -11306,18 +11330,18 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureCustomAlerts" ] } ], - "summary": "Get SLI Config", + "summary": "Maintenance configuration", "tags": [ - "SLI Settings" + "Maintenance Configuration" ] }, "put": { "deprecated": true, - "operationId": "updateSliConfig", + "operationId": "putMaintenanceConfig", "parameters": [ { "in": "path", @@ -11333,18 +11357,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SliConfiguration" + "$ref": "#/components/schemas/MaintenanceConfig" } } }, "required": true }, "responses": { + "200": { + "description": "Maintenance config has been created or updated, and successfully scheduled immediately if needed" + }, + "202": { + "description": "Maintenance config has been created or updated, but could not to be scheduled immediately. It will therefore be scheduled during the next auto-refresh with a delay of up to 4 minutes." + }, + "400": { + "description": "Invalid JSON or mismatching IDs have been provided" + }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + "$ref": "#/components/schemas/MaintenanceConfigWithLastUpdated" } } } @@ -11353,47 +11386,29 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureCustomAlerts" ] } ], - "summary": "Update SLI Config", + "summary": "Create or update maintenance configuration", "tags": [ - "SLI Settings" + "Maintenance Configuration" ] } }, - "/api/settings/synthetic-calls": { - "delete": { - "operationId": "deleteSyntheticCall", - "responses": { - "default": { - "content": { - "application/json": {} - }, - "description": "default response" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureServiceMapping" - ] - } - ], - "summary": "Delete synthetic call configurations", - "tags": [ - "Synthetic Calls" - ] - }, + "/api/settings/rbac/groups": { "get": { - "operationId": "getSyntheticCalls", + "operationId": "getGroups", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticCallWithDefaultsConfig" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ApiGroup" + } } } } @@ -11402,22 +11417,23 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureServiceMapping" + "ConfigureGroups" ] } ], - "summary": "Synthetic call configurations", + "summary": "Get groups", "tags": [ - "Synthetic Calls" - ] + "Groups" + ], + "description": "Retrieve the list of all groups on the tenant together with the `Permission Set` for the tenant unit.\n\nThe `Permission Set` object contains a set of permissions applied to the group.\n\nIn case `permissions` include the entry e.g. `LIMITED_APPLICATIONS_SCOPE`, this group will have limited access to application area.\n\nThe areas are included inside the `permissionSet`.\n\nThe scopeRoleId is a fixed value for each area type:\n\n| Area | value |\n| ----------------------- | ------------- |\n| applicationIds | -100 |\n| kubernetesClusterUUIDs | -200 |\n| kubernetesNamespaceUIDs | -300 |\n| websiteIds | -400 |\n| mobileAppIds | -500 |\n| infraDfqFilter | -600 |\n\nFor example:\n\n```\n[\n {\n \"id\": \"7hwdhtt7TU2CJDgYXgwwww\",\n \"name\": \"Scoped Group\",\n \"members\": [\n {\n \"userId\": \"61892cfdfcffab03016b2950\",\n \"email\": \"jhon@example.com\"\n }\n ],\n \"permissionSet\": {\n \"permissions\": [\n \"CAN_VIEW_LOGS\",\n \"CAN_VIEW_TRACE_DETAILS\",\n \"CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS\",\n \"ACCESS_APPLICATIONS\",\n \"LIMITED_APPLICATIONS_SCOPE\", \n \"ACCESS_KUBERNETES\",\n \"LIMITED_KUBERNETES_SCOPE\",\n \"ACCESS_INFRASTRUCTURE_APPS\",\n \"LIMITED_INFRASTRUCTURE_SCOPE\",\n \"LIMITED_WEBSITES_SCOPE\",\n \n ],\n \"applicationIds\": [\n {\n \"scopeId\": \"1qvWgVfLTNqi9gGTcCaNUw\",\n \"scopeRoleId\": \"-100\"\n }\n ],\n \"kubernetesClusterUUIDs\": [\n {\n \"scopeId\": \"induced\",\n \"scopeRoleId\": \"-200\"\n }\n ],\n \"kubernetesNamespaceUIDs\": [],\n \"websiteIds\": [],\n \"mobileAppIds\": [],\n \"infraDfqFilter\": {\n \"scopeId\": \"production\",\n \"scopeRoleId\": \"-600\"\n }\n }\n]\n```\nIn this case `Scoped Group` has no access to websites due to having `LIMITED_WEBSITES_SCOPE` but not `ACCESS_WEBSITES`.\n\nAlso due to having `LIMITED_APPLICATIONS_SCOPE`, the only visible application is the one with this id: `1qvWgVfLTNqi9gGTcCaNUw`.\n\nSame applies to `kubernetesClusterUUIDs`, `kubernetesNamespaceUIDs` and `infraDfqFilter`, with the only difference is that `infraDfqFilter`\nuses a filter \"production\" instead of an id." }, - "put": { - "operationId": "updateSyntheticCall", + "post": { + "operationId": "createGroup", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticCallConfig" + "$ref": "#/components/schemas/ApiCreateGroup" } } }, @@ -11426,27 +11442,42 @@ "responses": { "default": { "content": { - "application/json": {} - }, - "description": "default response" + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiGroup" + } + } + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureServiceMapping" + "ConfigureGroups" ] } ], - "summary": "Update synthetic call configurations", + "summary": "Create group", "tags": [ - "Synthetic Calls" - ] + "Groups" + ], + "description": "Creates a group on the tenant. Each group entry also needs a `Permission Set` per unit.\n\nThe `Permission Set` object contains a set of permissions applied to the group.\n\nIn case `permissions` include the entry e.g. `LIMITED_APPLICATIONS_SCOPE`, this group will have limited access to application area.\n\nPossible access permissions values are:\n\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n\nThe `id` value for the group is ignored, a new id is generated.\n\nThe `scopeRoleId` is ignored, the id corresponding to the area is used.\n\nThe `scopeId` is the id for the corresponding resource." } }, - "/api/settings/users": { + "/api/settings/rbac/groups/user/{email}": { "get": { - "operationId": "getUsers", + "operationId": "getGroupsByUser", + "parameters": [ + { + "in": "path", + "name": "email", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "responses": { "default": { "content": { @@ -11455,7 +11486,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/UserResult" + "$ref": "#/components/schemas/ApiGroup" } } } @@ -11465,25 +11496,52 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "ConfigureGroups" ] } ], - "summary": "All users (without invitations)", + "summary": "Get groups of a single user", "tags": [ - "User" - ] + "Groups" + ], + "description": "Returns a list of all groups a user belongs to. This includes data from these groups, the `members`, the `name` and the `Permission set`." } }, - "/api/settings/users/overview": { - "get": { - "operationId": "getUsersIncludingInvitations", + "/api/settings/rbac/groups/{groupId}/permissions": { + "put": { + "operationId": "addPermissionsOnGroup", + "parameters": [ + { + "in": "path", + "name": "groupId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + } + } + }, + "required": true + }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UsersResult" + "$ref": "#/components/schemas/ApiGroup" } } } @@ -11492,23 +11550,24 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "ConfigureGroups" ] } ], - "summary": "All users (incl. invitations)", + "summary": "Add permissions to group", "tags": [ - "User" - ] + "Groups" + ], + "description": "Add a permission to a group. Permissions are strings associated with the group that some resources requires to fulfill requests.\n\nExamples of `Permissions`:\n\n- `CAN_CONFIGURE_SERVICE_MAPPING`\n- `CAN_CONFIGURE_APPLICATIONS`\n- `CAN_CONFIGURE_EUM_APPLICATIONS`\n- `CAN_CONFIGURE_MOBILE_APP_MONITORING`\n- `CAN_CONFIGURE_USERS`\n- `CAN_INSTALL_NEW_AGENTS`\n- `CAN_SEE_USAGE_INFORMATION`\n- `CAN_CONFIGURE_INTEGRATIONS`\n- `CAN_SEE_ON_PREM_LICENE_INFORMATION`\n- `CAN_CONFIGURE_CUSTOM_ALERTS`\n- `CAN_CONFIGURE_API_TOKENS`\n- `CAN_CONFIGURE_PERSONAL_API_TOKENS`\n- `CAN_CONFIGURE_AGENT_RUN_MODE`\n- `CAN_VIEW_AUDIT_LOG`\n- `CAN_CONFIGURE_AGENTS`\n- `CAN_CONFIGURE_AUTHENTICATION_METHODS`\n- `CAN_CONFIGURE_TEAMS`\n- `CAN_CONFIGURE_RELEASES`\n- `CAN_CONFIGURE_LOG_MANAGEMENT`\n- `CAN_CREATE_PUBLIC_CUSTOM_DASHBOARDS`\n- `CAN_VIEW_LOGS`\n- `CAN_VIEW_TRACE_DETAILS`\n- `CAN_CONFIGURE_SESSION_SETTINGS`\n- `CAN_CONFIGURE_SERVICE_LEVEL_INDICATORS`\n- `CAN_CONFIGURE_GLOBAL_ALERT_PAYLOAD`\n- `CAN_CONFIGURE_GLOBAL_ALERT_CONFIGS`\n- `CAN_VIEW_ACCOUNT_AND_BILLING_INFORMATION`\n- `CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS`\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n" } }, - "/api/settings/users/{email}": { + "/api/settings/rbac/groups/{groupId}/users": { "put": { - "operationId": "updateUser", + "operationId": "addUsersToGroup", "parameters": [ { "in": "path", - "name": "email", + "name": "groupId", "required": true, "schema": { "type": "string", @@ -11520,39 +11579,49 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EditUser" + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } } } - } + }, + "required": true }, "responses": { "default": { "content": { - "application/json": {} - }, - "description": "default response" + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiGroup" + } + } + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "ConfigureGroups" ] } ], - "summary": "Change user name of single user", + "summary": "Add users to group", "tags": [ - "User" - ] + "Groups" + ], + "description": "Add one or more users to a group. The array contains the ids of the users to be added." } }, - "/api/settings/users/{userId}": { + "/api/settings/rbac/groups/{id}": { "delete": { - "operationId": "removeUserFromTenant", + "operationId": "deleteGroup", "parameters": [ { "in": "path", - "name": "userId", + "name": "id", "required": true, "schema": { "type": "string", @@ -11571,21 +11640,21 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "ConfigureGroups" ] } ], - "summary": "Remove user from tenant", + "summary": "Delete group", "tags": [ - "User" + "Groups" ] }, "get": { - "operationId": "getUserById", + "operationId": "getGroup", "parameters": [ { "in": "path", - "name": "userId", + "name": "id", "required": true, "schema": { "type": "string", @@ -11598,11 +11667,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/UserResult" - } + "$ref": "#/components/schemas/ApiGroup" } } } @@ -11611,83 +11676,45 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureUsers" + "ConfigureGroups" ] } ], - "summary": "Get single user", + "summary": "Get group", "tags": [ - "User" - ] - } - }, - "/api/settings/v2/maintenance": { - "get": { - "operationId": "getMaintenanceConfigsV2", + "Groups" + ], + "description": "Returns group data, including the `Permission set`. See [get groups](#operation/getGroups) for more details." + }, + "put": { + "operationId": "updateGroup", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiGroup" + } + } + }, + "required": true + }, "responses": { "default": { "content": { "application/json": { - "example": [ - { - "id": "maintenanceConfigId", - "name": "maintenanceConfig", - "query": "entity.application.id:\"anApplicationId\"", - "scheduling": { - "start": 1680703219486, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "rrule": "FREQ=DAILY;INTERVAL=1;COUNT=1", - "timezoneId": "UTC", - "type": "RECURRENT" - }, - "paused": false, - "lastUpdated": 1680703219678, - "state": "EXPIRED", - "validVersion": 1, - "occurrence": { - "start": 1680703219000, - "end": 1680710419000 - }, - "invalid": false, - "applicationNames": [ - "anApplicationName" - ] - }, - { - "id": "anotherMaintenanceConfigId", - "name": "anotherMaintenanceConfig", - "query": "entity.type:ibmz.db2", - "scheduling": { - "start": 1680703219486, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "rrule": "FREQ=DAILY;INTERVAL=1;COUNT=1", - "timezoneId": "UTC", - "type": "RECURRENT" - }, - "paused": false, - "lastUpdated": 1680703219678, - "state": "EXPIRED", - "validVersion": 1, - "occurrence": { - "start": 1680703219000, - "end": 1680710419000 - }, - "invalid": false, - "applicationNames": [] - } - ], "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/ValidatedMaintenanceConfigV2WithStateAndOccurrence" - } + "$ref": "#/components/schemas/ApiGroup" } } } @@ -11696,23 +11723,22 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "ConfigureGroups" ] } ], - "summary": "All maintenance configurations", + "summary": "Update group", "tags": [ - "Maintenance Configuration" + "Groups" ], - "description": "This endpoint retrieves all available maintenance configurations. " + "description": "Add a permission to a group. Permissions are strings associated with the group that some resources requires to fulfill requests.\n\nExamples of `Permissions`:\n\n- `CAN_CONFIGURE_SERVICE_MAPPING`\n- `CAN_CONFIGURE_APPLICATIONS`\n- `CAN_CONFIGURE_EUM_APPLICATIONS`\n- `CAN_CONFIGURE_MOBILE_APP_MONITORING`\n- `CAN_CONFIGURE_USERS`\n- `CAN_INSTALL_NEW_AGENTS`\n- `CAN_SEE_USAGE_INFORMATION`\n- `CAN_CONFIGURE_INTEGRATIONS`\n- `CAN_SEE_ON_PREM_LICENE_INFORMATION`\n- `CAN_CONFIGURE_CUSTOM_ALERTS`\n- `CAN_CONFIGURE_API_TOKENS`\n- `CAN_CONFIGURE_PERSONAL_API_TOKENS`\n- `CAN_CONFIGURE_AGENT_RUN_MODE`\n- `CAN_VIEW_AUDIT_LOG`\n- `CAN_CONFIGURE_AGENTS`\n- `CAN_CONFIGURE_AUTHENTICATION_METHODS`\n- `CAN_CONFIGURE_TEAMS`\n- `CAN_CONFIGURE_RELEASES`\n- `CAN_CONFIGURE_LOG_MANAGEMENT`\n- `CAN_CREATE_PUBLIC_CUSTOM_DASHBOARDS`\n- `CAN_VIEW_LOGS`\n- `CAN_VIEW_TRACE_DETAILS`\n- `CAN_CONFIGURE_SESSION_SETTINGS`\n- `CAN_CONFIGURE_SERVICE_LEVEL_INDICATORS`\n- `CAN_CONFIGURE_GLOBAL_ALERT_PAYLOAD`\n- `CAN_CONFIGURE_GLOBAL_ALERT_CONFIGS`\n- `CAN_VIEW_ACCOUNT_AND_BILLING_INFORMATION`\n- `CAN_EDIT_ALL_ACCESSIBLE_CUSTOM_DASHBOARDS`\n- `LIMITED_APPLICATIONS_SCOPE`\n- `LIMITED_WEBSITES_SCOPE`\n- `LIMITED_KUBERNETES_SCOPE`\n- `LIMITED_MOBILE_APPS_SCOPE`\n- `LIMITED_INFRASTRUCTURE_SCOPE`\n- `ACCESS_APPLICATIONS`\n- `ACCESS_WEBSITES`\n- `ACCESS_KUBERNETES`\n- `ACCESS_MOBILE_APPS`\n- `ACCESS_INFRASTRUCTURE`\n" } }, - "/api/settings/v2/maintenance/{id}": { + "/api/settings/rbac/groups/{id}/user/{userId}": { "delete": { - "operationId": "deleteMaintenanceConfigV2", + "operationId": "removeUserFromGroup", "parameters": [ { - "example": "exampleMaintenanceConfigId", "in": "path", "name": "id", "required": true, @@ -11720,6 +11746,15 @@ "type": "string", "example": null } + }, + { + "in": "path", + "name": "userId", + "required": true, + "schema": { + "type": "string", + "example": null + } } ], "responses": { @@ -11733,57 +11768,29 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "ConfigureGroups" ] } ], - "summary": "Delete maintenance configuration", + "summary": "Remove user from group", "tags": [ - "Maintenance Configuration" - ], - "description": "This endpoint deletes a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to delete." - }, - "get": { - "operationId": "getMaintenanceConfigV2", - "parameters": [ - { - "example": "exampleMaintenanceConfigId", - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "Groups" + ] + } + }, + "/api/settings/rbac/mappings": { + "get": { + "operationId": "getGroupMappings", "responses": { "default": { "content": { "application/json": { - "example": { - "id": "maintenanceConfigId", - "name": "maintenanceConfig", - "query": "", - "scheduling": { - "start": 1683864000000, - "duration": { - "amount": 24, - "unit": "HOURS" - }, - "type": "ONE_TIME" - }, - "paused": false, - "validVersion": 1, - "lastUpdated": 1683901553115, - "state": "EXPIRED", - "occurrence": { - "start": 1683864000000, - "end": 1683950400000 - } - }, "schema": { - "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/GroupMapping" + } } } } @@ -11792,102 +11799,34 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "Default" ] } ], - "summary": "Get maintenance configuration", + "summary": "Get all group mappings", "tags": [ - "Maintenance Configuration" + "Groups" ], - "description": "This endpoint retrieves a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to fetch." + "description": "If mappings between groups on the identity provider (LDAP, OIDC, SAML) and Instana groups where configured, this will return a list of those mappings.\n\nThis can be configured through the [api](#operation/createGroupMapping) or on Instana graphical user interface at Settings > Authentication > IDENTITY PROVIDERS > Group Mapping." }, - "put": { - "operationId": "putMaintenanceConfigV2", - "parameters": [ - { - "example": "exampleMaintenanceConfigId", - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "post": { + "operationId": "createGroupMapping", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MaintenanceConfigV2" - }, - "examples": { - "payload": { - "value": { - "id": "maintenanceConfigID", - "name": "sampleMaintenanceConfig", - "query": "entity.application.id:\"appID\" OR entity.application.id:\"anotherAppID\" ", - "scheduling": { - "start": 1683827571245, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "type": "RECURRENT", - "rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=SA;COUNT=10", - "timezoneId": "America/New_York" - } - } - } + "$ref": "#/components/schemas/GroupMapping" } } }, "required": true }, "responses": { - "200": { - "content": { - "application/json": { - "example": { - "id": "maintenanceConfigId", - "name": "maintenanceConfig", - "query": "entity.application.id:\"anApplicationId\"", - "scheduling": { - "start": 1684249020728, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "type": "ONE_TIME" - }, - "paused": false, - "validVersion": 1, - "lastUpdated": 1684249021306, - "state": "ACTIVE", - "occurrence": { - "start": 1684249020728, - "end": 1684256220728 - } - } - } - }, - "description": "Maintenance config has been created or updated, and successfully scheduled immediately if needed" - }, - "202": { - "description": "Maintenance config has been created or updated, but could not to be scheduled immediately. It will therefore be scheduled during the next auto-refresh with a delay of up to 4 minutes." - }, - "400": { - "description": "The provided maintenance configuration is invalid." - }, - "422": { - "description": "The provided maintenance configuration is incomplete or cannot be processed." - }, "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" + "$ref": "#/components/schemas/GroupMapping" } } } @@ -11896,59 +11835,26 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "Default" ] } ], - "summary": "Create or update maintenance configuration", + "summary": "Create group mapping", "tags": [ - "Maintenance Configuration" + "Groups" ], - "description": "This endpoint creates or updates a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to create or update.\n\n### Maintenance Configuration Input\nThis is a description for the fields in the request body:\n\n**id**: maintenance configuration unique id \n**name**: maintenance configuration name \n**query**: dynamic focus query used to filter alert notifications that will be muted \n**scheduling**: defines when the maintenance configuration will be scheduled\n- **start**: time in milliseconds from epoch\n- **duration**: duration of each maintenance window occurrence in the maintenance configuration\n - **amount**: the amount of time\n - **unit**: the unit of time\n- **type**: `ONE_TIME` or `RECURRENT`\n- **rrule**: for `RECURRENT` mainteance configurations, the RRULE standard from the [iCalendar Spec](https://datatracker.ietf.org/doc/html/rfc5545)\n\n### **RRULE Support**\nYou can use the [RRULE tool](https://icalendar.org/rrule-tool.html) for generating RRULEs.\n\n\nThe following RRULE tokens are supported: `FREQ`, `UNTIL`, `COUNT`, `INTERVAL`, `BYDAY`, `BYMONTHDAY`, `BYMONTH`.\n\n**Additional Constraints:**\n\n1. For `MONTHLY` and `YEARLY`, you can only specify one value for `BYDAY` and `BYMONTHDAY`. \n2. The maximum `INTERVAL` allowed is as follows: \n - DAILY is 365\n - WEEKLY is 52\n - MONTHLY is 12\n - YEARLY is 1\n3. If an `UNTIL` date is specified, the value needs to be in UTC." + "description": "Creates a mapping between a group from the IdP (LDAP, OIDC, SAML) and an Instana group.\n\nIf the IdP is configured and mappings are enabled, the `key` `value` pairs a user sent by the idp will be evaluated every time this user logs in.\n\nIf they match the mapping, the user will be assigned to the group corresponding to the `groupId`.\n\nInside the payload, the `id` for the mapping is ignored, and instead, Instana generates a new id." } }, - "/api/settings/v2/maintenance/{id}/pause": { - "put": { - "operationId": "pauseRecurrentMaintenanceConfiguration", - "parameters": [ - { - "example": "exampleMaintenanceConfigId", - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "/api/settings/rbac/mappings/identityProvider/restrictEmptyIdpGroups": { + "get": { + "operationId": "getIdentityProviderPatch", "responses": { "default": { "content": { "application/json": { - "example": { - "id": "maintenanceConfigId", - "name": "maintenanceConfig", - "query": "entity.application.id:\"anApplicationId\"", - "scheduling": { - "start": 1684251745262, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "type": "ONE_TIME" - }, - "paused": true, - "validVersion": 1, - "lastUpdated": 1684251750475, - "state": "PAUSED", - "occurrence": { - "start": 1684251745262, - "end": 1684258945262 - } - }, "schema": { - "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" + "$ref": "#/components/schemas/IdentityProviderPatch" } } } @@ -11957,23 +11863,55 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "Default" ] } ], - "summary": "Pause maintenance configuration", + "summary": "Check user restrictions for empty Idp group mapping", "tags": [ - "Maintenance Configuration" + "Groups" ], - "description": "This endpoint pauses a maintenance configuration given its ID.\n\nWhen you pause a maintenance configuration, you will start receiving alerts again for the scope defined in the maintenance configuration.\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to pause.\n" + "description": "Returns `RestrictEmptyIdpGroups` value indicating if access is denied for empty Idp group mapping. `RestrictEmptyIdpGroups = true` indicates that the tenant is locked and only those users are allowed access that have at least one working mapping rule applied to them during the login process." + }, + "put": { + "operationId": "updateIdentityProvider", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IdentityProviderPatch" + } + } + }, + "required": true + }, + "responses": { + "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Allow/Restrict users with empty Idp group mapping", + "tags": [ + "Groups" + ], + "description": "Set the RestrictEmptyIdpGroups value as true/false. See [Check user restrictions for empty Idp group mapping](#operation/getIdentityProviderPatch) for more details." } }, - "/api/settings/v2/maintenance/{id}/resume": { - "put": { - "operationId": "resumeRecurrentMaintenanceConfiguration", + "/api/settings/rbac/mappings/{id}": { + "delete": { + "operationId": "deleteGroupMapping", "parameters": [ { - "example": "exampleMaintenanceConfigId", "in": "path", "name": "id", "required": true, @@ -11986,62 +11924,52 @@ "responses": { "default": { "content": { - "application/json": { - "example": { - "id": "maintenanceConfigId", - "name": "maintenanceConfig", - "query": "entity.application.id:\"anApplicationId\"", - "scheduling": { - "start": 1684251745262, - "duration": { - "amount": 2, - "unit": "HOURS" - }, - "type": "ONE_TIME" - }, - "paused": false, - "validVersion": 1, - "lastUpdated": 1684251933433, - "state": "ACTIVE", - "occurrence": { - "start": 1684251745262, - "end": 1684258945262 - } - }, - "schema": { - "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "ConfigureCustomAlerts" + "Default" ] } ], - "summary": "Resume maintenance configuration", + "summary": "Delete group mapping", "tags": [ - "Maintenance Configuration" - ], - "description": "This endpoint resumes a maintenance configuration given its ID.\n\nIf the maintenance configuration becomes active when you resume the maintenance configuration, you will not receive alerts for the scope defined in the maintenance configuration.\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to resume.\n" - } - }, - "/api/settings/v2/sli": { - "get": { - "operationId": "getAllSliConfigsV2", - "responses": { - "default": { - "content": { - "application/json": { + "Groups" + ] + }, + "put": { + "operationId": "updateGroupMapping", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupMapping" + } + } + }, + "required": true + }, + "responses": { + "default": { + "content": { + "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" - } + "$ref": "#/components/schemas/GroupMapping" } } } @@ -12050,33 +11978,82 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "Default" ] } ], - "summary": "Get All SLI Configs", + "summary": "Update group mapping", "tags": [ - "SLI Settings" + "Groups" + ], + "description": "See [creating group mapping](#operation/createGroupMapping)" + } + }, + "/api/settings/session": { + "delete": { + "operationId": "deleteSessionSettings", + "responses": { + "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureSessionSettings" + ] + } + ], + "summary": "Delete session settings", + "tags": [ + "Session Settings" ] }, - "post": { - "operationId": "createSliConfigV2", + "get": { + "operationId": "getSessionSettings", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SessionSettings" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureSessionSettings" + ] + } + ], + "summary": "Get session settings", + "tags": [ + "Session Settings" + ] + }, + "put": { + "operationId": "setSessionSettings", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SliConfiguration" + "$ref": "#/components/schemas/SessionSettings" } } - }, - "required": true + } }, "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + "$ref": "#/components/schemas/SessionSettings" } } } @@ -12085,44 +12062,20 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureSessionSettings" ] } ], - "summary": "Create SLI Config", + "summary": "Configure session settings", "tags": [ - "SLI Settings" - ], - "description": "This endpoint creates the Service Level Indicator Configuration\n\n## Mandatory Parameters:\n\n- **id** A unique identifier for each SLI configuration\n\n- **sliName:** Name for the SLI configuration\n\n- **sliEntity:** Entity of the SLI configuration\n\n### SLI Entity specific parameters\n\nDepending on the chosen `sliType` in the `sliEntity`, there are further required parameters:\n\n#### Application SLI entity\n\nThis option can be used to create a Time-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n- **metricConfiguration.metricName:** The metric name on which to compute the SLI\n\n- **metricConfiguration.metricAggregation:** The aggregation of the metric\n\n- **metricConfiguration.threshold:** Threshold for the metric\n\n#### Availability SLI entity\n\nThis opetion can be used to create an Event-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n## Deprecated Parameters for Availability SLI entity:\n\n- **sliEntity.serviceId:** The ID if the Service in he context of an Application Perspective\n\n- **sliEntity.endpointId:** The ID of an Endpoint belonging to a Service\n\n- **sliEntity.goodEventFilters:** The list of TagFilters to match good events / calls\n\n- **sliEntity.badEventFilters:** The list of TagFilters to match bad events / calls\n\nAll of these filters can be included using the list of TagFilterExpressions via **sliEntity.goodEventFilterExpression** and **sliEntity.badEventFilterExpression**.\nThese parameters will be removed in the upcoming releases.\n" + "Session Settings" + ] } }, - "/api/settings/v2/sli/{entityType}/{entityId}": { + "/api/settings/sli": { "get": { - "operationId": "getSliConfigsForEntityTypeAndIdV2", - "parameters": [ - { - "in": "path", - "name": "entityType", - "required": true, - "schema": { - "type": "string", - "enum": [ - "APPLICATION", - "WEBSITE" - ], - "example": null - } - }, - { - "in": "path", - "name": "entityId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + "deprecated": true, + "operationId": "getAllSliConfigs", "responses": { "default": { "content": { @@ -12145,15 +12098,53 @@ ] } ], - "summary": "Get all SLI configs for entity type and entity id", + "summary": "Get All SLI Configs", "tags": [ "SLI Settings" ] + }, + "post": { + "deprecated": true, + "operationId": "createSliConfig", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SliConfiguration" + } + } + }, + "required": true + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "canConfigureServiceLevelIndicators" + ] + } + ], + "summary": "Create SLI Config", + "tags": [ + "SLI Settings" + ], + "description": "This endpoint creates the Service Level Indicator Configuration\n\n## Mandatory Parameters:\n\n- **id** A unique identifier for each SLI configuration\n\n- **sliName:** Name for the SLI configuration\n\n- **sliEntity:** Entity of the SLI configuration\n\n### SLI Entity specific parameters\n\nDepending on the chosen `sliType` in the `sliEntity`, there are further required parameters:\n\n#### Application SLI entity\n\nThis option can be used to create a Time-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n- **metricConfiguration.metricName:** The metric name on which to compute the SLI\n\n- **metricConfiguration.metricAggregation:** The aggregation of the metric\n\n- **metricConfiguration.threshold:** Threshold for the metric\n\n#### Availability SLI entity\n\nThis opetion can be used to create an Event-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n## Deprecated Parameters for Availability SLI entity:\n\n- **sliEntity.serviceId:** The ID if the Service in he context of an Application Perspective\n\n- **sliEntity.endpointId:** The ID of an Endpoint belonging to a Service\n\n- **sliEntity.goodEventFilters:** The list of TagFilters to match good events / calls\n\n- **sliEntity.badEventFilters:** The list of TagFilters to match bad events / calls\n\nAll of these filters can be included using the list of TagFilterExpressions via **sliEntity.goodEventFilterExpression** and **sliEntity.badEventFilterExpression**.\nThese parameters will be removed in the upcoming releases.\n" } }, - "/api/settings/v2/sli/{id}": { + "/api/settings/sli/{id}": { "delete": { - "operationId": "deleteSliConfigV2", + "deprecated": true, + "operationId": "deleteSliConfig", "parameters": [ { "in": "path", @@ -12186,7 +12177,8 @@ ] }, "get": { - "operationId": "getSliConfigV2", + "deprecated": true, + "operationId": "getSliConfig", "parameters": [ { "in": "path", @@ -12220,59 +12212,37 @@ "tags": [ "SLI Settings" ] - } - }, - "/api/sli/report/{sliId}": { - "get": { - "operationId": "getSli", + }, + "put": { + "deprecated": true, + "operationId": "updateSliConfig", "parameters": [ { "in": "path", - "name": "sliId", + "name": "id", "required": true, "schema": { "type": "string", "example": null } - }, - { - "in": "query", - "name": "slo", - "schema": { - "type": "number", - "format": "double", - "example": null - } - }, - { - "in": "query", - "name": "from", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SliConfiguration" + } + } + }, + "required": true + }, "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/SliReport" - } + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" } } } @@ -12285,103 +12255,43 @@ ] } ], - "summary": "Generate SLI report", + "summary": "Update SLI Config", "tags": [ - "SLI Report" + "SLI Settings" ] } }, - "/api/slo/report/{sloId}": { - "get": { - "operationId": "getSlo", - "parameters": [ - { - "in": "path", - "name": "sloId", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "from", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - }, - { - "in": "query", - "name": "to", - "schema": { - "type": "integer", - "format": "int64", - "example": null - } - } - ], + "/api/settings/synthetic-calls": { + "delete": { + "operationId": "deleteSyntheticCall", "responses": { "default": { "content": { - "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/SliReport" - } - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "canConfigureServiceLevelIndicators" + "ConfigureServiceMapping" ] } ], - "summary": "Generate SLI report", + "summary": "Delete synthetic call configurations", "tags": [ - "SLO Report" + "Synthetic Calls" ] - } - }, - "/api/synthetics/catalog": { + }, "get": { - "operationId": "getSyntheticTagCatalog", - "parameters": [ - { - "in": "query", - "name": "useCase", - "required": true, - "schema": { - "type": "string", - "enum": [ - "GROUPING", - "FILTERING", - "SMART_ALERTS", - "SMART_ALERTS_LOGS", - "SMART_ALERTS_ADAPTIVE_BASELINE", - "SMART_ALERTS_CUSTOM_PAYLOAD", - "SLI_MANAGEMENT", - "APPLICATION_CONFIG", - "APPLICATION_CONFIG_BLUEPRINT" - ], - "example": null - } - } - ], + "operationId": "getSyntheticCalls", "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TagCatalog" + "$ref": "#/components/schemas/SyntheticCallWithDefaultsConfig" } } } @@ -12390,70 +12300,71 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureServiceMapping" ] } ], - "summary": "Get synthetic tag catalog", + "summary": "Synthetic call configurations", "tags": [ - "Synthetic Catalog" + "Synthetic Calls" ] - } - }, - "/api/synthetics/results": { - "post": { - "operationId": "getSyntheticResult", + }, + "put": { + "operationId": "updateSyntheticCall", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetTestResult" + "$ref": "#/components/schemas/SyntheticCallConfig" } } - } + }, + "required": true }, "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestResult" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureServiceMapping" ] } ], - "summary": "Get Synthetic test playback results", + "summary": "Update synthetic call configurations", "tags": [ - "Synthetic Test Playback Results" + "Synthetic Calls" ] } }, - "/api/synthetics/results/list": { - "post": { - "operationId": "getSyntheticResultList", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTestResultList" - } - } - } - }, + "/api/settings/users": { + "get": { + "operationId": "getUsers", "responses": { "default": { "content": { "application/json": { + "example": [ + { + "id": "userId", + "email": "username@example.com", + "fullName": "username", + "lastLoggedIn": 1636434847190, + "groupCount": 1, + "tfaEnabled": false + } + ], "schema": { - "$ref": "#/components/schemas/TestResultListResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UserResult" + } } } } @@ -12462,34 +12373,44 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureUsers" ] } ], - "summary": "Get a list of Synthetic test playback results", + "summary": "All users (without invitations)", "tags": [ - "Synthetic Test Playback Results" + "User" ] } }, - "/api/synthetics/results/locationsummarylist": { - "post": { - "operationId": "getLocationSummaryList", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTestResultBase" - } - } - } - }, + "/api/settings/users/overview": { + "get": { + "operationId": "getUsersIncludingInvitations", "responses": { "default": { "content": { "application/json": { + "example": { + "users": [ + { + "id": "userId1", + "email": "username@example.com", + "fullName": "fullName", + "lastLoggedIn": 1699313025975, + "groupCount": null, + "tfaEnabled": null + } + ], + "invitations": [ + { + "id": "userId2", + "email": "username2@example.com", + "groupId": "-3" + } + ] + }, "schema": { - "$ref": "#/components/schemas/TestResultListResult" + "$ref": "#/components/schemas/UsersResult" } } } @@ -12498,24 +12419,38 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureUsers" ] } ], - "summary": "Get a list of Synthetic locations with last run test on each location data", + "summary": "All users (incl. invitations)", "tags": [ - "Synthetic Test Playback Results" + "User" ] } }, - "/api/synthetics/results/testsummarylist": { - "post": { - "operationId": "getTestSummaryList", + "/api/settings/users/{email}": { + "put": { + "operationId": "updateUser", + "parameters": [ + { + "in": "path", + "name": "email", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "requestBody": { "content": { "application/json": { + "example": { + "fullName": "updatedFullName" + }, "schema": { - "$ref": "#/components/schemas/GetTestSummaryResult" + "$ref": "#/components/schemas/EditUser" } } } @@ -12523,43 +12458,65 @@ "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestResultListResult" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureUsers" ] } ], - "summary": "Get a list of Synthetic tests with success rate and average response time data", + "summary": "Change user name of single user", "tags": [ - "Synthetic Test Playback Results" + "User" ] } }, - "/api/synthetics/results/{testid}/{testresultid}": { - "get": { - "operationId": "getSyntheticResultMetadata", + "/api/settings/users/{userId}": { + "delete": { + "operationId": "removeUserFromTenant", "parameters": [ { "in": "path", - "name": "testid", + "name": "userId", "required": true, "schema": { "type": "string", "example": null } - }, + } + ], + "responses": { + "default": { + "content": { + "application/json": {} + }, + "description": "default response" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureUsers" + ] + } + ], + "summary": "Remove user from tenant", + "tags": [ + "User" + ], + "description": "This API endpoint removes a single user from the tenant by their id. \nThe id is provided as a path parameter. \nRemoving a user from a tenant does not delete their user account. The user account will be scheduled for deletion if they are not a member of any tenant." + }, + "get": { + "operationId": "getUserById", + "parameters": [ { "in": "path", - "name": "testresultid", + "name": "userId", "required": true, "schema": { "type": "string", @@ -12571,8 +12528,35 @@ "default": { "content": { "application/json": { + "example": { + "id": "userId", + "preferredName": "preferredName", + "fullName": "fullName", + "email": "username@example.com", + "encryptedPassword": "", + "lastLoggedIn": 1699442707385, + "timestampAcceptedTos": 1696404223545, + "timestampAcceptedPrivacyAgreement": 1696404223545, + "acceptedTosVersion": 6, + "acceptedPrivacyAgreementVersion": 9, + "tenantsWhereMainContact": [], + "tenants": [], + "createDate": 1696404196256, + "emailConfirmed": true, + "tenantIds": [ + "55557f97186b9c0007857730" + ], + "passwordResetAttempt": 0, + "groupCount": null, + "tfaEnabled": null, + "role": null + }, "schema": { - "$ref": "#/components/schemas/TestResultMetadata" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/UserResult" + } } } } @@ -12581,66 +12565,136 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureUsers" ] } ], - "summary": "Get Synthetic test playback detail result description(metadata)", + "summary": "Get single user", "tags": [ - "Synthetic Test Playback Results" - ] + "User" + ], + "description": "This API endpoint retrieves a single user by their id. The id is provided as a path parameter." } }, - "/api/synthetics/results/{testid}/{testresultid}/detail": { + "/api/settings/v2/maintenance": { "get": { - "operationId": "getSyntheticResultDetailData", - "parameters": [ - { - "in": "path", - "name": "testid", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "path", - "name": "testresultid", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "type", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "name", - "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - } - } - } - ], + "operationId": "getMaintenanceConfigsV2", "responses": { "default": { "content": { "application/json": { + "example": [ + { + "id": "maintenanceConfigId", + "name": "maintenanceConfig", + "query": "entity.application.id:\"anApplicationId\"", + "scheduling": { + "start": 1680703219486, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "rrule": "FREQ=DAILY;INTERVAL=1;COUNT=1", + "timezoneId": "UTC", + "type": "RECURRENT" + }, + "paused": false, + "lastUpdated": 1680703219678, + "state": "EXPIRED", + "validVersion": 1, + "occurrence": { + "start": 1680703219000, + "end": 1680710419000 + }, + "invalid": false, + "applicationNames": [ + "anApplicationName" + ] + }, + { + "id": "anotherMaintenanceConfigId", + "name": "anotherMaintenanceConfig", + "query": "entity.type:ibmz.db2", + "scheduling": { + "start": 1680703219486, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "rrule": "FREQ=DAILY;INTERVAL=1;COUNT=1", + "timezoneId": "UTC", + "type": "RECURRENT" + }, + "paused": false, + "lastUpdated": 1680703219678, + "state": "EXPIRED", + "validVersion": 1, + "occurrence": { + "start": 1680703219000, + "end": 1680710419000 + }, + "invalid": false, + "applicationNames": [] + }, + { + "id": "1698949644924", + "name": "sampleMaintenanceConfig", + "query": "", + "scheduling": { + "start": 1698949644924, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=SA;COUNT=10", + "timezoneId": "America/New_York", + "type": "RECURRENT" + }, + "paused": false, + "validVersion": 1, + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "OR", + "elements": [ + { + "type": "TAG_FILTER", + "name": "synthetic.locationLabelAggregated", + "stringValue": "us-east", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "us-east", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + }, + { + "type": "TAG_FILTER", + "name": "synthetic.syntheticType", + "stringValue": "HTTPScript", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "HTTPScript", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + } + ] + }, + "tagFilterExpressionEnabled": true, + "lastUpdated": 1698949645163, + "state": "SCHEDULED", + "occurrence": { + "start": 1699122444000, + "end": 1699129644000 + } + } + ], "schema": { - "$ref": "#/components/schemas/TestResultDetailData" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ValidatedMaintenanceConfigV2WithStateAndOccurrence" + } } } } @@ -12649,41 +12703,25 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureCustomAlerts" ] } ], - "summary": "Get Synthetic test playback result detail data", + "summary": "All maintenance configurations", "tags": [ - "Synthetic Test Playback Results" - ] + "Maintenance Configuration" + ], + "description": "This endpoint retrieves all available maintenance configurations. " } }, - "/api/synthetics/results/{testid}/{testresultid}/file": { - "get": { - "operationId": "getSyntheticResultDetailDataFile", + "/api/settings/v2/maintenance/{id}": { + "delete": { + "operationId": "deleteMaintenanceConfigV2", "parameters": [ { + "example": "exampleMaintenanceConfigId", "in": "path", - "name": "testid", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "path", - "name": "testresultid", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "type", + "name": "id", "required": true, "schema": { "type": "string", @@ -12694,37 +12732,65 @@ "responses": { "default": { "content": { - "application/octet-stream": {} - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "Default" + "ConfigureCustomAlerts" ] } ], - "summary": "Download the synthetic test playback result detail data file", + "summary": "Delete maintenance configuration", "tags": [ - "Synthetic Test Playback Results" - ] - } - }, - "/api/synthetics/settings/credentials": { + "Maintenance Configuration" + ], + "description": "This endpoint deletes a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to delete." + }, "get": { - "operationId": "getSyntheticCredentialNames", + "operationId": "getMaintenanceConfigV2", + "parameters": [ + { + "example": "exampleMaintenanceConfigId", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "responses": { "default": { "content": { "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null + "example": { + "id": "maintenanceConfigId", + "name": "maintenanceConfig", + "query": "", + "scheduling": { + "start": 1683864000000, + "duration": { + "amount": 24, + "unit": "HOURS" + }, + "type": "ONE_TIME" + }, + "paused": false, + "validVersion": 1, + "lastUpdated": 1683901553115, + "state": "EXPIRED", + "occurrence": { + "start": 1683864000000, + "end": 1683950400000 } + }, + "schema": { + "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" } } } @@ -12733,50 +12799,23 @@ "security": [ { "ApiKeyAuth": [ - "canUseSyntheticCredentials", - "canConfigureSyntheticTests" + "ConfigureCustomAlerts" ] } ], - "summary": "All Synthetic Credential Names", + "summary": "Get maintenance configuration", "tags": [ - "Synthetic Settings" - ] + "Maintenance Configuration" + ], + "description": "This endpoint retrieves a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to fetch." }, - "post": { - "operationId": "createSyntheticCredential", - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SyntheticCredentials" - } - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "canConfigureSyntheticCredentials" - ] - } - ], - "summary": "Create a Synthetic Credential", - "tags": [ - "Synthetic Settings" - ], - "description": "This API endpoint creates a credential to be used on Synthetic API Script Tests.\n\n## Mandatory Parameters:\n\n- **credentialName** The name identifying the credential. Credential names must start with a letter and can only contain letters, numbers and underscores. Max length is 64.\n\n- **credentialValue:** Value of the credential to be used on the API Script execution. Credential values are stored encrypted and cannot be queried after creation.\n\n\n## Sample script and payload:\n- A sample script to create a new credential\n\n```\ncurl -k -v -X POST \\\nhttps:///api/synthetics/settings/credentials \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"credentialName\" : \"user1_password\", \n \"credentialValue\" : \"123456\"\n }'\n```\n" - } - }, - "/api/synthetics/settings/credentials/{name}": { - "delete": { - "operationId": "deleteSyntheticCredential", + "put": { + "operationId": "putMaintenanceConfigV2", "parameters": [ { + "example": "exampleMaintenanceConfigId", "in": "path", - "name": "name", + "name": "id", "required": true, "schema": { "type": "string", @@ -12784,78 +12823,197 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceConfigV2" + }, + "examples": { + "payload": { + "value": { + "id": "maintenanceConfigID", + "name": "sampleMaintenanceConfig", + "query": "", + "scheduling": { + "start": 1683827571245, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "type": "RECURRENT", + "rrule": "FREQ=WEEKLY;INTERVAL=2;BYDAY=SA;COUNT=10", + "timezoneId": "America/New_York" + }, + "tagFilterExpressionEnabled": true, + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "OR", + "elements": [ + { + "type": "TAG_FILTER", + "name": "synthetic.locationLabelAggregated", + "stringValue": "us-east", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "us-east", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + }, + { + "type": "TAG_FILTER", + "name": "synthetic.syntheticType", + "stringValue": "HTTPScript", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "HTTPScript", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + } + ] + } + } + } + } + } + }, + "required": true + }, "responses": { - "default": { + "200": { "content": { - "application/json": {} + "application/json": { + "example": { + "id": "maintenanceConfigId", + "name": "maintenanceConfig", + "query": "", + "scheduling": { + "start": 1698938631036, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "type": "ONE_TIME" + }, + "paused": false, + "validVersion": 1, + "tagFilterExpression": { + "type": "EXPRESSION", + "logicalOperator": "OR", + "elements": [ + { + "type": "TAG_FILTER", + "name": "synthetic.locationLabelAggregated", + "stringValue": "us-east", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "us-east", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + }, + { + "type": "TAG_FILTER", + "name": "synthetic.syntheticType", + "stringValue": "HTTPScript", + "numberValue": null, + "booleanValue": null, + "key": null, + "value": "HTTPScript", + "operator": "EQUALS", + "entity": "NOT_APPLICABLE" + } + ] + }, + "tagFilterExpressionEnabled": true, + "lastUpdated": 1698938631408, + "state": "ACTIVE", + "occurrence": { + "start": 1698938631036, + "end": 1698945831036 + } + } + } }, - "description": "default response" + "description": "Maintenance config has been created or updated, and successfully scheduled immediately if needed" + }, + "202": { + "description": "Maintenance config has been created or updated, but could not to be scheduled immediately. It will therefore be scheduled during the next auto-refresh with a delay of up to 4 minutes." + }, + "400": { + "description": "The provided maintenance configuration is invalid." + }, + "422": { + "description": "The provided maintenance configuration is incomplete or cannot be processed." + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" + } + } + } } }, "security": [ { "ApiKeyAuth": [ - "canConfigureSyntheticCredentials" + "ConfigureCustomAlerts" ] } ], - "summary": "Delete Synthetic credential", + "summary": "Create or update maintenance configuration", "tags": [ - "Synthetic Settings" - ] + "Maintenance Configuration" + ], + "description": "This endpoint creates or updates a maintenance configuration given its ID.\n\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to create or update.\n\n### Maintenance Configuration Input\nThis is a description for the fields in the request body:\n\n**id**: maintenance configuration unique id \n**name**: maintenance configuration name \n**query**: dynamic focus query used to filter alert notifications that will be muted \n**scheduling**: defines when the maintenance configuration will be scheduled\n- **start**: time in milliseconds from epoch\n- **duration**: duration of each maintenance window occurrence in the maintenance configuration\n - **amount**: the amount of time\n - **unit**: the unit of time\n- **type**: `ONE_TIME` or `RECURRENT`\n- **rrule**: for `RECURRENT` mainteance configurations, the RRULE standard from the [iCalendar Spec](https://datatracker.ietf.org/doc/html/rfc5545)\n- **paused**: indicates whether maintenance configuration is paused or not \n\n**tagFilterExpressionEnabled (OPTIONAL) (Closed Beta)**: indicates whether tagFilterExpression is used to filter alert notifications \n**tagFilterExpression (OPTIONAL) (Closed Beta)**: tag filter expression used to filter alert notifications that will be muted (this field needs to be provided if **tagFilterExpressionEnabled** is set to true) \n\n### **Scope**\nThere are four supported scopes; application perspective, dynamic focus query, synthetic tests, all entities. Below is the configuration corresponding to each scope:\n\n**1. Application Perspective** \n   dfq: a valid dynamic focus query \n   tfeEnabled: (optional) \n   tfe: (optional) \n\n**2. Dynamic Focus Query** \n   dfq: a valid dynamic focus query \n   tfeEnabled: (optional) \n   tfe: (optional) \n\n**3. Synthetic Tests** \n   dfq: \"\" \n   tfeEnabled: true \n   tfe: a valid tag filter expression \n\n**4. All Entities** \n   dfq: \"\" \n   tfeEnabled: false \n   tfe: null\n\n### **RRULE Support**\nYou can use the [RRULE tool](https://icalendar.org/rrule-tool.html) for generating RRULEs.\n\n\nThe following RRULE tokens are supported: `FREQ`, `UNTIL`, `COUNT`, `INTERVAL`, `BYDAY`, `BYMONTHDAY`, `BYMONTH`.\n\n**Additional Constraints:**\n\n1. For `MONTHLY` and `YEARLY`, you can only specify one value for `BYDAY` and `BYMONTHDAY`. \n2. The maximum `INTERVAL` allowed is as follows: \n - DAILY is 365\n - WEEKLY is 52\n - MONTHLY is 12\n - YEARLY is 1\n3. If an `UNTIL` date is specified, the value needs to be in UTC.\n\n### **Tag Filter Expression Support**\nWe support the following tag filters:\n- synthetic.syntheticType\n- synthetic.testName\n- synthetic.locationLabelAggregated\n- synthetic.tags" } }, - "/api/synthetics/settings/locations": { - "get": { - "operationId": "getSyntheticLocations", + "/api/settings/v2/maintenance/{id}/pause": { + "put": { + "operationId": "pauseRecurrentMaintenanceConfiguration", "parameters": [ { - "in": "query", - "name": "sort", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "offset", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "limit", + "example": "exampleMaintenanceConfigId", + "in": "path", + "name": "id", + "required": true, "schema": { "type": "string", "example": null } - }, - { - "in": "query", - "name": "filter", - "schema": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - } - } } ], "responses": { "default": { "content": { "application/json": { - "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/SyntheticLocation" + "example": { + "id": "maintenanceConfigId", + "name": "maintenanceConfig", + "query": "entity.application.id:\"anApplicationId\"", + "scheduling": { + "start": 1684251745262, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "type": "ONE_TIME" + }, + "paused": true, + "validVersion": 1, + "lastUpdated": 1684251750475, + "state": "PAUSED", + "occurrence": { + "start": 1684251745262, + "end": 1684258945262 } + }, + "schema": { + "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" } } } @@ -12864,21 +13022,23 @@ "security": [ { "ApiKeyAuth": [ - "canViewSyntheticLocations" + "ConfigureCustomAlerts" ] } ], - "summary": "All Synthetic locations", + "summary": "Pause maintenance configuration", "tags": [ - "Synthetic Settings" - ] + "Maintenance Configuration" + ], + "description": "This endpoint pauses a maintenance configuration given its ID.\n\nWhen you pause a maintenance configuration, you will start receiving alerts again for the scope defined in the maintenance configuration.\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to pause.\n" } }, - "/api/synthetics/settings/locations/{id}": { - "delete": { - "operationId": "deleteSyntheticLocation", + "/api/settings/v2/maintenance/{id}/resume": { + "put": { + "operationId": "resumeRecurrentMaintenanceConfiguration", "parameters": [ { + "example": "exampleMaintenanceConfigId", "in": "path", "name": "id", "required": true, @@ -12891,81 +13051,52 @@ "responses": { "default": { "content": { - "application/json": {} - }, - "description": "default response" + "application/json": { + "example": { + "id": "maintenanceConfigId", + "name": "maintenanceConfig", + "query": "entity.application.id:\"anApplicationId\"", + "scheduling": { + "start": 1684251745262, + "duration": { + "amount": 2, + "unit": "HOURS" + }, + "type": "ONE_TIME" + }, + "paused": false, + "validVersion": 1, + "lastUpdated": 1684251933433, + "state": "ACTIVE", + "occurrence": { + "start": 1684251745262, + "end": 1684258945262 + } + }, + "schema": { + "$ref": "#/components/schemas/MaintenanceConfigV2WithStateAndOccurrence" + } + } + } } }, "security": [ { "ApiKeyAuth": [ - "canConfigureSyntheticLocations" + "ConfigureCustomAlerts" ] } ], - "summary": "Delete Synthetic location", + "summary": "Resume maintenance configuration", "tags": [ - "Synthetic Settings" - ] - }, - "get": { - "operationId": "getSyntheticLocation", - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], - "responses": { - "default": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SyntheticLocation" - } - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [ - "canViewSyntheticLocations" - ] - } + "Maintenance Configuration" ], - "summary": "Synthetic location", - "tags": [ - "Synthetic Settings" - ] + "description": "This endpoint resumes a maintenance configuration given its ID.\n\nIf the maintenance configuration becomes active when you resume the maintenance configuration, you will not receive alerts for the scope defined in the maintenance configuration.\n### Path Parameters:\n\n- **id:** The ID of the maintenance config to resume.\n" } }, - "/api/synthetics/settings/tests": { + "/api/settings/v2/sli": { "get": { - "operationId": "getSyntheticTests", - "parameters": [ - { - "in": "query", - "name": "applicationId", - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "query", - "name": "locationId", - "schema": { - "type": "string", - "example": null - } - } - ], + "operationId": "getAllSliConfigsV2", "responses": { "default": { "content": { @@ -12974,7 +13105,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/SyntheticTest" + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" } } } @@ -12984,22 +13115,22 @@ "security": [ { "ApiKeyAuth": [ - "canViewSyntheticTests" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "All Synthetic tests", + "summary": "Get All SLI Configs", "tags": [ - "Synthetic Settings" + "SLI Settings" ] }, "post": { - "operationId": "createSyntheticTest", + "operationId": "createSliConfigV2", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticTest" + "$ref": "#/components/schemas/SliConfiguration" } } }, @@ -13010,7 +13141,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticTest" + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" } } } @@ -13019,57 +13150,37 @@ "security": [ { "ApiKeyAuth": [ - "canConfigureSyntheticTests" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "Create a Synthetic test", + "summary": "Create SLI Config", "tags": [ - "Synthetic Settings" + "SLI Settings" ], - "description": "This API endpoint creates a Synthetic Test.\n\n## Sample script and payload: \n- A sample script to create an API Simple test\n\n```\ncurl -k -v -X POST \\\nhttps:///api/synthetics/settings/tests \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"label\":\"Test_SimplePing\",\n \"description\":\"this is to test a simple ping API\",\n \"serviceId\":\"serviceId001\",\n \"applicationId\":\"applicationId001\",\n \"active\":true,\n \"testFrequency\":1,\n \"playbackMode\":\"Simultaneous\",\n \"locations\":[\n \"saas_instana_test\"\n ],\n \"configuration\":{\n \"syntheticType\":\"HTTPAction\",\n \"url\":\"https://httpbin.org/post\",\n \"operation\":\"POST\",\n \"headers\":{\n \"Content-Type\":\"text/plain\"\n },\n \"body\":\"Hello World!\",\n \"validationString\":\"Hello World!\"\n },\n \"customProperties\":{\n \"Team\":\"DevTeam\",\n \"Purpose\":\"Demo\"\n }\n }'\n```" + "description": "This endpoint creates the Service Level Indicator Configuration\n\n## Mandatory Parameters:\n\n- **id** A unique identifier for each SLI configuration\n\n- **sliName:** Name for the SLI configuration\n\n- **sliEntity:** Entity of the SLI configuration\n\n### SLI Entity specific parameters\n\nDepending on the chosen `sliType` in the `sliEntity`, there are further required parameters:\n\n#### Application SLI entity\n\nThis option can be used to create a Time-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n- **metricConfiguration.metricName:** The metric name on which to compute the SLI\n\n- **metricConfiguration.metricAggregation:** The aggregation of the metric\n\n- **metricConfiguration.threshold:** Threshold for the metric\n\n#### Availability SLI entity\n\nThis opetion can be used to create an Event-Based SLI\n\n- **sliEntity.applicationId:** The Id of the Application Perspective\n\n- **sliEntity.boundaryScope:** Boundary scope of the Application Perspective\n\n## Deprecated Parameters for Availability SLI entity:\n\n- **sliEntity.serviceId:** The ID if the Service in he context of an Application Perspective\n\n- **sliEntity.endpointId:** The ID of an Endpoint belonging to a Service\n\n- **sliEntity.goodEventFilters:** The list of TagFilters to match good events / calls\n\n- **sliEntity.badEventFilters:** The list of TagFilters to match bad events / calls\n\nAll of these filters can be included using the list of TagFilterExpressions via **sliEntity.goodEventFilterExpression** and **sliEntity.badEventFilterExpression**.\nThese parameters will be removed in the upcoming releases.\n" } }, - "/api/synthetics/settings/tests/{id}": { - "delete": { - "operationId": "deleteSyntheticTest", + "/api/settings/v2/sli/{entityType}/{entityId}": { + "get": { + "operationId": "getSliConfigsForEntityTypeAndIdV2", "parameters": [ { "in": "path", - "name": "id", + "name": "entityType", "required": true, "schema": { "type": "string", + "enum": [ + "APPLICATION", + "WEBSITE" + ], "example": null } - } - ], - "responses": { - "default": { - "content": { - "application/json": {} - }, - "description": "default response" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "canConfigureSyntheticTests" - ] - } - ], - "summary": "Delete a Synthetic test", - "tags": [ - "Synthetic Settings" - ] - }, - "get": { - "operationId": "getSyntheticTest", - "parameters": [ + }, { "in": "path", - "name": "id", + "name": "entityId", "required": true, "schema": { "type": "string", @@ -13082,7 +13193,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SyntheticTest" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + } } } } @@ -13091,17 +13206,19 @@ "security": [ { "ApiKeyAuth": [ - "canViewSyntheticTests" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "A Synthetic test", + "summary": "Get all SLI configs for entity type and entity id", "tags": [ - "Synthetic Settings" + "SLI Settings" ] - }, - "patch": { - "operationId": "patchSyntheticTest", + } + }, + "/api/settings/v2/sli/{id}": { + "delete": { + "operationId": "deleteSliConfigV2", "parameters": [ { "in": "path", @@ -13113,38 +13230,28 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SyntheticTest" - } - } - }, - "required": true - }, "responses": { "default": { "content": { "application/json": {} - } + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "canConfigureSyntheticTests" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "Patch a Synthetic test", + "summary": "Delete SLI Config", "tags": [ - "Synthetic Settings" - ], - "description": "This API endpoint updates selected attributes of a Synthetic Test.\n\n- All attributes listed as in the schema, including the required ones, are optional for this call.\n- Synthetic Test configuration properties set to null will be removed from the configuration.\n- For major updates to the Synthetic Test or to remove main attributes, see \"Update a Synthetic test\"\n\n## Sample script and payload: \n- A sample script to patch a simple HTTP Script Test to enable it and to switch from multi-scripts to single script.\n\n```\ncurl -k -v -X PATCH \\\nhttps:///api/synthetics/settings/tests/Ilfs9bW97KkTxuyGtxBF \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"active\" : true,\n \"configuration\" : { \n \"scripts\" : null,\n \"script\" : \"//script goes here\"\n }\n }'\n```" + "SLI Settings" + ] }, - "put": { - "operationId": "updateSyntheticTest", + "get": { + "operationId": "getSliConfigV2", "parameters": [ { "in": "path", @@ -13156,64 +13263,81 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SyntheticTest" - } - } - }, - "required": true - }, "responses": { "default": { "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/SliConfigurationWithLastUpdated" + } + } } } }, "security": [ { "ApiKeyAuth": [ - "canConfigureSyntheticTests" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "Update a Synthetic test", + "summary": "Get SLI Config", "tags": [ - "Synthetic Settings" + "SLI Settings" ] } }, - "/api/website-monitoring/analyze/beacon-groups": { - "post": { - "operationId": "getBeaconGroups", + "/api/sli/report/{sliId}": { + "get": { + "operationId": "getSli", "parameters": [ + { + "in": "path", + "name": "sliId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, { "in": "query", - "name": "fillTimeSeries", + "name": "slo", "schema": { - "type": "boolean", + "type": "number", + "format": "double", "example": null } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWebsiteBeaconGroups" - } + }, + { + "in": "query", + "name": "from", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteBeaconGroupsResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SliReport" + } } } } @@ -13222,34 +13346,58 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "Get grouped beacon metrics", + "summary": "Generate SLI report", "tags": [ - "Website Analyze" + "SLI Report" ] } }, - "/api/website-monitoring/analyze/beacons": { - "post": { - "operationId": "getBeacons", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWebsiteBeacons" - } + "/api/slo/report/{sloId}": { + "get": { + "operationId": "getSlo", + "parameters": [ + { + "in": "path", + "name": "sloId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "from", + "schema": { + "type": "integer", + "format": "int64", + "example": null + } + }, + { + "in": "query", + "name": "to", + "schema": { + "type": "integer", + "format": "int64", + "example": null } } - }, + ], "responses": { "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WebsiteBeaconResult" + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SliReport" + } } } } @@ -13258,29 +13406,20 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "canConfigureServiceLevelIndicators" ] } ], - "summary": "Get all beacons", + "summary": "Generate SLI report", "tags": [ - "Website Analyze" + "SLO Report" ] } }, - "/api/website-monitoring/catalog": { + "/api/synthetics/catalog": { "get": { - "operationId": "getWebsiteTagCatalog", + "operationId": "getSyntheticTagCatalog", "parameters": [ - { - "in": "query", - "name": "beaconType", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, { "in": "query", "name": "useCase", @@ -13296,16 +13435,14 @@ "SMART_ALERTS_CUSTOM_PAYLOAD", "SLI_MANAGEMENT", "APPLICATION_CONFIG", - "APPLICATION_CONFIG_BLUEPRINT" + "APPLICATION_CONFIG_BLUEPRINT", + "MAINTENANCE_WINDOWS" ], "example": null } } ], "responses": { - "400": { - "description": "When the combination of beaconType and useCase is unsupported/unknown." - }, "default": { "content": { "application/json": { @@ -13323,25 +13460,30 @@ ] } ], - "summary": "Get website tag catalog", + "summary": "Get synthetic tag catalog", "tags": [ - "Website Catalog" + "Synthetic Catalog" ] } }, - "/api/website-monitoring/catalog/metrics": { - "get": { - "operationId": "getWebsiteCatalogMetrics", + "/api/synthetics/results": { + "post": { + "operationId": "getSyntheticResult", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetTestResult" + } + } + } + }, "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/WebsiteMonitoringMetricDescription" - } + "$ref": "#/components/schemas/TestResult" } } } @@ -13354,26 +13496,30 @@ ] } ], - "summary": "Metric catalog", + "summary": "Get Synthetic test playback results", "tags": [ - "Website Catalog" - ], - "description": "This endpoint retrieves all available metric definitions for website monitoring.\n" + "Synthetic Test Playback Results" + ] } }, - "/api/website-monitoring/catalog/tags": { - "get": { - "operationId": "getWebsiteCatalogTags", + "/api/synthetics/results/list": { + "post": { + "operationId": "getSyntheticResultList", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetTestResultList" + } + } + } + }, "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/Tag" - } + "$ref": "#/components/schemas/TestResultListResult" } } } @@ -13386,113 +13532,100 @@ ] } ], - "summary": "Get all existing website tags", + "summary": "Get a list of Synthetic test playback results", "tags": [ - "Website Catalog" - ], - "description": "This endpoint retrieves all available tags for your monitored system.\n\nThese tags can be used to group metric results.\n```\n\"group\": {\n \"groupbyTag\": \"beacon.page.name\"\n}\n```\n\nThese tags can be used to filter metric results.\n```\n\"tagFilters\": [{\n\t\"name\": \"beacon.website.name\",\n\t\"operator\": \"EQUALS\",\n\t\"value\": \"example\"\n}]\n```\n" + "Synthetic Test Playback Results" + ] } }, - "/api/website-monitoring/config": { - "get": { - "operationId": "getWebsites", + "/api/synthetics/results/locationsummarylist": { + "post": { + "operationId": "getLocationSummaryList", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetTestResultBase" + } + } + } + }, "responses": { "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/Website" - } + "$ref": "#/components/schemas/TestResultListResult" } } } } }, - "summary": "Get configured websites", + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get a list of Synthetic locations with last run test on each location data", "tags": [ - "Website Configuration" + "Synthetic Test Playback Results" ] - }, + } + }, + "/api/synthetics/results/testsummarylist": { "post": { - "operationId": "createWebsite", - "parameters": [ - { - "in": "query", - "name": "name", - "schema": { - "type": "string", - "example": null + "operationId": "getTestSummaryList", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetTestSummaryResult" + } } } - ], + }, "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Website" + "$ref": "#/components/schemas/TestResultListResult" } } - }, - "description": "Website successfully configured" - }, - "400": { - "description": "Missing name query parameter or name already used for a configured website" + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "Default" ] } ], - "summary": "Configure new website", + "summary": "Get a list of Synthetic tests with success rate and average response time data", "tags": [ - "Website Configuration" + "Synthetic Test Playback Results" ] } }, - "/api/website-monitoring/config/{websiteId}": { - "delete": { - "operationId": "deleteWebsite", + "/api/synthetics/results/{testid}/{testresultid}": { + "get": { + "operationId": "getSyntheticResultMetadata", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "testid", "required": true, "schema": { "type": "string", "example": null } - } - ], - "responses": { - "204": { - "description": "Website successfully removed" - } - }, - "security": [ - { - "ApiKeyAuth": [ - "ConfigureEumApplications" - ] - } - ], - "summary": "Remove website", - "tags": [ - "Website Configuration" - ] - }, - "get": { - "operationId": "getWebsite", - "parameters": [ + }, { "in": "path", - "name": "websiteId", + "name": "testresultid", "required": true, "schema": { "type": "string", @@ -13505,23 +13638,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Website" + "$ref": "#/components/schemas/TestResultMetadata" } } } } }, - "summary": "Get configured website", + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get Synthetic test playback detail result description(metadata)", "tags": [ - "Website Configuration" + "Synthetic Test Playback Results" ] - }, - "put": { - "operationId": "renameWebsite", + } + }, + "/api/synthetics/results/{testid}/{testresultid}/detail": { + "get": { + "operationId": "getSyntheticResultDetailData", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "testid", "required": true, "schema": { "type": "string", @@ -13529,49 +13671,85 @@ } }, { - "in": "query", - "name": "name", + "in": "path", + "name": "testresultid", + "required": true, "schema": { "type": "string", "example": null } - } - ], - "responses": { - "200": { - "content": { - "application/json": { + }, + { + "in": "query", + "name": "type", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "name", + "schema": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + } + } + ], + "responses": { + "default": { + "content": { + "application/json": { "schema": { - "$ref": "#/components/schemas/Website" + "$ref": "#/components/schemas/TestResultDetailData" } } - }, - "description": "Website successfully renamed" - }, - "400": { - "description": "Missing name query parameter or name already used for a configured website" + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "Default" ] } ], - "summary": "Rename website", + "summary": "Get Synthetic test playback result detail data", "tags": [ - "Website Configuration" + "Synthetic Test Playback Results" ] } }, - "/api/website-monitoring/config/{websiteId}/geo-location": { + "/api/synthetics/results/{testid}/{testresultid}/file": { "get": { - "operationId": "getWebsiteGeoLocationConfiguration", + "operationId": "getSyntheticResultDetailDataFile", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "testid", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "path", + "name": "testresultid", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "type", "required": true, "schema": { "type": "string", @@ -13580,11 +13758,39 @@ } ], "responses": { - "200": { + "default": { + "content": { + "application/octet-stream": {} + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Download the synthetic test playback result detail data file", + "tags": [ + "Synthetic Test Playback Results" + ] + } + }, + "/api/synthetics/settings/credentials": { + "get": { + "operationId": "getSyntheticCredentialNames", + "responses": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } } } } @@ -13593,43 +13799,24 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canUseSyntheticCredentials", + "canConfigureSyntheticTests" ] } ], - "summary": "Get geo location configuration for website", + "summary": "All Synthetic Credential Names", "tags": [ - "Website Configuration" + "Synthetic Settings" ] }, - "put": { - "operationId": "updateWebsiteGeoLocationConfiguration", - "parameters": [ - { - "in": "path", - "name": "websiteId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" - } - } - } - }, + "post": { + "operationId": "createSyntheticCredential", "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GeoLocationConfiguration" + "$ref": "#/components/schemas/SyntheticCredentials" } } } @@ -13638,23 +13825,24 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canConfigureSyntheticCredentials" ] } ], - "summary": "Update geo location configuration for website", + "summary": "Create a Synthetic Credential", "tags": [ - "Website Configuration" - ] + "Synthetic Settings" + ], + "description": "This API endpoint creates a credential to be used on Synthetic API Script Tests.\n\n## Mandatory Parameters:\n\n- **credentialName** The name identifying the credential. Credential names must start with a letter and can only contain letters, numbers and underscores. Max length is 64.\n\n- **credentialValue:** Value of the credential to be used on the API Script execution. Credential values are stored encrypted and cannot be queried after creation.\n\n\n## Sample script and payload:\n- A sample script to create a new credential\n\n```\ncurl -k -v -X POST \\\nhttps:///api/synthetics/settings/credentials \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"credentialName\" : \"user1_password\", \n \"credentialValue\" : \"123456\"\n }'\n```\n" } }, - "/api/website-monitoring/config/{websiteId}/geo-mapping-rules": { - "get": { - "operationId": "getWebsiteGeoMappingRules", + "/api/synthetics/settings/credentials/{name}": { + "delete": { + "operationId": "deleteSyntheticCredential", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "name", "required": true, "schema": { "type": "string", @@ -13663,74 +13851,102 @@ } ], "responses": { - "200": { + "default": { "content": { - "text/csv": {} - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canConfigureSyntheticCredentials" ] } ], - "summary": "Get custom geo mapping rules for website", + "summary": "Delete Synthetic credential", "tags": [ - "Website Configuration" + "Synthetic Settings" ] - }, - "put": { - "operationId": "setWebsiteGeoMappingRules", + } + }, + "/api/synthetics/settings/locations": { + "get": { + "operationId": "getSyntheticLocations", "parameters": [ { - "in": "path", - "name": "websiteId", - "required": true, + "in": "query", + "name": "sort", "schema": { "type": "string", "example": null } - } - ], - "requestBody": { - "content": { - "text/csv": { - "schema": { + }, + { + "in": "query", + "name": "offset", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "filter", + "schema": { + "type": "array", + "example": null, + "items": { "type": "string", "example": null } } } - }, + ], "responses": { - "200": { + "default": { "content": { - "text/csv": {} + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SyntheticLocation" + } + } + } } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canViewSyntheticLocations" ] } ], - "summary": "Set custom geo mapping rules for website", + "summary": "All Synthetic locations", "tags": [ - "Website Configuration" + "Synthetic Settings" ] } }, - "/api/website-monitoring/config/{websiteId}/ip-masking": { - "get": { - "operationId": "getWebsiteIpMaskingConfiguration", + "/api/synthetics/settings/locations/{id}": { + "delete": { + "operationId": "deleteSyntheticLocation", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "id", "required": true, "schema": { "type": "string", @@ -13739,34 +13955,31 @@ } ], "responses": { - "200": { + "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canConfigureSyntheticLocations" ] } ], - "summary": "Get IP masking configuration for website", + "summary": "Delete Synthetic location", "tags": [ - "Website Configuration" + "Synthetic Settings" ] }, - "put": { - "operationId": "updateWebsiteIpMaskingConfiguration", + "get": { + "operationId": "getSyntheticLocation", "parameters": [ { "in": "path", - "name": "websiteId", + "name": "id", "required": true, "schema": { "type": "string", @@ -13774,21 +13987,12 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" - } - } - } - }, "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IpMaskingConfiguration" + "$ref": "#/components/schemas/SyntheticLocation" } } } @@ -13797,33 +14001,31 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canViewSyntheticLocations" ] } ], - "summary": "Update IP masking configuration for website", + "summary": "Synthetic location", "tags": [ - "Website Configuration" + "Synthetic Settings" ] } }, - "/api/website-monitoring/config/{websiteId}/sourcemap-upload/{sourceMapConfigId}/clear": { - "put": { - "operationId": "clearSourceMapUploadConfiguration", + "/api/synthetics/settings/tests": { + "get": { + "operationId": "getSyntheticTests", "parameters": [ { - "in": "path", - "name": "websiteId", - "required": true, + "in": "query", + "name": "applicationId", "schema": { "type": "string", "example": null } }, { - "in": "path", - "name": "sourceMapConfigId", - "required": true, + "in": "query", + "name": "locationId", "schema": { "type": "string", "example": null @@ -13831,77 +14033,50 @@ } ], "responses": { - "204": { - "description": "Source map files in the source map upload configuration successfully cleared" + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SyntheticTest" + } + } + } + } } }, "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canViewSyntheticTests" ] } ], - "summary": "Clear source map files for source map upload configuration", + "summary": "All Synthetic tests", "tags": [ - "Website Configuration" + "Synthetic Settings" ] - } - }, - "/api/website-monitoring/config/{websiteId}/sourcemap-upload/{sourceMapConfigId}/form": { - "put": { - "operationId": "uploadSourceMapFile", - "parameters": [ - { - "in": "path", - "name": "websiteId", - "required": true, - "schema": { - "type": "string", - "example": null - } - }, - { - "in": "path", - "name": "sourceMapConfigId", - "required": true, - "schema": { - "type": "string", - "example": null - } - } - ], + }, + "post": { + "operationId": "createSyntheticTest", "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "type": "object", - "example": null, - "properties": { - "fileFormat": { - "type": "string", - "example": null - }, - "sourceMap": { - "type": "string", - "format": "binary", - "example": null - }, - "url": { - "type": "string", - "example": null - } - } + "$ref": "#/components/schemas/SyntheticTest" } } - } + }, + "required": true }, "responses": { - "200": { + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SourceMapUploadConfig" + "$ref": "#/components/schemas/SyntheticTest" } } } @@ -13910,56 +14085,53 @@ "security": [ { "ApiKeyAuth": [ - "ConfigureEumApplications" + "canConfigureSyntheticTests" ] } ], - "summary": "Upload source map file for website", + "summary": "Create a Synthetic test", "tags": [ - "Website Configuration" - ] + "Synthetic Settings" + ], + "description": "This API endpoint creates a Synthetic Test.\n\n**Note:** The **DNSAction** Synthetic type is not supported.\n\n## Sample script and payload: \n- A sample script to create an API Simple test\n\n```\ncurl -k -v -X POST \\\nhttps:///api/synthetics/settings/tests \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"label\":\"Test_SimplePing\",\n \"description\":\"this is to test a simple ping API\",\n \"serviceId\":\"serviceId001\",\n \"applicationId\":\"applicationId001\",\n \"active\":true,\n \"testFrequency\":1,\n \"playbackMode\":\"Simultaneous\",\n \"locations\":[\n \"saas_instana_test\"\n ],\n \"configuration\":{\n \"syntheticType\":\"HTTPAction\",\n \"url\":\"https://httpbin.org/post\",\n \"operation\":\"POST\",\n \"headers\":{\n \"Content-Type\":\"text/plain\"\n },\n \"body\":\"Hello World!\",\n \"validationString\":\"Hello World!\"\n },\n \"customProperties\":{\n \"Team\":\"DevTeam\",\n \"Purpose\":\"Demo\"\n }\n }'\n```" } }, - "/api/website-monitoring/metrics": { - "post": { - "deprecated": true, - "operationId": "getBeaconMetrics", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetWebsiteMetrics" - } + "/api/synthetics/settings/tests/{id}": { + "delete": { + "operationId": "deleteSyntheticTest", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null } } - }, + ], "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WebsiteMetricResult" - } - } - } + "application/json": {} + }, + "description": "default response" } }, "security": [ { "ApiKeyAuth": [ - "Default" + "canConfigureSyntheticTests" ] } ], - "summary": "Get beacon metrics", + "summary": "Delete a Synthetic test", "tags": [ - "Website Metrics" + "Synthetic Settings" ] - } - }, - "/api/website-monitoring/page-load": { + }, "get": { - "operationId": "getPageLoad", + "operationId": "getSyntheticTest", "parameters": [ { "in": "path", @@ -13968,37 +14140,15 @@ "schema": { "type": "string", "example": null - }, - "style": "matrix" - }, - { - "in": "path", - "name": "timestamp", - "required": true, - "schema": { - "type": "integer", - "format": "int64", - "example": null - }, - "style": "matrix" + } } ], "responses": { - "400": { - "description": "Missing page id" - }, - "404": { - "description": "Website not found" - }, "default": { "content": { "application/json": { "schema": { - "type": "array", - "example": null, - "items": { - "$ref": "#/components/schemas/WebsiteMonitoringBeacon" - } + "$ref": "#/components/schemas/SyntheticTest" } } } @@ -14007,76 +14157,994 @@ "security": [ { "ApiKeyAuth": [ - "Default" + "canViewSyntheticTests" ] } ], - "summary": "Get page load", + "summary": "A Synthetic test", "tags": [ - "Website Metrics" + "Synthetic Settings" ] - } - }, - "/api/website-monitoring/v2/metrics": { - "post": { - "operationId": "getBeaconMetricsV2", + }, + "patch": { + "operationId": "patchSyntheticTest", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetWebsiteMetricsV2" + "$ref": "#/components/schemas/SyntheticTest" } } - } + }, + "required": true }, "responses": { "default": { "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MetricAPIResult" - } - } + "application/json": {} } } }, "security": [ { "ApiKeyAuth": [ - "Default" + "canConfigureSyntheticTests" ] } ], - "summary": "Get beacon metrics", + "summary": "Patch a Synthetic test", "tags": [ - "Website Metrics" - ] - } - } - }, - "components": { - "schemas": { - "AbstractIntegration": { - "type": "object", - "discriminator": { - "mapping": { - "EMAIL": "#/components/schemas/EmailIntegration", - "GOOGLE_CHAT": "#/components/schemas/GoogleChatIntegration", - "OFFICE_365": "#/components/schemas/Office365Integration", - "OPS_GENIE": "#/components/schemas/OpsgenieIntegration", - "PAGER_DUTY": "#/components/schemas/PagerdutyIntegration", - "PROMETHEUS_WEBHOOK": "#/components/schemas/PrometheusWebhookIntegration", - "SERVICE_NOW_WEBHOOK": "#/components/schemas/ServiceNowIntegration", - "SLACK": "#/components/schemas/SlackIntegration", - "SPLUNK": "#/components/schemas/SplunkIntegration", - "VICTOR_OPS": "#/components/schemas/VictorOpsIntegration", - "WATSON_AIOPS_WEBHOOK": "#/components/schemas/WatsonAIOpsWebhookIntegration", - "WEBEX_TEAMS_WEBHOOK": "#/components/schemas/WebexTeamsWebhookIntegration", - "WEB_HOOK": "#/components/schemas/WebhookIntegration", - "Z_CHATOPS": "#/components/schemas/ZChatOpsIntegration" - }, - "propertyName": "kind" - }, + "Synthetic Settings" + ], + "description": "This API endpoint updates selected attributes of a Synthetic Test.\n\n- All attributes listed as in the schema, including the required ones, are optional for this call.\n- Synthetic Test configuration properties set to null will be removed from the configuration.\n- For major updates to the Synthetic Test or to remove main attributes, see \"Update a Synthetic test\"\n\n## Sample script and payload: \n- A sample script to patch a simple HTTP Script Test to enable it and to switch from multi-scripts to single script.\n\n```\ncurl -k -v -X PATCH \\\nhttps:///api/synthetics/settings/tests/Ilfs9bW97KkTxuyGtxBF \\\n-H 'authorization: apiToken ' \\\n-H 'content-type: application/json' \\\n-d '{\n \"active\" : true,\n \"configuration\" : { \n \"scripts\" : null,\n \"script\" : \"//script goes here\"\n }\n }'\n```" + }, + "put": { + "operationId": "updateSyntheticTest", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SyntheticTest" + } + } + }, + "required": true + }, + "responses": { + "default": { + "content": { + "application/json": {} + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "canConfigureSyntheticTests" + ] + } + ], + "summary": "Update a Synthetic test", + "tags": [ + "Synthetic Settings" + ] + } + }, + "/api/website-monitoring/analyze/beacon-groups": { + "post": { + "operationId": "getBeaconGroups", + "parameters": [ + { + "in": "query", + "name": "fillTimeSeries", + "schema": { + "type": "boolean", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetWebsiteBeaconGroups" + } + } + } + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteBeaconGroupsResult" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get grouped beacon metrics", + "tags": [ + "Website Analyze" + ] + } + }, + "/api/website-monitoring/analyze/beacons": { + "post": { + "operationId": "getBeacons", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetWebsiteBeacons" + } + } + } + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteBeaconResult" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get all beacons", + "tags": [ + "Website Analyze" + ] + } + }, + "/api/website-monitoring/catalog": { + "get": { + "operationId": "getWebsiteTagCatalog", + "parameters": [ + { + "in": "query", + "name": "beaconType", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "useCase", + "required": true, + "schema": { + "type": "string", + "enum": [ + "GROUPING", + "FILTERING", + "SMART_ALERTS", + "SMART_ALERTS_LOGS", + "SMART_ALERTS_ADAPTIVE_BASELINE", + "SMART_ALERTS_CUSTOM_PAYLOAD", + "SLI_MANAGEMENT", + "APPLICATION_CONFIG", + "APPLICATION_CONFIG_BLUEPRINT", + "MAINTENANCE_WINDOWS" + ], + "example": null + } + } + ], + "responses": { + "400": { + "description": "When the combination of beaconType and useCase is unsupported/unknown." + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TagCatalog" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get website tag catalog", + "tags": [ + "Website Catalog" + ] + } + }, + "/api/website-monitoring/catalog/metrics": { + "get": { + "operationId": "getWebsiteCatalogMetrics", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/WebsiteMonitoringMetricDescription" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Metric catalog", + "tags": [ + "Website Catalog" + ], + "description": "This endpoint retrieves all available metric definitions for website monitoring.\n" + } + }, + "/api/website-monitoring/catalog/tags": { + "get": { + "operationId": "getWebsiteCatalogTags", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/Tag" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get all existing website tags", + "tags": [ + "Website Catalog" + ], + "description": "This endpoint retrieves all available tags for your monitored system.\n\nThese tags can be used to group metric results.\n```\n\"group\": {\n \"groupbyTag\": \"beacon.page.name\"\n}\n```\n\nThese tags can be used to filter metric results.\n```\n\"tagFilters\": [{\n\t\"name\": \"beacon.website.name\",\n\t\"operator\": \"EQUALS\",\n\t\"value\": \"example\"\n}]\n```\n" + } + }, + "/api/website-monitoring/config": { + "get": { + "operationId": "getWebsites", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/Website" + } + } + } + } + } + }, + "summary": "Get configured websites", + "tags": [ + "Website Configuration" + ] + }, + "post": { + "operationId": "createWebsite", + "parameters": [ + { + "in": "query", + "name": "name", + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Website" + } + } + }, + "description": "Website successfully configured" + }, + "400": { + "description": "Missing name query parameter or name already used for a configured website" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Configure new website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}": { + "delete": { + "operationId": "deleteWebsite", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "204": { + "description": "Website successfully removed" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Remove website", + "tags": [ + "Website Configuration" + ] + }, + "get": { + "operationId": "getWebsite", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Website" + } + } + } + } + }, + "summary": "Get configured website", + "tags": [ + "Website Configuration" + ] + }, + "put": { + "operationId": "renameWebsite", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "query", + "name": "name", + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Website" + } + } + }, + "description": "Website successfully renamed" + }, + "400": { + "description": "Missing name query parameter or name already used for a configured website" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Rename website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}/geo-location": { + "get": { + "operationId": "getWebsiteGeoLocationConfiguration", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeoLocationConfiguration" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Get geo location configuration for website", + "tags": [ + "Website Configuration" + ] + }, + "put": { + "operationId": "updateWebsiteGeoLocationConfiguration", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeoLocationConfiguration" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GeoLocationConfiguration" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Update geo location configuration for website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}/geo-mapping-rules": { + "get": { + "operationId": "getWebsiteGeoMappingRules", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "200": { + "content": { + "text/csv": {} + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Get custom geo mapping rules for website", + "tags": [ + "Website Configuration" + ] + }, + "put": { + "operationId": "setWebsiteGeoMappingRules", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "text/csv": { + "schema": { + "type": "string", + "example": null + } + } + } + }, + "responses": { + "200": { + "content": { + "text/csv": {} + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Set custom geo mapping rules for website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}/ip-masking": { + "get": { + "operationId": "getWebsiteIpMaskingConfiguration", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpMaskingConfiguration" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Get IP masking configuration for website", + "tags": [ + "Website Configuration" + ] + }, + "put": { + "operationId": "updateWebsiteIpMaskingConfiguration", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpMaskingConfiguration" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IpMaskingConfiguration" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Update IP masking configuration for website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}/sourcemap-upload/{sourceMapConfigId}/clear": { + "put": { + "operationId": "clearSourceMapUploadConfiguration", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "path", + "name": "sourceMapConfigId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "responses": { + "204": { + "description": "Source map files in the source map upload configuration successfully cleared" + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Clear source map files for source map upload configuration", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/config/{websiteId}/sourcemap-upload/{sourceMapConfigId}/form": { + "put": { + "operationId": "uploadSourceMapFile", + "parameters": [ + { + "in": "path", + "name": "websiteId", + "required": true, + "schema": { + "type": "string", + "example": null + } + }, + { + "in": "path", + "name": "sourceMapConfigId", + "required": true, + "schema": { + "type": "string", + "example": null + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "example": null, + "properties": { + "fileFormat": { + "type": "string", + "example": null + }, + "sourceMap": { + "type": "string", + "format": "binary", + "example": null + }, + "url": { + "type": "string", + "example": null + } + } + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SourceMapUploadConfig" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "ConfigureEumApplications" + ] + } + ], + "summary": "Upload source map file for website", + "tags": [ + "Website Configuration" + ] + } + }, + "/api/website-monitoring/metrics": { + "post": { + "deprecated": true, + "operationId": "getBeaconMetrics", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetWebsiteMetrics" + } + } + } + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WebsiteMetricResult" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get beacon metrics", + "tags": [ + "Website Metrics" + ] + } + }, + "/api/website-monitoring/page-load": { + "get": { + "operationId": "getPageLoad", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string", + "example": null + }, + "style": "matrix" + }, + { + "in": "path", + "name": "timestamp", + "required": true, + "schema": { + "type": "integer", + "format": "int64", + "example": null + }, + "style": "matrix" + } + ], + "responses": { + "400": { + "description": "Missing page id" + }, + "404": { + "description": "Website not found" + }, + "default": { + "content": { + "application/json": { + "schema": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/WebsiteMonitoringBeacon" + } + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get page load", + "tags": [ + "Website Metrics" + ] + } + }, + "/api/website-monitoring/v2/metrics": { + "post": { + "operationId": "getBeaconMetricsV2", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetWebsiteMetricsV2" + } + } + } + }, + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MetricAPIResult" + } + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [ + "Default" + ] + } + ], + "summary": "Get beacon metrics", + "tags": [ + "Website Metrics" + ] + } + } + }, + "components": { + "schemas": { + "AbstractIntegration": { + "type": "object", + "discriminator": { + "mapping": { + "EMAIL": "#/components/schemas/EmailIntegration", + "GOOGLE_CHAT": "#/components/schemas/GoogleChatIntegration", + "OFFICE_365": "#/components/schemas/Office365Integration", + "OPS_GENIE": "#/components/schemas/OpsgenieIntegration", + "PAGER_DUTY": "#/components/schemas/PagerdutyIntegration", + "PROMETHEUS_WEBHOOK": "#/components/schemas/PrometheusWebhookIntegration", + "SALESFORCE": "#/components/schemas/SalesforceIntegration", + "SERVICE_NOW_WEBHOOK": "#/components/schemas/ServiceNowIntegration", + "SLACK": "#/components/schemas/SlackIntegration", + "SPLUNK": "#/components/schemas/SplunkIntegration", + "VICTOR_OPS": "#/components/schemas/VictorOpsIntegration", + "WATSON_AIOPS_WEBHOOK": "#/components/schemas/WatsonAIOpsWebhookIntegration", + "WEBEX_TEAMS_WEBHOOK": "#/components/schemas/WebexTeamsWebhookIntegration", + "WEB_HOOK": "#/components/schemas/WebhookIntegration", + "Z_CHATOPS": "#/components/schemas/ZChatOpsIntegration" + }, + "propertyName": "kind" + }, "example": null, "properties": { "id": { @@ -14604,6 +15672,32 @@ } } }, + "ApiCreateGroup": { + "type": "object", + "example": null, + "properties": { + "members": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/ApiMember" + }, + "uniqueItems": true + }, + "name": { + "type": "string", + "example": null + }, + "permissionSet": { + "$ref": "#/components/schemas/ApiPermissionSet" + } + }, + "required": [ + "members", + "name", + "permissionSet" + ] + }, "ApiGroup": { "type": "object", "example": null, @@ -14627,10 +15721,11 @@ "example": null }, "permissionSet": { - "$ref": "#/components/schemas/ApiPermissionSetWithRoles" + "$ref": "#/components/schemas/ApiPermissionSet" } }, "required": [ + "id", "members", "name", "permissionSet" @@ -14653,7 +15748,7 @@ "userId" ] }, - "ApiPermissionSetWithRoles": { + "ApiPermissionSet": { "type": "object", "example": null, "properties": { @@ -14711,6 +15806,9 @@ "minItems": 0, "uniqueItems": true }, + "restrictedApplicationFilter": { + "$ref": "#/components/schemas/ApiRestrictedApplicationFilter" + }, "syntheticTestIds": { "type": "array", "example": null, @@ -14734,6 +15832,7 @@ }, "required": [ "applicationIds", + "infraDfqFilter", "kubernetesClusterUUIDs", "kubernetesNamespaceUIDs", "mobileAppIds", @@ -14741,6 +15840,28 @@ "websiteIds" ] }, + "ApiRestrictedApplicationFilter": { + "type": "object", + "example": null, + "properties": { + "label": { + "type": "string", + "example": null + }, + "scope": { + "type": "string", + "enum": [ + "INCLUDE_NO_DOWNSTREAM", + "INCLUDE_IMMEDIATE_DOWNSTREAM_DATABASE_AND_MESSAGING", + "INCLUDE_ALL_DOWNSTREAM" + ], + "example": null + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + } + } + }, "ApiToken": { "type": "object", "example": null, @@ -14773,6 +15894,10 @@ "type": "boolean", "example": null }, + "canConfigureAutomationPolicies": { + "type": "boolean", + "example": null + }, "canConfigureCustomAlerts": { "type": "boolean", "example": null @@ -14841,7 +15966,15 @@ "type": "boolean", "example": null }, - "canCreatePublicCustomDashboards": { + "canCreateHeapDump": { + "type": "boolean", + "example": null + }, + "canCreatePublicCustomDashboards": { + "type": "boolean", + "example": null + }, + "canCreateThreadDump": { "type": "boolean", "example": null }, @@ -15073,6 +16206,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -15216,6 +16350,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -15238,6 +16373,12 @@ "type": "boolean", "example": null }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, "name": { "type": "string", "example": null, @@ -15454,6 +16595,36 @@ "applicationId": { "type": "string", "example": null + }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true } } } @@ -15939,7 +17110,7 @@ "example": null }, "scripts": { - "$ref": "#/components/schemas/MultipleScripts" + "$ref": "#/components/schemas/MultipleScriptsConfiguration" } } } @@ -17028,6 +18199,36 @@ "endpointServiceId": { "type": "string", "example": null + }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true } } } @@ -17446,6 +18647,22 @@ "problem": { "$ref": "#/components/schemas/Problem" }, + "rcaevents": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + } + }, "start": { "type": "integer", "format": "int64", @@ -17585,6 +18802,34 @@ "example": null } }, + "probableCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + } + }, + "probableCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null + }, "problem": { "type": "string", "example": null @@ -17871,6 +19116,21 @@ "rootSpan" ] }, + "GenericInfraAlertRule": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/InfraAlertRule" + } + ], + "example": null, + "required": [ + "aggregation", + "crossSeriesAggregation", + "entityType", + "metricName" + ] + }, "GeoLocationConfiguration": { "type": "object", "example": null, @@ -18354,7 +19614,7 @@ "description": "Entity grouping tag. Use the Instana Analyze Infrastructure dashboard to determine the entity grouping tag name.", "example": null }, - "maxItems": 1, + "maxItems": 5, "minItems": 0 }, "metrics": { @@ -18596,6 +19856,22 @@ "type" ] }, + "GetPayloadKeysResult": { + "type": "object", + "example": null, + "properties": { + "payloadKeys": { + "type": "array", + "description": "Keys that can be used to retrieve plugin payloads.", + "example": null, + "items": { + "type": "string", + "description": "Keys that can be used to retrieve plugin payloads.", + "example": null + } + } + } + }, "GetServices": { "type": "object", "example": null, @@ -18732,7 +20008,7 @@ "minLength": 0 }, "tagFilterExpression": { - "$ref": "#/components/schemas/TagFilterExpression" + "$ref": "#/components/schemas/TagFilterExpressionElement" }, "tagFilters": { "type": "array", @@ -18768,7 +20044,7 @@ "$ref": "#/components/schemas/Pagination" }, "tagFilterExpression": { - "$ref": "#/components/schemas/TagFilterExpression" + "$ref": "#/components/schemas/TagFilterExpressionElement" }, "tagFilters": { "type": "array", @@ -18807,7 +20083,7 @@ } }, "tagFilterExpression": { - "$ref": "#/components/schemas/TagFilterExpression" + "$ref": "#/components/schemas/TagFilterExpressionElement" }, "tagFilters": { "type": "array", @@ -18842,7 +20118,7 @@ "$ref": "#/components/schemas/Pagination" }, "tagFilterExpression": { - "$ref": "#/components/schemas/TagFilterExpression" + "$ref": "#/components/schemas/TagFilterExpressionElement" }, "tagFilters": { "type": "array", @@ -18964,6 +20240,9 @@ "pagination": { "$ref": "#/components/schemas/CursorPagination" }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + }, "tagFilters": { "type": "array", "example": null, @@ -19232,6 +20511,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -19254,6 +20534,12 @@ "type": "boolean", "example": null }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, "name": { "type": "string", "example": null, @@ -19361,6 +20647,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -19736,12 +21023,140 @@ "url": { "type": "string", "example": null, - "maxLength": 512, + "maxLength": 2047, + "minLength": 0 + }, + "validationString": { + "type": "string", + "example": null + } + } + } + ], + "example": null, + "required": [ + "markSyntheticCall", + "syntheticType", + "url" + ] + }, + "HttpEndpointConfig": { + "type": "object", + "example": null, + "properties": { + "endpointNameByCollectedPathTemplateRuleEnabled": { + "type": "boolean", + "example": null + }, + "endpointNameByFirstPathSegmentRuleEnabled": { + "type": "boolean", + "example": null + }, + "rules": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/HttpEndpointRule" + }, + "maxItems": 500, + "minItems": 0 + }, + "serviceId": { + "type": "string", + "example": null + } + }, + "required": [ + "rules", + "serviceId" + ] + }, + "HttpEndpointRule": { + "type": "object", + "example": null, + "properties": { + "enabled": { + "type": "boolean", + "example": null + }, + "pathSegments": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/HttpPathSegmentMatchingRule" + }, + "maxItems": 16, + "minItems": 1 + }, + "testCases": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "maxItems": 32, + "minItems": 0 + } + }, + "required": [ + "pathSegments" + ] + }, + "HttpPathSegmentMatchingRule": { + "type": "object", + "discriminator": { + "mapping": { + "FIXED": "#/components/schemas/FixedHttpPathSegmentMatchingRule", + "MATCH_ALL": "#/components/schemas/MatchAllHttpPathSegmentMatchingRule", + "PARAMETER": "#/components/schemas/PathParameterHttpPathSegmentMatchingRule", + "UNSUPPORTED": "#/components/schemas/UnsupportedHttpPathSegmentMatchingRule" + }, + "propertyName": "type" + }, + "example": null, + "properties": { + "type": { + "type": "string", + "enum": [ + "UNSUPPORTED", + "FIXED", + "PARAMETER", + "MATCH_ALL" + ], + "example": null + } + }, + "required": [ + "type" + ] + }, + "HttpScriptConfiguration": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/SyntheticTypeConfiguration" + }, + { + "type": "object", + "example": null, + "properties": { + "script": { + "type": "string", + "example": null, + "maxLength": 1048576, "minLength": 0 }, - "validationString": { + "scriptType": { "type": "string", + "enum": [ + "Basic", + "Jest" + ], "example": null + }, + "scripts": { + "$ref": "#/components/schemas/MultipleScriptsConfiguration" } } } @@ -19749,199 +21164,376 @@ "example": null, "required": [ "markSyntheticCall", - "syntheticType", - "url" + "syntheticType" ] }, - "HttpEndpointConfig": { + "HyperParam": { "type": "object", "example": null, "properties": { - "endpointNameByCollectedPathTemplateRuleEnabled": { - "type": "boolean", + "defaultValue": { + "type": "number", + "format": "double", "example": null }, - "endpointNameByFirstPathSegmentRuleEnabled": { + "description": { + "type": "string", + "example": null, + "maxLength": 2048, + "minLength": 0 + }, + "id": { + "type": "string", + "example": null, + "maxLength": 64, + "minLength": 0 + }, + "maxValue": { + "type": "number", + "format": "double", + "example": null + }, + "minValue": { + "type": "number", + "format": "double", + "example": null + }, + "name": { + "type": "string", + "example": null, + "maxLength": 256, + "minLength": 0 + }, + "valueFormat": { + "type": "string", + "enum": [ + "NUMBER", + "BYTES", + "KILO_BYTES", + "MEGA_BYTES", + "PERCENTAGE", + "PERCENTAGE_100", + "LATENCY", + "NANOS", + "MILLIS", + "MICROS", + "SECONDS", + "RATE", + "BYTE_RATE", + "UNDEFINED" + ], + "example": null + } + }, + "required": [ + "description", + "id", + "name" + ] + }, + "IdentityProviderPatch": { + "type": "object", + "example": null, + "properties": { + "restrictEmptyIdpGroups": { "type": "boolean", "example": null + } + } + }, + "InfraAlertConfig": { + "type": "object", + "example": null, + "properties": { + "alertChannelIds": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "maxItems": 1024, + "minItems": 0, + "uniqueItems": true }, - "rules": { + "customPayloadFields": { "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/HttpEndpointRule" + "$ref": "#/components/schemas/CustomPayloadField" }, - "maxItems": 500, + "maxItems": 20, "minItems": 0 }, - "serviceId": { + "description": { + "type": "string", + "example": null, + "maxLength": 65536, + "minLength": 0 + }, + "granularity": { + "type": "integer", + "format": "int32", + "default": 600000, + "enum": [ + 60000, + 300000, + 600000, + 900000, + 1200000, + 1800000 + ], + "example": null + }, + "groupBy": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "maxItems": 5, + "minItems": 0 + }, + "name": { "type": "string", + "example": null, + "maxLength": 256, + "minLength": 0 + }, + "predictiveTrigger": { + "type": "integer", + "format": "int64", + "example": null, + "writeOnly": true + }, + "rule": { + "$ref": "#/components/schemas/InfraAlertRule" + }, + "severity": { + "type": "integer", + "format": "int32", "example": null + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + }, + "threshold": { + "$ref": "#/components/schemas/Threshold" + }, + "timeThreshold": { + "$ref": "#/components/schemas/InfraTimeThreshold" } }, "required": [ - "rules", - "serviceId" + "alertChannelIds", + "customPayloadFields", + "description", + "granularity", + "groupBy", + "name", + "rule", + "tagFilterExpression", + "threshold", + "timeThreshold" ] }, - "HttpEndpointRule": { + "InfraAlertConfigWithMetadata": { "type": "object", "example": null, "properties": { + "alertChannelIds": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + }, + "maxItems": 1024, + "minItems": 0, + "uniqueItems": true + }, + "created": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, + "customPayloadFields": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/CustomPayloadField" + }, + "maxItems": 20, + "minItems": 0 + }, + "description": { + "type": "string", + "example": null, + "maxLength": 65536, + "minLength": 0 + }, "enabled": { "type": "boolean", "example": null }, - "pathSegments": { + "granularity": { + "type": "integer", + "format": "int32", + "default": 600000, + "enum": [ + 60000, + 300000, + 600000, + 900000, + 1200000, + 1800000 + ], + "example": null + }, + "groupBy": { "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/HttpPathSegmentMatchingRule" + "type": "string", + "example": null }, - "maxItems": 16, - "minItems": 1 + "maxItems": 5, + "minItems": 0 + }, + "id": { + "type": "string", + "example": null, + "maxLength": 64, + "minLength": 0 + }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, + "name": { + "type": "string", + "example": null, + "maxLength": 256, + "minLength": 0 + }, + "predictiveTrigger": { + "type": "integer", + "format": "int64", + "example": null, + "writeOnly": true + }, + "readOnly": { + "type": "boolean", + "example": null + }, + "rule": { + "$ref": "#/components/schemas/InfraAlertRule" + }, + "severity": { + "type": "integer", + "format": "int32", + "example": null + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" }, - "testCases": { - "type": "array", - "example": null, - "items": { - "type": "string", - "example": null - }, - "maxItems": 32, - "minItems": 0 + "threshold": { + "$ref": "#/components/schemas/Threshold" + }, + "timeThreshold": { + "$ref": "#/components/schemas/InfraTimeThreshold" } }, "required": [ - "pathSegments" + "alertChannelIds", + "customPayloadFields", + "description", + "granularity", + "groupBy", + "id", + "name", + "rule", + "tagFilterExpression", + "threshold", + "timeThreshold" ] }, - "HttpPathSegmentMatchingRule": { + "InfraAlertRule": { "type": "object", "discriminator": { "mapping": { - "FIXED": "#/components/schemas/FixedHttpPathSegmentMatchingRule", - "MATCH_ALL": "#/components/schemas/MatchAllHttpPathSegmentMatchingRule", - "PARAMETER": "#/components/schemas/PathParameterHttpPathSegmentMatchingRule", - "UNSUPPORTED": "#/components/schemas/UnsupportedHttpPathSegmentMatchingRule" + "genericRule": "#/components/schemas/GenericInfraAlertRule" }, - "propertyName": "type" + "propertyName": "alertType" }, "example": null, "properties": { - "type": { + "aggregation": { "type": "string", "enum": [ - "UNSUPPORTED", - "FIXED", - "PARAMETER", - "MATCH_ALL" + "SUM", + "MEAN", + "MAX", + "MIN", + "P25", + "P50", + "P75", + "P90", + "P95", + "P98", + "P99", + "P99_9", + "P99_99", + "DISTRIBUTION", + "DISTINCT_COUNT", + "SUM_POSITIVE", + "PER_SECOND" ], "example": null - } - }, - "required": [ - "type" - ] - }, - "HttpScriptConfiguration": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/SyntheticTypeConfiguration" - }, - { - "type": "object", - "example": null, - "properties": { - "script": { - "type": "string", - "example": null, - "maxLength": 1048576, - "minLength": 0 - }, - "scriptType": { - "type": "string", - "enum": [ - "Basic", - "Jest" - ], - "example": null - }, - "scripts": { - "$ref": "#/components/schemas/MultipleScripts" - } - } - } - ], - "example": null, - "required": [ - "markSyntheticCall", - "syntheticType" - ] - }, - "HyperParam": { - "type": "object", - "example": null, - "properties": { - "defaultValue": { - "type": "number", - "format": "double", - "example": null - }, - "description": { - "type": "string", - "example": null, - "maxLength": 2048, - "minLength": 0 }, - "id": { + "alertType": { "type": "string", - "example": null, - "maxLength": 64, - "minLength": 0 - }, - "maxValue": { - "type": "number", - "format": "double", "example": null }, - "minValue": { - "type": "number", - "format": "double", + "crossSeriesAggregation": { + "type": "string", + "enum": [ + "SUM", + "MEAN", + "MAX", + "MIN", + "P25", + "P50", + "P75", + "P90", + "P95", + "P98", + "P99", + "P99_9", + "P99_99", + "DISTRIBUTION", + "DISTINCT_COUNT", + "SUM_POSITIVE", + "PER_SECOND" + ], "example": null }, - "name": { + "entityType": { "type": "string", - "example": null, - "maxLength": 256, - "minLength": 0 + "example": null }, - "valueFormat": { + "metricName": { "type": "string", - "enum": [ - "NUMBER", - "BYTES", - "KILO_BYTES", - "MEGA_BYTES", - "PERCENTAGE", - "PERCENTAGE_100", - "LATENCY", - "NANOS", - "MILLIS", - "MICROS", - "SECONDS", - "RATE", - "BYTE_RATE", - "UNDEFINED" - ], "example": null } }, "required": [ - "description", - "id", - "name" + "alertType", + "metricName" ] }, "InfraEventResult": { @@ -19965,6 +21557,36 @@ }, "example": null } + }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true } } } @@ -20028,7 +21650,7 @@ }, "granularity": { "type": "integer", - "format": "int32", + "format": "int64", "description": " * If granularity is not specified an aggregated value for the selected timeframe is returned.\n * If granularity is specified data points are returned with the specified granularity\n * The granularity should not be greater than the `windowSize` (important: `windowSize` is expressed in milliseconds)\n * The granularity should not be set too small relative to the `windowSize` to avoid creating an excessively large number of data points (max 600)\n", "example": null, "title": "granularity in milliseconds" @@ -20036,6 +21658,10 @@ "metric": { "type": "string", "example": null + }, + "regex": { + "type": "boolean", + "example": null } }, "required": [ @@ -20043,6 +21669,30 @@ "metric" ] }, + "InfraTimeThreshold": { + "type": "object", + "discriminator": { + "mapping": { + "violationsInSequence": "#/components/schemas/ViolationsInSequenceInfraTimeThreshold" + }, + "propertyName": "type" + }, + "example": null, + "properties": { + "timeWindow": { + "type": "integer", + "format": "int64", + "example": null + }, + "type": { + "type": "string", + "example": null + } + }, + "required": [ + "type" + ] + }, "InfrastructureEntitiesResult": { "type": "object", "example": null, @@ -20078,35 +21728,43 @@ }, "InfrastructureGroup": { "type": "object", + "description": "group of infrastructure entities", "example": null, "properties": { "count": { "type": "integer", "format": "int64", + "description": "number of entities in this group", "example": null }, "metrics": { "type": "object", "additionalProperties": { "type": "array", + "description": "map of metric keys to array of timestamp,value pairs", "example": null, "items": { "type": "array", + "description": "map of metric keys to array of timestamp,value pairs", "example": null, "items": { "type": "number", + "description": "map of metric keys to array of timestamp,value pairs", "example": null } } }, + "description": "map of metric keys to array of timestamp,value pairs", "example": null }, "tags": { "type": "object", "additionalProperties": { "type": "object", + "description": "tag keys and values for this group", "example": null }, + "description": "tag keys and values for this group", "example": null } } @@ -20293,7 +21951,8 @@ "enum": [ "SUCCESS", "INTERNAL_ERROR", - "FAILURE_USER_ALREADY_EXISTS" + "FAILURE_USER_ALREADY_EXISTS", + "FAILURE_TENANT_IDP_CONFIGURED" ], "example": null }, @@ -20318,7 +21977,46 @@ } }, "required": [ - "ipMasking" + "ipMasking" + ] + }, + "JsStackTraceLine": { + "type": "object", + "example": null, + "properties": { + "column": { + "type": "integer", + "format": "int32", + "example": null, + "minimum": -1 + }, + "file": { + "type": "string", + "example": null + }, + "line": { + "type": "integer", + "format": "int32", + "example": null, + "minimum": -1 + }, + "name": { + "type": "string", + "example": null + }, + "translationExplanation": { + "type": "string", + "example": null + }, + "translationStatus": { + "type": "integer", + "format": "int32", + "example": null, + "minimum": -1 + } + }, + "required": [ + "file" ] }, "KubernetesPhysicalContext": { @@ -20391,7 +22089,8 @@ "type": "string", "enum": [ "USER", - "API_TOKEN" + "API_TOKEN", + "POLICY" ], "example": null } @@ -20567,6 +22266,13 @@ }, "scheduling": { "$ref": "#/components/schemas/MaintenanceConfigScheduling" + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + }, + "tagFilterExpressionEnabled": { + "type": "boolean", + "example": null } }, "required": [ @@ -20624,6 +22330,13 @@ "EXPIRED" ], "example": null + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + }, + "tagFilterExpressionEnabled": { + "type": "boolean", + "example": null } }, "required": [ @@ -21201,6 +22914,7 @@ "SELF_MONITORING", "SOLR", "SPARK", + "TUXEDO", "VSHPERE" ], "example": null @@ -21311,6 +23025,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -21597,6 +23312,36 @@ "mobileAppId": { "type": "string", "example": null + }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true } } } @@ -21996,6 +23741,12 @@ "maxLength": 128, "minLength": 0 }, + "userSessionId": { + "type": "string", + "example": null, + "maxLength": 128, + "minLength": 0 + }, "view": { "type": "string", "example": null, @@ -22216,7 +23967,7 @@ } } }, - "MultipleScripts": { + "MultipleScriptsConfiguration": { "type": "object", "example": null, "properties": { @@ -22851,6 +24602,45 @@ "inputName" ] }, + "SalesforceIntegration": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/AbstractIntegration" + }, + { + "type": "object", + "example": null, + "properties": { + "bearerToken": { + "type": "string", + "example": null + }, + "clientId": { + "type": "string", + "example": null + }, + "clientSecret": { + "type": "string", + "example": null + }, + "salesforceUrl": { + "type": "string", + "example": null + } + } + } + ], + "example": null, + "required": [ + "clientId", + "clientSecret", + "id", + "kind", + "name", + "salesforceUrl" + ] + }, "ScopeBinding": { "type": "object", "example": null, @@ -23032,6 +24822,36 @@ "type": "string", "example": null }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true + }, "serviceId": { "type": "string", "example": null @@ -23738,14 +25558,46 @@ "version" ] }, + "SourceMapFileBlob": { + "type": "object", + "example": null, + "properties": { + "blobIndex": { + "type": "integer", + "format": "int32", + "example": null + }, + "size": { + "type": "integer", + "format": "int64", + "example": null + }, + "sizeOnDisk": { + "type": "integer", + "format": "int64", + "example": null + } + } + }, "SourceMapFileMeta": { "type": "object", "example": null, "properties": { + "blobs": { + "type": "array", + "example": null, + "items": { + "$ref": "#/components/schemas/SourceMapFileBlob" + } + }, "format": { "type": "string", "example": null }, + "meta": { + "type": "string", + "example": null + }, "size": { "type": "integer", "format": "int64", @@ -23760,7 +25612,9 @@ "type": "string", "enum": [ "JS_MAP", - "JS" + "JS", + "R8PG_MAP", + "DWARF" ], "example": null }, @@ -24050,45 +25904,6 @@ } } }, - "StackTraceLine": { - "type": "object", - "example": null, - "properties": { - "column": { - "type": "integer", - "format": "int32", - "example": null, - "minimum": -1 - }, - "file": { - "type": "string", - "example": null - }, - "line": { - "type": "integer", - "format": "int32", - "example": null, - "minimum": -1 - }, - "name": { - "type": "string", - "example": null - }, - "translationExplanation": { - "type": "string", - "example": null - }, - "translationStatus": { - "type": "integer", - "format": "int32", - "example": null, - "minimum": -1 - } - }, - "required": [ - "file" - ] - }, "StaticStringField": { "type": "object", "allOf": [ @@ -24411,6 +26226,12 @@ "maxLength": 64, "minLength": 0 }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, "name": { "type": "string", "example": null, @@ -24682,7 +26503,7 @@ "type": "string", "example": null, "maxLength": 128, - "minLength": 1 + "minLength": 0 }, "label": { "type": "string", @@ -25050,6 +26871,36 @@ "example": null } }, + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true + }, "syntheticTestId": { "type": "string", "example": null @@ -25490,6 +27341,11 @@ "type": "string", "example": null }, + "createdAt": { + "type": "integer", + "format": "int64", + "example": null + }, "frequency": { "type": "integer", "format": "int32", @@ -25534,6 +27390,11 @@ "$ref": "#/components/schemas/LocationStatus" } }, + "modifiedAt": { + "type": "integer", + "format": "int64", + "example": null + }, "serviceId": { "type": "string", "example": null @@ -26564,7 +28425,8 @@ "MobileSmartAlert", "ApplicationSmartAlert", "GlobalApplicationSmartAlert", - "SyntheticSmartAlert" + "SyntheticSmartAlert", + "InfraSmartAlert" ], "example": null } @@ -26717,6 +28579,13 @@ "EXPIRED" ], "example": null + }, + "tagFilterExpression": { + "$ref": "#/components/schemas/TagFilterExpressionElement" + }, + "tagFilterExpressionEnabled": { + "type": "boolean", + "example": null } }, "required": [ @@ -26893,6 +28762,15 @@ ], "example": null }, + "ViolationsInSequenceInfraTimeThreshold": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/InfraTimeThreshold" + } + ], + "example": null + }, "ViolationsInSequenceMobileAppTimeThreshold": { "type": "object", "allOf": [ @@ -27040,7 +28918,7 @@ "url": { "type": "string", "example": null, - "maxLength": 512, + "maxLength": 2047, "minLength": 0 } } @@ -27148,6 +29026,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -27257,6 +29136,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -27271,6 +29151,12 @@ "maxLength": 64, "minLength": 0 }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, "name": { "type": "string", "example": null, @@ -27636,6 +29522,36 @@ "type": "object", "example": null, "properties": { + "probableRootCause": { + "type": "array", + "example": null, + "items": { + "type": "object", + "additionalProperties": { + "type": "array", + "example": null, + "items": { + "type": "string", + "example": null + } + }, + "example": null + }, + "writeOnly": true + }, + "probableRootCauseMetadata": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "string", + "example": null + }, + "example": null + }, + "example": null, + "writeOnly": true + }, "websiteId": { "type": "string", "example": null @@ -27990,7 +29906,7 @@ "type": "array", "example": null, "items": { - "$ref": "#/components/schemas/StackTraceLine" + "$ref": "#/components/schemas/JsStackTraceLine" }, "maxItems": 64, "minItems": 0 @@ -28465,6 +30381,7 @@ "format": "int32", "default": 600000, "enum": [ + 60000, 300000, 600000, 900000, @@ -28479,6 +30396,12 @@ "maxLength": 64, "minLength": 0 }, + "initialCreated": { + "type": "integer", + "format": "int64", + "example": null, + "minimum": 1 + }, "mobileAppId": { "type": "string", "example": null, @@ -28676,7 +30599,8 @@ "Maintenance Configuration", "Synthetic Calls", "Session Settings", - "Automation Settings" + "Automation Settings", + "Authentication" ] }, { @@ -28689,7 +30613,9 @@ "name": "Service Level Indicators", "tags": [ "SLI Settings", - "SLI Report" + "SLI Report", + "Apdex Settings", + "Apdex Report" ] }, { diff --git a/testutils/test-http-server.go b/testutils/test-http-server.go index f58442c..405453d 100644 --- a/testutils/test-http-server.go +++ b/testutils/test-http-server.go @@ -112,7 +112,6 @@ func (server *testHTTPServerImpl) wrapHandlerFunc(handlerFunc http.HandlerFunc) // Start starts the http service with the configured routes func (server *testHTTPServerImpl) Start() { - binding := fmt.Sprintf(":%d", server.GetPort()) srv := &http.Server{ Handler: server.router, ReadHeaderTimeout: 5 * time.Second, @@ -123,6 +122,7 @@ func (server *testHTTPServerImpl) Start() { panic(err) } port := l.Addr().(*net.TCPAddr).Port + binding := fmt.Sprintf(":%d", port) go func() { rootFolder, err := GetRootFolder() From 2033dd1282aea81b4dcd1488cd4d1c99372b1cbe Mon Sep 17 00:00:00 2001 From: gessnerfl Date: Wed, 3 Jan 2024 08:28:47 +0100 Subject: [PATCH 2/4] #214: update gh actions --- .github/workflows/build.yml | 4 ++-- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/dependency-submisssion.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7afc04d..bcb2edc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: fetch-depth: 0 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: '1.20.0' @@ -50,7 +50,7 @@ jobs: set +euo pipefail - name: Upload test log - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: unit-test-report diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b3de32d..8b14c10 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -23,13 +23,13 @@ jobs: uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: security-extended,security-and-quality - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/dependency-submisssion.yml b/.github/workflows/dependency-submisssion.yml index 375bb77..7978fd4 100644 --- a/.github/workflows/dependency-submisssion.yml +++ b/.github/workflows/dependency-submisssion.yml @@ -14,7 +14,7 @@ jobs: - name: 'Checkout Repository' uses: actions/checkout@v4 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: ">=1.20.0" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd37c7d..267d1c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: run: git fetch --prune --unshallow - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.20.0 From 63c686b3879cb5d8e3651de13b52ccb1df3efaee Mon Sep 17 00:00:00 2001 From: gessnerfl Date: Wed, 3 Jan 2024 08:30:25 +0100 Subject: [PATCH 3/4] #214: update dependencies --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c71c5d0..ef44d3e 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect google.golang.org/grpc v1.60.1 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 6d23dd9..25356fd 100644 --- a/go.sum +++ b/go.sum @@ -202,8 +202,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= From c878358a24352d7e5bafb45fa1109c89e1cf80d0 Mon Sep 17 00:00:00 2001 From: gessnerfl Date: Wed, 3 Jan 2024 08:39:58 +0100 Subject: [PATCH 4/4] #214: fix unit tests --- ...e-application-alert-config-commons_test.go | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/instana/resource-application-alert-config-commons_test.go b/instana/resource-application-alert-config-commons_test.go index 63cd6af..5c5edb4 100644 --- a/instana/resource-application-alert-config-commons_test.go +++ b/instana/resource-application-alert-config-commons_test.go @@ -375,6 +375,7 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS expected: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, @@ -399,6 +400,7 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS expected: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{ @@ -423,6 +425,7 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS expected: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{ map[string]interface{}{ @@ -448,6 +451,7 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS expected: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), @@ -478,6 +482,30 @@ func (f *anyApplicationConfigTest) createTestCasesForUpdatesOfTerraformResourceS ApplicationAlertConfigFieldRuleMetricName: metricName, }, }, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, + ApplicationAlertConfigFieldRuleLogs: []interface{}{}, + ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, + ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, + ApplicationAlertConfigFieldRuleThroughput: []interface{}{}, + }, + }, + }, + { + name: "Errors", + input: restapi.ApplicationAlertRule{ + AlertType: "errors", + Aggregation: restapi.SumAggregation, + MetricName: metricName, + }, + expected: []interface{}{ + map[string]interface{}{ + ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{ + map[string]interface{}{ + ApplicationAlertConfigFieldRuleAggregation: string(restapi.SumAggregation), + ApplicationAlertConfigFieldRuleMetricName: metricName, + }, + }, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, @@ -777,6 +805,7 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS input: []map[string]interface{}{ { ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, @@ -801,6 +830,7 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS input: []map[string]interface{}{ { ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{ @@ -825,6 +855,7 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS input: []map[string]interface{}{ { ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{ map[string]interface{}{ @@ -850,6 +881,7 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS input: []map[string]interface{}{ { ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, ApplicationAlertConfigFieldRuleLogs: []interface{}{ map[string]interface{}{ ApplicationAlertConfigFieldRuleAggregation: string(restapi.MinAggregation), @@ -880,6 +912,30 @@ func (f *anyApplicationConfigTest) createTestCasesForMappingOfTerraformResourceS ApplicationAlertConfigFieldRuleMetricName: metricName, }, }, + ApplicationAlertConfigFieldRuleErrors: []interface{}{}, + ApplicationAlertConfigFieldRuleLogs: []interface{}{}, + ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, + ApplicationAlertConfigFieldRuleStatusCode: []interface{}{}, + ApplicationAlertConfigFieldRuleThroughput: []interface{}{}, + }, + }, + }, + { + name: "Errors", + expected: restapi.ApplicationAlertRule{ + AlertType: "errors", + Aggregation: restapi.SumAggregation, + MetricName: metricName, + }, + input: []map[string]interface{}{ + { + ApplicationAlertConfigFieldRuleErrorRate: []interface{}{}, + ApplicationAlertConfigFieldRuleErrors: []interface{}{ + map[string]interface{}{ + ApplicationAlertConfigFieldRuleAggregation: string(restapi.SumAggregation), + ApplicationAlertConfigFieldRuleMetricName: metricName, + }, + }, ApplicationAlertConfigFieldRuleLogs: []interface{}{}, ApplicationAlertConfigFieldRuleSlowness: []interface{}{}, ApplicationAlertConfigFieldRuleStatusCode: []interface{}{},