From 75901dd92d8feef102e8027eec1d110d2dfd0c1f Mon Sep 17 00:00:00 2001 From: Julien Duchesne Date: Wed, 20 Dec 2023 08:55:02 -0500 Subject: [PATCH] Update provider to latest version to support nested folders Closes https://github.com/grafana/crossplane-provider-grafana/issues/56 --- Makefile | 4 +- .../v1alpha1/zz_contactpoint_types.go | 660 +++++++++++- .../v1alpha1/zz_generated.deepcopy.go | 945 ++++++++++++++++- .../v1alpha1/zz_generated.resolvers.go | 26 + .../v1alpha1/zz_generated_terraformed.go | 2 +- .../v1alpha1/zz_messagetemplate_types.go | 20 + apis/alerting/v1alpha1/zz_mutetiming_types.go | 13 + .../v1alpha1/zz_notificationpolicy_types.go | 54 +- apis/alerting/v1alpha1/zz_rulegroup_types.go | 18 +- apis/oncall/v1alpha1/zz_generated.deepcopy.go | 123 +++ apis/oncall/v1alpha1/zz_integration_types.go | 24 +- .../v1alpha1/zz_outgoingwebhook_types.go | 102 +- apis/oncall/v1alpha1/zz_schedule_types.go | 13 + .../v1alpha1/zz_dashboardpermission_types.go | 13 +- apis/oss/v1alpha1/zz_folder_types.go | 21 + .../oss/v1alpha1/zz_folderpermission_types.go | 13 +- apis/oss/v1alpha1/zz_generated.deepcopy.go | 53 + apis/oss/v1alpha1/zz_generated.resolvers.go | 16 + apis/oss/v1alpha1/zz_organization_types.go | 25 + .../zz_organizationpreferences_types.go | 24 +- .../zz_serviceaccountpermission_types.go | 13 +- apis/oss/v1alpha1/zz_team_types.go | 12 +- apis/sm/v1alpha1/zz_check_types.go | 432 +++++++- apis/sm/v1alpha1/zz_generated.deepcopy.go | 837 ++++++++++++++- config/grafana/config.go | 8 + config/provider-metadata.yaml | 345 +++++- config/schema.json | 2 +- examples-generated/alerting/mutetiming.yaml | 1 + .../alerting/notificationpolicy.yaml | 8 +- examples-generated/oss/dashboard.yaml | 28 +- .../oss/dashboardpermission.yaml | 11 +- examples-generated/oss/folderpermission.yaml | 5 + .../oss/serviceaccounttoken.yaml | 17 +- examples-generated/oss/team.yaml | 22 +- ...g.grafana.crossplane.io_contactpoints.yaml | 981 ++++++++++++++++-- ...rafana.crossplane.io_messagetemplates.yaml | 85 ++ ...ing.grafana.crossplane.io_mutetimings.yaml | 21 + ...na.crossplane.io_notificationpolicies.yaml | 57 +- ...ting.grafana.crossplane.io_rulegroups.yaml | 21 +- ...ll.grafana.crossplane.io_integrations.yaml | 33 +- ...rafana.crossplane.io_outgoingwebhooks.yaml | 165 ++- ...ncall.grafana.crossplane.io_schedules.yaml | 15 + ...na.crossplane.io_dashboardpermissions.yaml | 33 +- ...afana.crossplane.io_folderpermissions.yaml | 33 +- .../oss.grafana.crossplane.io_folders.yaml | 93 ++ ...crossplane.io_organizationpreferences.yaml | 33 +- ...s.grafana.crossplane.io_organizations.yaml | 36 + ...ossplane.io_serviceaccountpermissions.yaml | 35 +- .../crds/oss.grafana.crossplane.io_teams.yaml | 27 +- .../crds/sm.grafana.crossplane.io_checks.yaml | 540 +++++++++- 50 files changed, 5694 insertions(+), 424 deletions(-) diff --git a/Makefile b/Makefile index 4525a83..4c480d3 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,9 @@ export TERRAFORM_VERSION := 1.3.9 export TERRAFORM_PROVIDER_SOURCE := grafana/grafana export TERRAFORM_PROVIDER_REPO := https://github.com/grafana/terraform-provider-grafana -export TERRAFORM_PROVIDER_VERSION := 2.3.3 +export TERRAFORM_PROVIDER_VERSION := 2.8.0 export TERRAFORM_PROVIDER_DOWNLOAD_NAME := terraform-provider-grafana -export TERRAFORM_NATIVE_PROVIDER_BINARY := terraform-provider-grafana_v2.3.3 +export TERRAFORM_NATIVE_PROVIDER_BINARY := terraform-provider-grafana_v2.8.0 export TERRAFORM_DOCS_PATH := docs/resources PLATFORMS ?= linux_amd64 linux_arm64 diff --git a/apis/alerting/v1alpha1/zz_contactpoint_types.go b/apis/alerting/v1alpha1/zz_contactpoint_types.go index 080181b..c5fd867 100755 --- a/apis/alerting/v1alpha1/zz_contactpoint_types.go +++ b/apis/alerting/v1alpha1/zz_contactpoint_types.go @@ -105,10 +105,18 @@ type ContactPointInitParameters struct { // A contact point that publishes notifications to Apache Kafka topics. Kafka []KafkaInitParameters `json:"kafka,omitempty" tf:"kafka,omitempty"` + // (Block List) A contact point that sends notifications to LINE.me. (see below for nested schema) + // A contact point that sends notifications to LINE.me. + Line []LineInitParameters `json:"line,omitempty" tf:"line,omitempty"` + // (String) The name of the contact point. // The name of the contact point. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // Call. (see below for nested schema) + // A contact point that sends notifications to Grafana On-Call. + Oncall []OncallInitParameters `json:"oncall,omitempty" tf:"oncall,omitempty"` + // (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) // A contact point that sends notifications to OpsGenie. Opsgenie []OpsgenieInitParameters `json:"opsgenie,omitempty" tf:"opsgenie,omitempty"` @@ -145,6 +153,10 @@ type ContactPointInitParameters struct { // A contact point that sends notifications to VictorOps (now known as Splunk OnCall). Victorops []VictoropsInitParameters `json:"victorops,omitempty" tf:"victorops,omitempty"` + // (Block List) A contact point that sends notifications to Cisco Webex. (see below for nested schema) + // A contact point that sends notifications to Cisco Webex. + Webex []WebexInitParameters `json:"webex,omitempty" tf:"webex,omitempty"` + // (Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config (see below for nested schema) // A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config Webhook []WebhookInitParameters `json:"webhook,omitempty" tf:"webhook,omitempty"` @@ -183,10 +195,18 @@ type ContactPointObservation struct { // A contact point that publishes notifications to Apache Kafka topics. Kafka []KafkaObservation `json:"kafka,omitempty" tf:"kafka,omitempty"` + // (Block List) A contact point that sends notifications to LINE.me. (see below for nested schema) + // A contact point that sends notifications to LINE.me. + Line []LineObservation `json:"line,omitempty" tf:"line,omitempty"` + // (String) The name of the contact point. // The name of the contact point. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // Call. (see below for nested schema) + // A contact point that sends notifications to Grafana On-Call. + Oncall []OncallObservation `json:"oncall,omitempty" tf:"oncall,omitempty"` + // (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) // A contact point that sends notifications to OpsGenie. Opsgenie []OpsgenieObservation `json:"opsgenie,omitempty" tf:"opsgenie,omitempty"` @@ -223,6 +243,10 @@ type ContactPointObservation struct { // A contact point that sends notifications to VictorOps (now known as Splunk OnCall). Victorops []VictoropsObservation `json:"victorops,omitempty" tf:"victorops,omitempty"` + // (Block List) A contact point that sends notifications to Cisco Webex. (see below for nested schema) + // A contact point that sends notifications to Cisco Webex. + Webex []WebexObservation `json:"webex,omitempty" tf:"webex,omitempty"` + // (Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config (see below for nested schema) // A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config Webhook []WebhookObservation `json:"webhook,omitempty" tf:"webhook,omitempty"` @@ -264,11 +288,21 @@ type ContactPointParameters struct { // +kubebuilder:validation:Optional Kafka []KafkaParameters `json:"kafka,omitempty" tf:"kafka,omitempty"` + // (Block List) A contact point that sends notifications to LINE.me. (see below for nested schema) + // A contact point that sends notifications to LINE.me. + // +kubebuilder:validation:Optional + Line []LineParameters `json:"line,omitempty" tf:"line,omitempty"` + // (String) The name of the contact point. // The name of the contact point. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + // Call. (see below for nested schema) + // A contact point that sends notifications to Grafana On-Call. + // +kubebuilder:validation:Optional + Oncall []OncallParameters `json:"oncall,omitempty" tf:"oncall,omitempty"` + // (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) // A contact point that sends notifications to OpsGenie. // +kubebuilder:validation:Optional @@ -314,6 +348,11 @@ type ContactPointParameters struct { // +kubebuilder:validation:Optional Victorops []VictoropsParameters `json:"victorops,omitempty" tf:"victorops,omitempty"` + // (Block List) A contact point that sends notifications to Cisco Webex. (see below for nested schema) + // A contact point that sends notifications to Cisco Webex. + // +kubebuilder:validation:Optional + Webex []WebexParameters `json:"webex,omitempty" tf:"webex,omitempty"` + // (Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config (see below for nested schema) // A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config // +kubebuilder:validation:Optional @@ -422,6 +461,10 @@ type DiscordInitParameters struct { // The templated content of the message. Defaults to “. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The templated title of the message. + // The templated content of the title. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (Boolean) Whether to use the bot account's plain username instead of "Grafana." Defaults to false. // Whether to use the bot account's plain username instead of "Grafana." Defaults to `false`. UseDiscordUsername *bool `json:"useDiscordUsername,omitempty" tf:"use_discord_username,omitempty"` @@ -441,6 +484,10 @@ type DiscordObservation struct { // The templated content of the message. Defaults to “. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The templated title of the message. + // The templated content of the title. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` @@ -472,6 +519,11 @@ type DiscordParameters struct { // +kubebuilder:validation:Optional SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` + // (String) The templated title of the message. + // The templated content of the title. + // +kubebuilder:validation:Optional + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The URL of the Alertmanager instance. // The discord webhook URL. // +kubebuilder:validation:Required @@ -575,6 +627,10 @@ type GooglechatInitParameters struct { // (String) The templated content of the message. // The templated content of the message. Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The templated title of the message. + // The templated content of the title. + Title *string `json:"title,omitempty" tf:"title,omitempty"` } type GooglechatObservation struct { @@ -587,6 +643,10 @@ type GooglechatObservation struct { // The templated content of the message. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The templated title of the message. + // The templated content of the title. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` @@ -609,6 +669,11 @@ type GooglechatParameters struct { // +kubebuilder:validation:Optional SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` + // (String) The templated title of the message. + // The templated content of the title. + // +kubebuilder:validation:Optional + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The URL of the Alertmanager instance. // The Google Chat webhook URL. // +kubebuilder:validation:Required @@ -617,6 +682,22 @@ type GooglechatParameters struct { type KafkaInitParameters struct { + // (String) The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to v2. + // The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to `v2`. + APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + + // (String) The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + // The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + + // (String) The templated description of the Kafka message. + // The templated description of the Kafka message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The templated details to include with the message. + // The templated details to include with the message. + Details *string `json:"details,omitempty" tf:"details,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -624,10 +705,30 @@ type KafkaInitParameters struct { // (String) The name of the Kafka topic to publish to. // The name of the Kafka topic to publish to. Topic *string `json:"topic,omitempty" tf:"topic,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // The user name to use when making a call to the Kafka REST Proxy + Username *string `json:"username,omitempty" tf:"username,omitempty"` } type KafkaObservation struct { + // (String) The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to v2. + // The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to `v2`. + APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + + // (String) The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + // The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + + // (String) The templated description of the Kafka message. + // The templated description of the Kafka message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The templated details to include with the message. + // The templated details to include with the message. + Details *string `json:"details,omitempty" tf:"details,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -639,15 +740,44 @@ type KafkaObservation struct { // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // The user name to use when making a call to the Kafka REST Proxy + Username *string `json:"username,omitempty" tf:"username,omitempty"` } type KafkaParameters struct { + // (String) The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to v2. + // The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to `v2`. + // +kubebuilder:validation:Optional + APIVersion *string `json:"apiVersion,omitempty" tf:"api_version,omitempty"` + + // (String) The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + // The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' + // +kubebuilder:validation:Optional + ClusterID *string `json:"clusterId,omitempty" tf:"cluster_id,omitempty"` + + // (String) The templated description of the Kafka message. + // The templated description of the Kafka message. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (String) The templated details to include with the message. + // The templated details to include with the message. + // +kubebuilder:validation:Optional + Details *string `json:"details,omitempty" tf:"details,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. // +kubebuilder:validation:Optional DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + // (String, Sensitive) The password to use when making a call to the Kafka REST Proxy + // The password to use when making a call to the Kafka REST Proxy + // +kubebuilder:validation:Optional + PasswordSecretRef *v1.SecretKeySelector `json:"passwordSecretRef,omitempty" tf:"-"` + // (String, Sensitive) The URL of the Kafka REST proxy to send requests to. // The URL of the Kafka REST proxy to send requests to. // +kubebuilder:validation:Required @@ -662,6 +792,205 @@ type KafkaParameters struct { // The name of the Kafka topic to publish to. // +kubebuilder:validation:Optional Topic *string `json:"topic" tf:"topic,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // The user name to use when making a call to the Kafka REST Proxy + // +kubebuilder:validation:Optional + Username *string `json:"username,omitempty" tf:"username,omitempty"` +} + +type LineInitParameters struct { + + // (String) The templated description of the Kafka message. + // The templated description of the message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The templated title of the message. + // The templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` +} + +type LineObservation struct { + + // (String) The templated description of the Kafka message. + // The templated description of the message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The templated title of the message. + // The templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String) The UID of the contact point. + // The UID of the contact point. + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` +} + +type LineParameters struct { + + // (String) The templated description of the Kafka message. + // The templated description of the message. + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + // +kubebuilder:validation:Optional + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. + // Additional custom properties to attach to the notifier. Defaults to `map[]`. + // +kubebuilder:validation:Optional + SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` + + // (String) The templated title of the message. + // The templated title of the message. + // +kubebuilder:validation:Optional + Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String, Sensitive) The bearer token used to authorize the client. + // The bearer token used to authorize the client. + // +kubebuilder:validation:Required + TokenSecretRef v1.SecretKeySelector `json:"tokenSecretRef" tf:"-"` +} + +type OncallInitParameters struct { + + // attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + // Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + AuthorizationScheme *string `json:"authorizationScheme,omitempty" tf:"authorization_scheme,omitempty"` + + // (String) The username component of the basic auth credentials to use. + // The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used. + BasicAuthUser *string `json:"basicAuthUser,omitempty" tf:"basic_auth_user,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The HTTP method to use in the request. Defaults to POST. + // The HTTP method to use in the request. Defaults to `POST`. + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (Number) The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + // The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + MaxAlerts *float64 `json:"maxAlerts,omitempty" tf:"max_alerts,omitempty"` + + // (String) The templated content of the message. + // Custom message. You can use template variables. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The templated title of the message. + // Templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String) The URL of the Alertmanager instance. + // The URL to send webhook requests to. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type OncallObservation struct { + + // attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + // Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + AuthorizationScheme *string `json:"authorizationScheme,omitempty" tf:"authorization_scheme,omitempty"` + + // (String) The username component of the basic auth credentials to use. + // The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used. + BasicAuthUser *string `json:"basicAuthUser,omitempty" tf:"basic_auth_user,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The HTTP method to use in the request. Defaults to POST. + // The HTTP method to use in the request. Defaults to `POST`. + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (Number) The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + // The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + MaxAlerts *float64 `json:"maxAlerts,omitempty" tf:"max_alerts,omitempty"` + + // (String) The templated content of the message. + // Custom message. You can use template variables. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) The templated title of the message. + // Templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String) The UID of the contact point. + // The UID of the contact point. + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // (String) The URL of the Alertmanager instance. + // The URL to send webhook requests to. + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type OncallParameters struct { + + // attaches an auth header with this value. Do not use in conjunction with basic auth parameters. + // Allows a custom authorization scheme - attaches an auth header with this value. Do not use in conjunction with basic auth parameters. + // +kubebuilder:validation:Optional + AuthorizationCredentialsSecretRef *v1.SecretKeySelector `json:"authorizationCredentialsSecretRef,omitempty" tf:"-"` + + // attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + // Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters. + // +kubebuilder:validation:Optional + AuthorizationScheme *string `json:"authorizationScheme,omitempty" tf:"authorization_scheme,omitempty"` + + // (String, Sensitive) The password component of the basic auth credentials to use. + // The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used. + // +kubebuilder:validation:Optional + BasicAuthPasswordSecretRef *v1.SecretKeySelector `json:"basicAuthPasswordSecretRef,omitempty" tf:"-"` + + // (String) The username component of the basic auth credentials to use. + // The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used. + // +kubebuilder:validation:Optional + BasicAuthUser *string `json:"basicAuthUser,omitempty" tf:"basic_auth_user,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + // +kubebuilder:validation:Optional + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The HTTP method to use in the request. Defaults to POST. + // The HTTP method to use in the request. Defaults to `POST`. + // +kubebuilder:validation:Optional + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (Number) The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + // The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. + // +kubebuilder:validation:Optional + MaxAlerts *float64 `json:"maxAlerts,omitempty" tf:"max_alerts,omitempty"` + + // (String) The templated content of the message. + // Custom message. You can use template variables. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. + // Additional custom properties to attach to the notifier. Defaults to `map[]`. + // +kubebuilder:validation:Optional + SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` + + // (String) The templated title of the message. + // Templated title of the message. + // +kubebuilder:validation:Optional + Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String) The URL of the Alertmanager instance. + // The URL to send webhook requests to. + // +kubebuilder:validation:Optional + URL *string `json:"url" tf:"url,omitempty"` } type OpsgenieInitParameters struct { @@ -670,7 +999,7 @@ type OpsgenieInitParameters struct { // Whether to auto-close alerts in OpsGenie when they resolve in the Alertmanager. AutoClose *bool `json:"autoClose,omitempty" tf:"auto_close,omitempty"` - // level description to use for the alert. + // (String) The templated description of the Kafka message. // A templated high-level description to use for the alert. Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -686,6 +1015,10 @@ type OpsgenieInitParameters struct { // Whether to allow the alert priority to be configured via the value of the `og_priority` annotation on the alert. OverridePriority *bool `json:"overridePriority,omitempty" tf:"override_priority,omitempty"` + // (Block List) Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. (see below for nested schema) + // Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. + Responders []RespondersInitParameters `json:"responders,omitempty" tf:"responders,omitempty"` + // (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, details, both, or empty to use the default behavior of Tags. // Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are `tags`, `details`, `both`, or empty to use the default behavior of Tags. SendTagsAs *string `json:"sendTagsAs,omitempty" tf:"send_tags_as,omitempty"` @@ -701,7 +1034,7 @@ type OpsgenieObservation struct { // Whether to auto-close alerts in OpsGenie when they resolve in the Alertmanager. AutoClose *bool `json:"autoClose,omitempty" tf:"auto_close,omitempty"` - // level description to use for the alert. + // (String) The templated description of the Kafka message. // A templated high-level description to use for the alert. Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -717,6 +1050,10 @@ type OpsgenieObservation struct { // Whether to allow the alert priority to be configured via the value of the `og_priority` annotation on the alert. OverridePriority *bool `json:"overridePriority,omitempty" tf:"override_priority,omitempty"` + // (Block List) Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. (see below for nested schema) + // Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. + Responders []RespondersObservation `json:"responders,omitempty" tf:"responders,omitempty"` + // (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, details, both, or empty to use the default behavior of Tags. // Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are `tags`, `details`, `both`, or empty to use the default behavior of Tags. SendTagsAs *string `json:"sendTagsAs,omitempty" tf:"send_tags_as,omitempty"` @@ -742,7 +1079,7 @@ type OpsgenieParameters struct { // +kubebuilder:validation:Optional AutoClose *bool `json:"autoClose,omitempty" tf:"auto_close,omitempty"` - // level description to use for the alert. + // (String) The templated description of the Kafka message. // A templated high-level description to use for the alert. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -762,6 +1099,11 @@ type OpsgenieParameters struct { // +kubebuilder:validation:Optional OverridePriority *bool `json:"overridePriority,omitempty" tf:"override_priority,omitempty"` + // (Block List) Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. (see below for nested schema) + // Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. + // +kubebuilder:validation:Optional + Responders []RespondersParameters `json:"responders,omitempty" tf:"responders,omitempty"` + // (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, details, both, or empty to use the default behavior of Tags. // Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are `tags`, `details`, `both`, or empty to use the default behavior of Tags. // +kubebuilder:validation:Optional @@ -796,7 +1138,7 @@ type PagerdutyInitParameters struct { // The component being affected by the event. Component *string `json:"component,omitempty" tf:"component,omitempty"` - // (Map of String) A set of arbitrary key/value pairs that provide further detail about the incident. + // (String) The templated details to include with the message. // A set of arbitrary key/value pairs that provide further detail about the incident. Details map[string]*string `json:"details,omitempty" tf:"details,omitempty"` @@ -839,7 +1181,7 @@ type PagerdutyObservation struct { // The component being affected by the event. Component *string `json:"component,omitempty" tf:"component,omitempty"` - // (Map of String) A set of arbitrary key/value pairs that provide further detail about the incident. + // (String) The templated details to include with the message. // A set of arbitrary key/value pairs that provide further detail about the incident. Details map[string]*string `json:"details,omitempty" tf:"details,omitempty"` @@ -890,7 +1232,7 @@ type PagerdutyParameters struct { // +kubebuilder:validation:Optional Component *string `json:"component,omitempty" tf:"component,omitempty"` - // (Map of String) A set of arbitrary key/value pairs that provide further detail about the incident. + // (String) The templated details to include with the message. // A set of arbitrary key/value pairs that provide further detail about the incident. // +kubebuilder:validation:Optional Details map[string]*string `json:"details,omitempty" tf:"details,omitempty"` @@ -972,6 +1314,10 @@ type PushoverInitParameters struct { // (String) The templated title of the message. // The templated title of the message. Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (Boolean) Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + // Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + UploadImage *bool `json:"uploadImage,omitempty" tf:"upload_image,omitempty"` } type PushoverObservation struct { @@ -1019,6 +1365,10 @@ type PushoverObservation struct { // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` + + // (Boolean) Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + // Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + UploadImage *bool `json:"uploadImage,omitempty" tf:"upload_image,omitempty"` } type PushoverParameters struct { @@ -1083,12 +1433,78 @@ type PushoverParameters struct { // +kubebuilder:validation:Optional Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (Boolean) Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + // Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. + // +kubebuilder:validation:Optional + UploadImage *bool `json:"uploadImage,omitempty" tf:"upload_image,omitempty"` + // (String, Sensitive) The Pushover user key. // The Pushover user key. // +kubebuilder:validation:Required UserKeySecretRef v1.SecretKeySelector `json:"userKeySecretRef" tf:"-"` } +type RespondersInitParameters struct { + + // (String) The ID of this resource. + // ID of the responder. Must be specified if name and username are empty. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the contact point. + // Name of the responder. Must be specified if username and id are empty. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + // Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // User name of the responder. Must be specified if name and id are empty. + Username *string `json:"username,omitempty" tf:"username,omitempty"` +} + +type RespondersObservation struct { + + // (String) The ID of this resource. + // ID of the responder. Must be specified if name and username are empty. + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the contact point. + // Name of the responder. Must be specified if username and id are empty. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + // Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // User name of the responder. Must be specified if name and id are empty. + Username *string `json:"username,omitempty" tf:"username,omitempty"` +} + +type RespondersParameters struct { + + // (String) The ID of this resource. + // ID of the responder. Must be specified if name and username are empty. + // +kubebuilder:validation:Optional + ID *string `json:"id,omitempty" tf:"id,omitempty"` + + // (String) The name of the contact point. + // Name of the responder. Must be specified if username and id are empty. + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + // Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` + + // (String) The user name to use when making a call to the Kafka REST Proxy + // User name of the responder. Must be specified if name and id are empty. + // +kubebuilder:validation:Optional + Username *string `json:"username,omitempty" tf:"username,omitempty"` +} + type SensugoInitParameters struct { // (String) The SensuGo check to which the event should be routed. @@ -1245,7 +1661,7 @@ type SlackInitParameters struct { // Templated title of the message. Title *string `json:"title,omitempty" tf:"title,omitempty"` - // (String) Username for the bot to use. + // (String) The user name to use when making a call to the Kafka REST Proxy // Username for the bot to use. Username *string `json:"username,omitempty" tf:"username,omitempty"` } @@ -1296,7 +1712,7 @@ type SlackObservation struct { // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` - // (String) Username for the bot to use. + // (String) The user name to use when making a call to the Kafka REST Proxy // Username for the bot to use. Username *string `json:"username,omitempty" tf:"username,omitempty"` } @@ -1358,7 +1774,7 @@ type SlackParameters struct { // +kubebuilder:validation:Optional Title *string `json:"title,omitempty" tf:"title,omitempty"` - // (String, Sensitive) A Slack API token,for sending messages directly without the webhook method. + // (String, Sensitive) The bearer token used to authorize the client. // A Slack API token,for sending messages directly without the webhook method. // +kubebuilder:validation:Optional TokenSecretRef *v1.SecretKeySelector `json:"tokenSecretRef,omitempty" tf:"-"` @@ -1368,7 +1784,7 @@ type SlackParameters struct { // +kubebuilder:validation:Optional URLSecretRef *v1.SecretKeySelector `json:"urlSecretRef,omitempty" tf:"-"` - // (String) Username for the bot to use. + // (String) The user name to use when making a call to the Kafka REST Proxy // Username for the bot to use. // +kubebuilder:validation:Optional Username *string `json:"username,omitempty" tf:"username,omitempty"` @@ -1455,13 +1871,29 @@ type TelegramInitParameters struct { // The chat ID to send messages to. ChatID *string `json:"chatId,omitempty" tf:"chat_id,omitempty"` + // (Boolean) When set users will receive a notification with no sound. + // When set users will receive a notification with no sound. + DisableNotifications *bool `json:"disableNotifications,omitempty" tf:"disable_notifications,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + // (Boolean) When set it disables link previews for links in the message. + // When set it disables link previews for links in the message. + DisableWebPagePreview *bool `json:"disableWebPagePreview,omitempty" tf:"disable_web_page_preview,omitempty"` + // (String) The templated content of the message. // The templated content of the message. Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + // Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + ParseMode *string `json:"parseMode,omitempty" tf:"parse_mode,omitempty"` + + // (Boolean) When set it protects the contents of the message from forwarding and saving. + // When set it protects the contents of the message from forwarding and saving. + ProtectContent *bool `json:"protectContent,omitempty" tf:"protect_content,omitempty"` } type TelegramObservation struct { @@ -1470,14 +1902,30 @@ type TelegramObservation struct { // The chat ID to send messages to. ChatID *string `json:"chatId,omitempty" tf:"chat_id,omitempty"` + // (Boolean) When set users will receive a notification with no sound. + // When set users will receive a notification with no sound. + DisableNotifications *bool `json:"disableNotifications,omitempty" tf:"disable_notifications,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + // (Boolean) When set it disables link previews for links in the message. + // When set it disables link previews for links in the message. + DisableWebPagePreview *bool `json:"disableWebPagePreview,omitempty" tf:"disable_web_page_preview,omitempty"` + // (String) The templated content of the message. // The templated content of the message. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + // Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + ParseMode *string `json:"parseMode,omitempty" tf:"parse_mode,omitempty"` + + // (Boolean) When set it protects the contents of the message from forwarding and saving. + // When set it protects the contents of the message from forwarding and saving. + ProtectContent *bool `json:"protectContent,omitempty" tf:"protect_content,omitempty"` + // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` @@ -1490,22 +1938,42 @@ type TelegramParameters struct { // +kubebuilder:validation:Optional ChatID *string `json:"chatId" tf:"chat_id,omitempty"` + // (Boolean) When set users will receive a notification with no sound. + // When set users will receive a notification with no sound. + // +kubebuilder:validation:Optional + DisableNotifications *bool `json:"disableNotifications,omitempty" tf:"disable_notifications,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. // +kubebuilder:validation:Optional DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + // (Boolean) When set it disables link previews for links in the message. + // When set it disables link previews for links in the message. + // +kubebuilder:validation:Optional + DisableWebPagePreview *bool `json:"disableWebPagePreview,omitempty" tf:"disable_web_page_preview,omitempty"` + // (String) The templated content of the message. // The templated content of the message. // +kubebuilder:validation:Optional Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + // Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default. + // +kubebuilder:validation:Optional + ParseMode *string `json:"parseMode,omitempty" tf:"parse_mode,omitempty"` + + // (Boolean) When set it protects the contents of the message from forwarding and saving. + // When set it protects the contents of the message from forwarding and saving. + // +kubebuilder:validation:Optional + ProtectContent *bool `json:"protectContent,omitempty" tf:"protect_content,omitempty"` + // (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. // Additional custom properties to attach to the notifier. Defaults to `map[]`. // +kubebuilder:validation:Optional SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` - // (String, Sensitive) A Slack API token,for sending messages directly without the webhook method. + // (String, Sensitive) The bearer token used to authorize the client. // The Telegram bot token. // +kubebuilder:validation:Required TokenSecretRef v1.SecretKeySelector `json:"tokenSecretRef" tf:"-"` @@ -1513,6 +1981,10 @@ type TelegramParameters struct { type ThreemaInitParameters struct { + // (String) The templated description of the Kafka message. + // The templated description of the message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -1524,10 +1996,18 @@ type ThreemaInitParameters struct { // (String) The ID of the recipient of the message. // The ID of the recipient of the message. RecipientID *string `json:"recipientId,omitempty" tf:"recipient_id,omitempty"` + + // (String) The templated title of the message. + // The templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` } type ThreemaObservation struct { + // (String) The templated description of the Kafka message. + // The templated description of the message. + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -1540,6 +2020,10 @@ type ThreemaObservation struct { // The ID of the recipient of the message. RecipientID *string `json:"recipientId,omitempty" tf:"recipient_id,omitempty"` + // (String) The templated title of the message. + // The templated title of the message. + Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` @@ -1552,10 +2036,10 @@ type ThreemaParameters struct { // +kubebuilder:validation:Required APISecretSecretRef v1.SecretKeySelector `json:"apiSecretSecretRef" tf:"-"` - // level description to use for the alert. + // (String) The templated description of the Kafka message. // The templated description of the message. - // +kubebuilder:validation:Required - DescriptionSecretRef v1.SecretKeySelector `json:"descriptionSecretRef" tf:"-"` + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. @@ -1579,13 +2063,13 @@ type ThreemaParameters struct { // (String) The templated title of the message. // The templated title of the message. - // +kubebuilder:validation:Required - TitleSecretRef v1.SecretKeySelector `json:"titleSecretRef" tf:"-"` + // +kubebuilder:validation:Optional + Title *string `json:"title,omitempty" tf:"title,omitempty"` } type VictoropsInitParameters struct { - // level description to use for the alert. + // (String) The templated description of the Kafka message. // Templated description of the message. Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -1608,7 +2092,7 @@ type VictoropsInitParameters struct { type VictoropsObservation struct { - // level description to use for the alert. + // (String) The templated description of the Kafka message. // Templated description of the message. Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -1635,7 +2119,7 @@ type VictoropsObservation struct { type VictoropsParameters struct { - // level description to use for the alert. + // (String) The templated description of the Kafka message. // Templated description of the message. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` @@ -1666,6 +2150,81 @@ type VictoropsParameters struct { URL *string `json:"url" tf:"url,omitempty"` } +type WebexInitParameters struct { + + // (String) The URL to send webhook requests to. + // The URL to send webhook requests to. + APIURL *string `json:"apiUrl,omitempty" tf:"api_url,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The templated content of the message. + // The templated title of the message to send. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) ID of the Webex Teams room where to send the messages. + // ID of the Webex Teams room where to send the messages. + RoomID *string `json:"roomId,omitempty" tf:"room_id,omitempty"` +} + +type WebexObservation struct { + + // (String) The URL to send webhook requests to. + // The URL to send webhook requests to. + APIURL *string `json:"apiUrl,omitempty" tf:"api_url,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The templated content of the message. + // The templated title of the message to send. + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) ID of the Webex Teams room where to send the messages. + // ID of the Webex Teams room where to send the messages. + RoomID *string `json:"roomId,omitempty" tf:"room_id,omitempty"` + + // (String) The UID of the contact point. + // The UID of the contact point. + UID *string `json:"uid,omitempty" tf:"uid,omitempty"` +} + +type WebexParameters struct { + + // (String) The URL to send webhook requests to. + // The URL to send webhook requests to. + // +kubebuilder:validation:Optional + APIURL *string `json:"apiUrl,omitempty" tf:"api_url,omitempty"` + + // (Boolean) Whether to disable sending resolve messages. Defaults to false. + // Whether to disable sending resolve messages. Defaults to `false`. + // +kubebuilder:validation:Optional + DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` + + // (String) The templated content of the message. + // The templated title of the message to send. + // +kubebuilder:validation:Optional + Message *string `json:"message,omitempty" tf:"message,omitempty"` + + // (String) ID of the Webex Teams room where to send the messages. + // ID of the Webex Teams room where to send the messages. + // +kubebuilder:validation:Optional + RoomID *string `json:"roomId,omitempty" tf:"room_id,omitempty"` + + // (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. + // Additional custom properties to attach to the notifier. Defaults to `map[]`. + // +kubebuilder:validation:Optional + SettingsSecretRef *v1.SecretReference `json:"settingsSecretRef,omitempty" tf:"-"` + + // (String, Sensitive) The bearer token used to authorize the client. + // The bearer token used to authorize the client. + // +kubebuilder:validation:Optional + TokenSecretRef *v1.SecretKeySelector `json:"tokenSecretRef,omitempty" tf:"-"` +} + type WebhookInitParameters struct { // attaches an auth header with this name. Do not use in conjunction with basic auth parameters. @@ -1800,6 +2359,14 @@ type WebhookParameters struct { type WecomInitParameters struct { + // (String) Agent ID added to the request payload when using APIAPP. + // Agent ID added to the request payload when using APIAPP. + AgentID *string `json:"agentId,omitempty" tf:"agent_id,omitempty"` + + // (String) Corp ID used to get token when using APIAPP. + // Corp ID used to get token when using APIAPP. + CorpID *string `json:"corpId,omitempty" tf:"corp_id,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -1808,13 +2375,29 @@ type WecomInitParameters struct { // The templated content of the message to send. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The type of them message. Supported: markdown, text. Default: text. + // The type of them message. Supported: markdown, text. Default: text. + MsgType *string `json:"msgType,omitempty" tf:"msg_type,omitempty"` + // (String) The templated title of the message. // The templated title of the message to send. Title *string `json:"title,omitempty" tf:"title,omitempty"` + + // (String) The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + // The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + ToUser *string `json:"toUser,omitempty" tf:"to_user,omitempty"` } type WecomObservation struct { + // (String) Agent ID added to the request payload when using APIAPP. + // Agent ID added to the request payload when using APIAPP. + AgentID *string `json:"agentId,omitempty" tf:"agent_id,omitempty"` + + // (String) Corp ID used to get token when using APIAPP. + // Corp ID used to get token when using APIAPP. + CorpID *string `json:"corpId,omitempty" tf:"corp_id,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. DisableResolveMessage *bool `json:"disableResolveMessage,omitempty" tf:"disable_resolve_message,omitempty"` @@ -1823,10 +2406,18 @@ type WecomObservation struct { // The templated content of the message to send. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The type of them message. Supported: markdown, text. Default: text. + // The type of them message. Supported: markdown, text. Default: text. + MsgType *string `json:"msgType,omitempty" tf:"msg_type,omitempty"` + // (String) The templated title of the message. // The templated title of the message to send. Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + // The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + ToUser *string `json:"toUser,omitempty" tf:"to_user,omitempty"` + // (String) The UID of the contact point. // The UID of the contact point. UID *string `json:"uid,omitempty" tf:"uid,omitempty"` @@ -1834,6 +2425,16 @@ type WecomObservation struct { type WecomParameters struct { + // (String) Agent ID added to the request payload when using APIAPP. + // Agent ID added to the request payload when using APIAPP. + // +kubebuilder:validation:Optional + AgentID *string `json:"agentId,omitempty" tf:"agent_id,omitempty"` + + // (String) Corp ID used to get token when using APIAPP. + // Corp ID used to get token when using APIAPP. + // +kubebuilder:validation:Optional + CorpID *string `json:"corpId,omitempty" tf:"corp_id,omitempty"` + // (Boolean) Whether to disable sending resolve messages. Defaults to false. // Whether to disable sending resolve messages. Defaults to `false`. // +kubebuilder:validation:Optional @@ -1844,6 +2445,16 @@ type WecomParameters struct { // +kubebuilder:validation:Optional Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (String) The type of them message. Supported: markdown, text. Default: text. + // The type of them message. Supported: markdown, text. Default: text. + // +kubebuilder:validation:Optional + MsgType *string `json:"msgType,omitempty" tf:"msg_type,omitempty"` + + // (String, Sensitive) The secret key required to obtain access token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps to create APIAPP. + // The secret key required to obtain access token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps to create APIAPP. + // +kubebuilder:validation:Optional + SecretSecretRef *v1.SecretKeySelector `json:"secretSecretRef,omitempty" tf:"-"` + // (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. // Additional custom properties to attach to the notifier. Defaults to `map[]`. // +kubebuilder:validation:Optional @@ -1854,10 +2465,15 @@ type WecomParameters struct { // +kubebuilder:validation:Optional Title *string `json:"title,omitempty" tf:"title,omitempty"` + // (String) The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + // The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all. + // +kubebuilder:validation:Optional + ToUser *string `json:"toUser,omitempty" tf:"to_user,omitempty"` + // (String) The URL of the Alertmanager instance. - // The WeCom webhook URL. - // +kubebuilder:validation:Required - URLSecretRef v1.SecretKeySelector `json:"urlSecretRef" tf:"-"` + // The WeCom webhook URL. Required if using GroupRobot. + // +kubebuilder:validation:Optional + URLSecretRef *v1.SecretKeySelector `json:"urlSecretRef,omitempty" tf:"-"` } // ContactPointSpec defines the desired state of ContactPoint diff --git a/apis/alerting/v1alpha1/zz_generated.deepcopy.go b/apis/alerting/v1alpha1/zz_generated.deepcopy.go index 85b9ce2..0dfe5a0 100644 --- a/apis/alerting/v1alpha1/zz_generated.deepcopy.go +++ b/apis/alerting/v1alpha1/zz_generated.deepcopy.go @@ -190,11 +190,25 @@ func (in *ContactPointInitParameters) DeepCopyInto(out *ContactPointInitParamete (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Line != nil { + in, out := &in.Line, &out.Line + *out = make([]LineInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) **out = **in } + if in.Oncall != nil { + in, out := &in.Oncall, &out.Oncall + *out = make([]OncallInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Opsgenie != nil { in, out := &in.Opsgenie, &out.Opsgenie *out = make([]OpsgenieInitParameters, len(*in)) @@ -258,6 +272,13 @@ func (in *ContactPointInitParameters) DeepCopyInto(out *ContactPointInitParamete (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Webex != nil { + in, out := &in.Webex, &out.Webex + *out = make([]WebexInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Webhook != nil { in, out := &in.Webhook, &out.Webhook *out = make([]WebhookInitParameters, len(*in)) @@ -366,11 +387,25 @@ func (in *ContactPointObservation) DeepCopyInto(out *ContactPointObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Line != nil { + in, out := &in.Line, &out.Line + *out = make([]LineObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) **out = **in } + if in.Oncall != nil { + in, out := &in.Oncall, &out.Oncall + *out = make([]OncallObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Opsgenie != nil { in, out := &in.Opsgenie, &out.Opsgenie *out = make([]OpsgenieObservation, len(*in)) @@ -434,6 +469,13 @@ func (in *ContactPointObservation) DeepCopyInto(out *ContactPointObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Webex != nil { + in, out := &in.Webex, &out.Webex + *out = make([]WebexObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Webhook != nil { in, out := &in.Webhook, &out.Webhook *out = make([]WebhookObservation, len(*in)) @@ -505,11 +547,25 @@ func (in *ContactPointParameters) DeepCopyInto(out *ContactPointParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Line != nil { + in, out := &in.Line, &out.Line + *out = make([]LineParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) **out = **in } + if in.Oncall != nil { + in, out := &in.Oncall, &out.Oncall + *out = make([]OncallParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Opsgenie != nil { in, out := &in.Opsgenie, &out.Opsgenie *out = make([]OpsgenieParameters, len(*in)) @@ -573,6 +629,13 @@ func (in *ContactPointParameters) DeepCopyInto(out *ContactPointParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Webex != nil { + in, out := &in.Webex, &out.Webex + *out = make([]WebexParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Webhook != nil { in, out := &in.Webhook, &out.Webhook *out = make([]WebhookParameters, len(*in)) @@ -908,6 +971,11 @@ func (in *DiscordInitParameters) DeepCopyInto(out *DiscordInitParameters) { *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } if in.UseDiscordUsername != nil { in, out := &in.UseDiscordUsername, &out.UseDiscordUsername *out = new(bool) @@ -943,6 +1011,11 @@ func (in *DiscordObservation) DeepCopyInto(out *DiscordObservation) { *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } if in.UID != nil { in, out := &in.UID, &out.UID *out = new(string) @@ -988,6 +1061,11 @@ func (in *DiscordParameters) DeepCopyInto(out *DiscordParameters) { *out = new(v1.SecretReference) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } out.URLSecretRef = in.URLSecretRef if in.UseDiscordUsername != nil { in, out := &in.UseDiscordUsername, &out.UseDiscordUsername @@ -1167,6 +1245,11 @@ func (in *GooglechatInitParameters) DeepCopyInto(out *GooglechatInitParameters) *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GooglechatInitParameters. @@ -1192,6 +1275,11 @@ func (in *GooglechatObservation) DeepCopyInto(out *GooglechatObservation) { *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } if in.UID != nil { in, out := &in.UID, &out.UID *out = new(string) @@ -1227,6 +1315,11 @@ func (in *GooglechatParameters) DeepCopyInto(out *GooglechatParameters) { *out = new(v1.SecretReference) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } out.URLSecretRef = in.URLSecretRef } @@ -1254,6 +1347,11 @@ func (in *IntervalsInitParameters) DeepCopyInto(out *IntervalsInitParameters) { } } } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } if in.Months != nil { in, out := &in.Months, &out.Months *out = make([]*string, len(*in)) @@ -1320,6 +1418,11 @@ func (in *IntervalsObservation) DeepCopyInto(out *IntervalsObservation) { } } } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } if in.Months != nil { in, out := &in.Months, &out.Months *out = make([]*string, len(*in)) @@ -1386,6 +1489,11 @@ func (in *IntervalsParameters) DeepCopyInto(out *IntervalsParameters) { } } } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } if in.Months != nil { in, out := &in.Months, &out.Months *out = make([]*string, len(*in)) @@ -1441,6 +1549,26 @@ func (in *IntervalsParameters) DeepCopy() *IntervalsParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KafkaInitParameters) DeepCopyInto(out *KafkaInitParameters) { *out = *in + if in.APIVersion != nil { + in, out := &in.APIVersion, &out.APIVersion + *out = new(string) + **out = **in + } + if in.ClusterID != nil { + in, out := &in.ClusterID, &out.ClusterID + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Details != nil { + in, out := &in.Details, &out.Details + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -1451,6 +1579,11 @@ func (in *KafkaInitParameters) DeepCopyInto(out *KafkaInitParameters) { *out = new(string) **out = **in } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaInitParameters. @@ -1466,6 +1599,26 @@ func (in *KafkaInitParameters) DeepCopy() *KafkaInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KafkaObservation) DeepCopyInto(out *KafkaObservation) { *out = *in + if in.APIVersion != nil { + in, out := &in.APIVersion, &out.APIVersion + *out = new(string) + **out = **in + } + if in.ClusterID != nil { + in, out := &in.ClusterID, &out.ClusterID + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Details != nil { + in, out := &in.Details, &out.Details + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -1481,6 +1634,11 @@ func (in *KafkaObservation) DeepCopyInto(out *KafkaObservation) { *out = new(string) **out = **in } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaObservation. @@ -1496,11 +1654,36 @@ func (in *KafkaObservation) DeepCopy() *KafkaObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KafkaParameters) DeepCopyInto(out *KafkaParameters) { *out = *in + if in.APIVersion != nil { + in, out := &in.APIVersion, &out.APIVersion + *out = new(string) + **out = **in + } + if in.ClusterID != nil { + in, out := &in.ClusterID, &out.ClusterID + *out = new(string) + **out = **in + } + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.Details != nil { + in, out := &in.Details, &out.Details + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) **out = **in } + if in.PasswordSecretRef != nil { + in, out := &in.PasswordSecretRef, &out.PasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } out.RestProxyURLSecretRef = in.RestProxyURLSecretRef if in.SettingsSecretRef != nil { in, out := &in.SettingsSecretRef, &out.SettingsSecretRef @@ -1512,6 +1695,11 @@ func (in *KafkaParameters) DeepCopyInto(out *KafkaParameters) { *out = new(string) **out = **in } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KafkaParameters. @@ -1524,6 +1712,107 @@ func (in *KafkaParameters) DeepCopy() *KafkaParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LineInitParameters) DeepCopyInto(out *LineInitParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LineInitParameters. +func (in *LineInitParameters) DeepCopy() *LineInitParameters { + if in == nil { + return nil + } + out := new(LineInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LineObservation) DeepCopyInto(out *LineObservation) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LineObservation. +func (in *LineObservation) DeepCopy() *LineObservation { + if in == nil { + return nil + } + out := new(LineObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LineParameters) DeepCopyInto(out *LineParameters) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.SettingsSecretRef != nil { + in, out := &in.SettingsSecretRef, &out.SettingsSecretRef + *out = new(v1.SecretReference) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } + out.TokenSecretRef = in.TokenSecretRef +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LineParameters. +func (in *LineParameters) DeepCopy() *LineParameters { + if in == nil { + return nil + } + out := new(LineParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MatcherInitParameters) DeepCopyInto(out *MatcherInitParameters) { *out = *in @@ -1711,6 +2000,11 @@ func (in *MessageTemplateObservation) DeepCopyInto(out *MessageTemplateObservati *out = new(string) **out = **in } + if in.OrgID != nil { + in, out := &in.OrgID, &out.OrgID + *out = new(string) + **out = **in + } if in.Template != nil { in, out := &in.Template, &out.Template *out = new(string) @@ -1736,6 +2030,21 @@ func (in *MessageTemplateParameters) DeepCopyInto(out *MessageTemplateParameters *out = new(string) **out = **in } + if in.OrgID != nil { + in, out := &in.OrgID, &out.OrgID + *out = new(string) + **out = **in + } + if in.OrganizationRef != nil { + in, out := &in.OrganizationRef, &out.OrganizationRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.OrganizationSelector != nil { + in, out := &in.OrganizationSelector, &out.OrganizationSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.Template != nil { in, out := &in.Template, &out.Template *out = new(string) @@ -2232,13 +2541,198 @@ func (in *NotificationPolicyStatus) DeepCopy() *NotificationPolicyStatus { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OpsgenieInitParameters) DeepCopyInto(out *OpsgenieInitParameters) { +func (in *OncallInitParameters) DeepCopyInto(out *OncallInitParameters) { *out = *in - if in.AutoClose != nil { - in, out := &in.AutoClose, &out.AutoClose - *out = new(bool) - **out = **in - } + if in.AuthorizationScheme != nil { + in, out := &in.AuthorizationScheme, &out.AuthorizationScheme + *out = new(string) + **out = **in + } + if in.BasicAuthUser != nil { + in, out := &in.BasicAuthUser, &out.BasicAuthUser + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.MaxAlerts != nil { + in, out := &in.MaxAlerts, &out.MaxAlerts + *out = new(float64) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OncallInitParameters. +func (in *OncallInitParameters) DeepCopy() *OncallInitParameters { + if in == nil { + return nil + } + out := new(OncallInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OncallObservation) DeepCopyInto(out *OncallObservation) { + *out = *in + if in.AuthorizationScheme != nil { + in, out := &in.AuthorizationScheme, &out.AuthorizationScheme + *out = new(string) + **out = **in + } + if in.BasicAuthUser != nil { + in, out := &in.BasicAuthUser, &out.BasicAuthUser + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.MaxAlerts != nil { + in, out := &in.MaxAlerts, &out.MaxAlerts + *out = new(float64) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OncallObservation. +func (in *OncallObservation) DeepCopy() *OncallObservation { + if in == nil { + return nil + } + out := new(OncallObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OncallParameters) DeepCopyInto(out *OncallParameters) { + *out = *in + if in.AuthorizationCredentialsSecretRef != nil { + in, out := &in.AuthorizationCredentialsSecretRef, &out.AuthorizationCredentialsSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.AuthorizationScheme != nil { + in, out := &in.AuthorizationScheme, &out.AuthorizationScheme + *out = new(string) + **out = **in + } + if in.BasicAuthPasswordSecretRef != nil { + in, out := &in.BasicAuthPasswordSecretRef, &out.BasicAuthPasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } + if in.BasicAuthUser != nil { + in, out := &in.BasicAuthUser, &out.BasicAuthUser + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.MaxAlerts != nil { + in, out := &in.MaxAlerts, &out.MaxAlerts + *out = new(float64) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.SettingsSecretRef != nil { + in, out := &in.SettingsSecretRef, &out.SettingsSecretRef + *out = new(v1.SecretReference) + **out = **in + } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OncallParameters. +func (in *OncallParameters) DeepCopy() *OncallParameters { + if in == nil { + return nil + } + out := new(OncallParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OpsgenieInitParameters) DeepCopyInto(out *OpsgenieInitParameters) { + *out = *in + if in.AutoClose != nil { + in, out := &in.AutoClose, &out.AutoClose + *out = new(bool) + **out = **in + } if in.Description != nil { in, out := &in.Description, &out.Description *out = new(string) @@ -2259,6 +2753,13 @@ func (in *OpsgenieInitParameters) DeepCopyInto(out *OpsgenieInitParameters) { *out = new(bool) **out = **in } + if in.Responders != nil { + in, out := &in.Responders, &out.Responders + *out = make([]RespondersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.SendTagsAs != nil { in, out := &in.SendTagsAs, &out.SendTagsAs *out = new(string) @@ -2309,6 +2810,13 @@ func (in *OpsgenieObservation) DeepCopyInto(out *OpsgenieObservation) { *out = new(bool) **out = **in } + if in.Responders != nil { + in, out := &in.Responders, &out.Responders + *out = make([]RespondersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.SendTagsAs != nil { in, out := &in.SendTagsAs, &out.SendTagsAs *out = new(string) @@ -2365,6 +2873,13 @@ func (in *OpsgenieParameters) DeepCopyInto(out *OpsgenieParameters) { *out = new(bool) **out = **in } + if in.Responders != nil { + in, out := &in.Responders, &out.Responders + *out = make([]RespondersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.SendTagsAs != nil { in, out := &in.SendTagsAs, &out.SendTagsAs *out = new(string) @@ -3845,6 +4360,11 @@ func (in *PushoverInitParameters) DeepCopyInto(out *PushoverInitParameters) { *out = new(string) **out = **in } + if in.UploadImage != nil { + in, out := &in.UploadImage, &out.UploadImage + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PushoverInitParameters. @@ -3915,6 +4435,11 @@ func (in *PushoverObservation) DeepCopyInto(out *PushoverObservation) { *out = new(string) **out = **in } + if in.UploadImage != nil { + in, out := &in.UploadImage, &out.UploadImage + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PushoverObservation. @@ -3986,6 +4511,11 @@ func (in *PushoverParameters) DeepCopyInto(out *PushoverParameters) { *out = new(string) **out = **in } + if in.UploadImage != nil { + in, out := &in.UploadImage, &out.UploadImage + *out = new(bool) + **out = **in + } out.UserKeySecretRef = in.UserKeySecretRef } @@ -4074,6 +4604,111 @@ func (in *RelativeTimeRangeParameters) DeepCopy() *RelativeTimeRangeParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RespondersInitParameters) DeepCopyInto(out *RespondersInitParameters) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RespondersInitParameters. +func (in *RespondersInitParameters) DeepCopy() *RespondersInitParameters { + if in == nil { + return nil + } + out := new(RespondersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RespondersObservation) DeepCopyInto(out *RespondersObservation) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RespondersObservation. +func (in *RespondersObservation) DeepCopy() *RespondersObservation { + if in == nil { + return nil + } + out := new(RespondersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RespondersParameters) DeepCopyInto(out *RespondersParameters) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Username != nil { + in, out := &in.Username, &out.Username + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RespondersParameters. +func (in *RespondersParameters) DeepCopy() *RespondersParameters { + if in == nil { + return nil + } + out := new(RespondersParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RuleGroup) DeepCopyInto(out *RuleGroup) { *out = *in @@ -4104,6 +4739,11 @@ func (in *RuleGroup) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RuleGroupInitParameters) DeepCopyInto(out *RuleGroupInitParameters) { *out = *in + if in.DisableProvenance != nil { + in, out := &in.DisableProvenance, &out.DisableProvenance + *out = new(bool) + **out = **in + } if in.IntervalSeconds != nil { in, out := &in.IntervalSeconds, &out.IntervalSeconds *out = new(float64) @@ -4168,6 +4808,11 @@ func (in *RuleGroupList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RuleGroupObservation) DeepCopyInto(out *RuleGroupObservation) { *out = *in + if in.DisableProvenance != nil { + in, out := &in.DisableProvenance, &out.DisableProvenance + *out = new(bool) + **out = **in + } if in.FolderUID != nil { in, out := &in.FolderUID, &out.FolderUID *out = new(string) @@ -4215,6 +4860,11 @@ func (in *RuleGroupObservation) DeepCopy() *RuleGroupObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RuleGroupParameters) DeepCopyInto(out *RuleGroupParameters) { *out = *in + if in.DisableProvenance != nil { + in, out := &in.DisableProvenance, &out.DisableProvenance + *out = new(bool) + **out = **in + } if in.FolderRef != nil { in, out := &in.FolderRef, &out.FolderRef *out = new(v1.Reference) @@ -5081,16 +5731,36 @@ func (in *TelegramInitParameters) DeepCopyInto(out *TelegramInitParameters) { *out = new(string) **out = **in } + if in.DisableNotifications != nil { + in, out := &in.DisableNotifications, &out.DisableNotifications + *out = new(bool) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) **out = **in } + if in.DisableWebPagePreview != nil { + in, out := &in.DisableWebPagePreview, &out.DisableWebPagePreview + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) **out = **in } + if in.ParseMode != nil { + in, out := &in.ParseMode, &out.ParseMode + *out = new(string) + **out = **in + } + if in.ProtectContent != nil { + in, out := &in.ProtectContent, &out.ProtectContent + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TelegramInitParameters. @@ -5111,16 +5781,36 @@ func (in *TelegramObservation) DeepCopyInto(out *TelegramObservation) { *out = new(string) **out = **in } + if in.DisableNotifications != nil { + in, out := &in.DisableNotifications, &out.DisableNotifications + *out = new(bool) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) **out = **in } + if in.DisableWebPagePreview != nil { + in, out := &in.DisableWebPagePreview, &out.DisableWebPagePreview + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) **out = **in } + if in.ParseMode != nil { + in, out := &in.ParseMode, &out.ParseMode + *out = new(string) + **out = **in + } + if in.ProtectContent != nil { + in, out := &in.ProtectContent, &out.ProtectContent + *out = new(bool) + **out = **in + } if in.UID != nil { in, out := &in.UID, &out.UID *out = new(string) @@ -5146,16 +5836,36 @@ func (in *TelegramParameters) DeepCopyInto(out *TelegramParameters) { *out = new(string) **out = **in } + if in.DisableNotifications != nil { + in, out := &in.DisableNotifications, &out.DisableNotifications + *out = new(bool) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) **out = **in } + if in.DisableWebPagePreview != nil { + in, out := &in.DisableWebPagePreview, &out.DisableWebPagePreview + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) **out = **in } + if in.ParseMode != nil { + in, out := &in.ParseMode, &out.ParseMode + *out = new(string) + **out = **in + } + if in.ProtectContent != nil { + in, out := &in.ProtectContent, &out.ProtectContent + *out = new(bool) + **out = **in + } if in.SettingsSecretRef != nil { in, out := &in.SettingsSecretRef, &out.SettingsSecretRef *out = new(v1.SecretReference) @@ -5177,6 +5887,11 @@ func (in *TelegramParameters) DeepCopy() *TelegramParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ThreemaInitParameters) DeepCopyInto(out *ThreemaInitParameters) { *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5192,6 +5907,11 @@ func (in *ThreemaInitParameters) DeepCopyInto(out *ThreemaInitParameters) { *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThreemaInitParameters. @@ -5207,6 +5927,11 @@ func (in *ThreemaInitParameters) DeepCopy() *ThreemaInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ThreemaObservation) DeepCopyInto(out *ThreemaObservation) { *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5222,6 +5947,11 @@ func (in *ThreemaObservation) DeepCopyInto(out *ThreemaObservation) { *out = new(string) **out = **in } + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } if in.UID != nil { in, out := &in.UID, &out.UID *out = new(string) @@ -5243,7 +5973,11 @@ func (in *ThreemaObservation) DeepCopy() *ThreemaObservation { func (in *ThreemaParameters) DeepCopyInto(out *ThreemaParameters) { *out = *in out.APISecretSecretRef = in.APISecretSecretRef - out.DescriptionSecretRef = in.DescriptionSecretRef + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5264,7 +5998,11 @@ func (in *ThreemaParameters) DeepCopyInto(out *ThreemaParameters) { *out = new(v1.SecretReference) **out = **in } - out.TitleSecretRef = in.TitleSecretRef + if in.Title != nil { + in, out := &in.Title, &out.Title + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThreemaParameters. @@ -5482,6 +6220,126 @@ func (in *VictoropsParameters) DeepCopy() *VictoropsParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebexInitParameters) DeepCopyInto(out *WebexInitParameters) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.RoomID != nil { + in, out := &in.RoomID, &out.RoomID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebexInitParameters. +func (in *WebexInitParameters) DeepCopy() *WebexInitParameters { + if in == nil { + return nil + } + out := new(WebexInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebexObservation) DeepCopyInto(out *WebexObservation) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.RoomID != nil { + in, out := &in.RoomID, &out.RoomID + *out = new(string) + **out = **in + } + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebexObservation. +func (in *WebexObservation) DeepCopy() *WebexObservation { + if in == nil { + return nil + } + out := new(WebexObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WebexParameters) DeepCopyInto(out *WebexParameters) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(string) + **out = **in + } + if in.DisableResolveMessage != nil { + in, out := &in.DisableResolveMessage, &out.DisableResolveMessage + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.RoomID != nil { + in, out := &in.RoomID, &out.RoomID + *out = new(string) + **out = **in + } + if in.SettingsSecretRef != nil { + in, out := &in.SettingsSecretRef, &out.SettingsSecretRef + *out = new(v1.SecretReference) + **out = **in + } + if in.TokenSecretRef != nil { + in, out := &in.TokenSecretRef, &out.TokenSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebexParameters. +func (in *WebexParameters) DeepCopy() *WebexParameters { + if in == nil { + return nil + } + out := new(WebexParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WebhookInitParameters) DeepCopyInto(out *WebhookInitParameters) { *out = *in @@ -5670,6 +6528,16 @@ func (in *WebhookParameters) DeepCopy() *WebhookParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WecomInitParameters) DeepCopyInto(out *WecomInitParameters) { *out = *in + if in.AgentID != nil { + in, out := &in.AgentID, &out.AgentID + *out = new(string) + **out = **in + } + if in.CorpID != nil { + in, out := &in.CorpID, &out.CorpID + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5680,11 +6548,21 @@ func (in *WecomInitParameters) DeepCopyInto(out *WecomInitParameters) { *out = new(string) **out = **in } + if in.MsgType != nil { + in, out := &in.MsgType, &out.MsgType + *out = new(string) + **out = **in + } if in.Title != nil { in, out := &in.Title, &out.Title *out = new(string) **out = **in } + if in.ToUser != nil { + in, out := &in.ToUser, &out.ToUser + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WecomInitParameters. @@ -5700,6 +6578,16 @@ func (in *WecomInitParameters) DeepCopy() *WecomInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WecomObservation) DeepCopyInto(out *WecomObservation) { *out = *in + if in.AgentID != nil { + in, out := &in.AgentID, &out.AgentID + *out = new(string) + **out = **in + } + if in.CorpID != nil { + in, out := &in.CorpID, &out.CorpID + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5710,11 +6598,21 @@ func (in *WecomObservation) DeepCopyInto(out *WecomObservation) { *out = new(string) **out = **in } + if in.MsgType != nil { + in, out := &in.MsgType, &out.MsgType + *out = new(string) + **out = **in + } if in.Title != nil { in, out := &in.Title, &out.Title *out = new(string) **out = **in } + if in.ToUser != nil { + in, out := &in.ToUser, &out.ToUser + *out = new(string) + **out = **in + } if in.UID != nil { in, out := &in.UID, &out.UID *out = new(string) @@ -5735,6 +6633,16 @@ func (in *WecomObservation) DeepCopy() *WecomObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WecomParameters) DeepCopyInto(out *WecomParameters) { *out = *in + if in.AgentID != nil { + in, out := &in.AgentID, &out.AgentID + *out = new(string) + **out = **in + } + if in.CorpID != nil { + in, out := &in.CorpID, &out.CorpID + *out = new(string) + **out = **in + } if in.DisableResolveMessage != nil { in, out := &in.DisableResolveMessage, &out.DisableResolveMessage *out = new(bool) @@ -5745,6 +6653,16 @@ func (in *WecomParameters) DeepCopyInto(out *WecomParameters) { *out = new(string) **out = **in } + if in.MsgType != nil { + in, out := &in.MsgType, &out.MsgType + *out = new(string) + **out = **in + } + if in.SecretSecretRef != nil { + in, out := &in.SecretSecretRef, &out.SecretSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.SettingsSecretRef != nil { in, out := &in.SettingsSecretRef, &out.SettingsSecretRef *out = new(v1.SecretReference) @@ -5755,7 +6673,16 @@ func (in *WecomParameters) DeepCopyInto(out *WecomParameters) { *out = new(string) **out = **in } - out.URLSecretRef = in.URLSecretRef + if in.ToUser != nil { + in, out := &in.ToUser, &out.ToUser + *out = new(string) + **out = **in + } + if in.URLSecretRef != nil { + in, out := &in.URLSecretRef, &out.URLSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WecomParameters. diff --git a/apis/alerting/v1alpha1/zz_generated.resolvers.go b/apis/alerting/v1alpha1/zz_generated.resolvers.go index e034fe5..4108856 100644 --- a/apis/alerting/v1alpha1/zz_generated.resolvers.go +++ b/apis/alerting/v1alpha1/zz_generated.resolvers.go @@ -14,6 +14,32 @@ import ( client "sigs.k8s.io/controller-runtime/pkg/client" ) +// ResolveReferences of this MessageTemplate. +func (mg *MessageTemplate) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.OrgID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.OrganizationRef, + Selector: mg.Spec.ForProvider.OrganizationSelector, + To: reference.To{ + List: &v1alpha1.OrganizationList{}, + Managed: &v1alpha1.Organization{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.OrgID") + } + mg.Spec.ForProvider.OrgID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.OrganizationRef = rsp.ResolvedReference + + return nil +} + // ResolveReferences of this NotificationPolicy. func (mg *NotificationPolicy) ResolveReferences(ctx context.Context, c client.Reader) error { r := reference.NewAPIResolver(c, mg) diff --git a/apis/alerting/v1alpha1/zz_generated_terraformed.go b/apis/alerting/v1alpha1/zz_generated_terraformed.go index 3ec9c2d..be61e26 100755 --- a/apis/alerting/v1alpha1/zz_generated_terraformed.go +++ b/apis/alerting/v1alpha1/zz_generated_terraformed.go @@ -24,7 +24,7 @@ func (mg *ContactPoint) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this ContactPoint func (tr *ContactPoint) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"alertmanager[*].basic_auth_password": "spec.forProvider.alertmanager[*].basicAuthPasswordSecretRef", "alertmanager[*].settings": "spec.forProvider.alertmanager[*].settingsSecretRef", "dingding[*].settings": "spec.forProvider.dingding[*].settingsSecretRef", "discord[*].settings": "spec.forProvider.discord[*].settingsSecretRef", "discord[*].url": "spec.forProvider.discord[*].urlSecretRef", "email[*].settings": "spec.forProvider.email[*].settingsSecretRef", "googlechat[*].settings": "spec.forProvider.googlechat[*].settingsSecretRef", "googlechat[*].url": "spec.forProvider.googlechat[*].urlSecretRef", "kafka[*].rest_proxy_url": "spec.forProvider.kafka[*].restProxyUrlSecretRef", "kafka[*].settings": "spec.forProvider.kafka[*].settingsSecretRef", "opsgenie[*].api_key": "spec.forProvider.opsgenie[*].apiKeySecretRef", "opsgenie[*].settings": "spec.forProvider.opsgenie[*].settingsSecretRef", "pagerduty[*].integration_key": "spec.forProvider.pagerduty[*].integrationKeySecretRef", "pagerduty[*].settings": "spec.forProvider.pagerduty[*].settingsSecretRef", "pushover[*].api_token": "spec.forProvider.pushover[*].apiTokenSecretRef", "pushover[*].settings": "spec.forProvider.pushover[*].settingsSecretRef", "pushover[*].user_key": "spec.forProvider.pushover[*].userKeySecretRef", "sensugo[*].api_key": "spec.forProvider.sensugo[*].apiKeySecretRef", "sensugo[*].settings": "spec.forProvider.sensugo[*].settingsSecretRef", "slack[*].settings": "spec.forProvider.slack[*].settingsSecretRef", "slack[*].token": "spec.forProvider.slack[*].tokenSecretRef", "slack[*].url": "spec.forProvider.slack[*].urlSecretRef", "teams[*].settings": "spec.forProvider.teams[*].settingsSecretRef", "teams[*].url": "spec.forProvider.teams[*].urlSecretRef", "telegram[*].settings": "spec.forProvider.telegram[*].settingsSecretRef", "telegram[*].token": "spec.forProvider.telegram[*].tokenSecretRef", "threema[*].api_secret": "spec.forProvider.threema[*].apiSecretSecretRef", "threema[*].description": "spec.forProvider.threema[*].descriptionSecretRef", "threema[*].settings": "spec.forProvider.threema[*].settingsSecretRef", "threema[*].title": "spec.forProvider.threema[*].titleSecretRef", "victorops[*].settings": "spec.forProvider.victorops[*].settingsSecretRef", "webhook[*].authorization_credentials": "spec.forProvider.webhook[*].authorizationCredentialsSecretRef", "webhook[*].basic_auth_password": "spec.forProvider.webhook[*].basicAuthPasswordSecretRef", "webhook[*].settings": "spec.forProvider.webhook[*].settingsSecretRef", "wecom[*].settings": "spec.forProvider.wecom[*].settingsSecretRef", "wecom[*].url": "spec.forProvider.wecom[*].urlSecretRef"} + return map[string]string{"alertmanager[*].basic_auth_password": "spec.forProvider.alertmanager[*].basicAuthPasswordSecretRef", "alertmanager[*].settings": "spec.forProvider.alertmanager[*].settingsSecretRef", "dingding[*].settings": "spec.forProvider.dingding[*].settingsSecretRef", "discord[*].settings": "spec.forProvider.discord[*].settingsSecretRef", "discord[*].url": "spec.forProvider.discord[*].urlSecretRef", "email[*].settings": "spec.forProvider.email[*].settingsSecretRef", "googlechat[*].settings": "spec.forProvider.googlechat[*].settingsSecretRef", "googlechat[*].url": "spec.forProvider.googlechat[*].urlSecretRef", "kafka[*].password": "spec.forProvider.kafka[*].passwordSecretRef", "kafka[*].rest_proxy_url": "spec.forProvider.kafka[*].restProxyUrlSecretRef", "kafka[*].settings": "spec.forProvider.kafka[*].settingsSecretRef", "line[*].settings": "spec.forProvider.line[*].settingsSecretRef", "line[*].token": "spec.forProvider.line[*].tokenSecretRef", "oncall[*].authorization_credentials": "spec.forProvider.oncall[*].authorizationCredentialsSecretRef", "oncall[*].basic_auth_password": "spec.forProvider.oncall[*].basicAuthPasswordSecretRef", "oncall[*].settings": "spec.forProvider.oncall[*].settingsSecretRef", "opsgenie[*].api_key": "spec.forProvider.opsgenie[*].apiKeySecretRef", "opsgenie[*].settings": "spec.forProvider.opsgenie[*].settingsSecretRef", "pagerduty[*].integration_key": "spec.forProvider.pagerduty[*].integrationKeySecretRef", "pagerduty[*].settings": "spec.forProvider.pagerduty[*].settingsSecretRef", "pushover[*].api_token": "spec.forProvider.pushover[*].apiTokenSecretRef", "pushover[*].settings": "spec.forProvider.pushover[*].settingsSecretRef", "pushover[*].user_key": "spec.forProvider.pushover[*].userKeySecretRef", "sensugo[*].api_key": "spec.forProvider.sensugo[*].apiKeySecretRef", "sensugo[*].settings": "spec.forProvider.sensugo[*].settingsSecretRef", "slack[*].settings": "spec.forProvider.slack[*].settingsSecretRef", "slack[*].token": "spec.forProvider.slack[*].tokenSecretRef", "slack[*].url": "spec.forProvider.slack[*].urlSecretRef", "teams[*].settings": "spec.forProvider.teams[*].settingsSecretRef", "teams[*].url": "spec.forProvider.teams[*].urlSecretRef", "telegram[*].settings": "spec.forProvider.telegram[*].settingsSecretRef", "telegram[*].token": "spec.forProvider.telegram[*].tokenSecretRef", "threema[*].api_secret": "spec.forProvider.threema[*].apiSecretSecretRef", "threema[*].settings": "spec.forProvider.threema[*].settingsSecretRef", "victorops[*].settings": "spec.forProvider.victorops[*].settingsSecretRef", "webex[*].settings": "spec.forProvider.webex[*].settingsSecretRef", "webex[*].token": "spec.forProvider.webex[*].tokenSecretRef", "webhook[*].authorization_credentials": "spec.forProvider.webhook[*].authorizationCredentialsSecretRef", "webhook[*].basic_auth_password": "spec.forProvider.webhook[*].basicAuthPasswordSecretRef", "webhook[*].settings": "spec.forProvider.webhook[*].settingsSecretRef", "wecom[*].secret": "spec.forProvider.wecom[*].secretSecretRef", "wecom[*].settings": "spec.forProvider.wecom[*].settingsSecretRef", "wecom[*].url": "spec.forProvider.wecom[*].urlSecretRef"} } // GetObservation of this ContactPoint diff --git a/apis/alerting/v1alpha1/zz_messagetemplate_types.go b/apis/alerting/v1alpha1/zz_messagetemplate_types.go index 445580d..c0cf6f6 100755 --- a/apis/alerting/v1alpha1/zz_messagetemplate_types.go +++ b/apis/alerting/v1alpha1/zz_messagetemplate_types.go @@ -37,6 +37,10 @@ type MessageTemplateObservation struct { // The name of the message template. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + // The Organization ID. If not set, the Org ID defined in the provider block will be used. + OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` + // (String) The content of the message template. // The content of the message template. Template *string `json:"template,omitempty" tf:"template,omitempty"` @@ -49,6 +53,22 @@ type MessageTemplateParameters struct { // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + // The Organization ID. If not set, the Org ID defined in the provider block will be used. + // +crossplane:generate:reference:type=github.com/grafana/crossplane-provider-grafana/apis/oss/v1alpha1.Organization + // +crossplane:generate:reference:refFieldName=OrganizationRef + // +crossplane:generate:reference:selectorFieldName=OrganizationSelector + // +kubebuilder:validation:Optional + OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` + + // Reference to a Organization in oss to populate orgId. + // +kubebuilder:validation:Optional + OrganizationRef *v1.Reference `json:"organizationRef,omitempty" tf:"-"` + + // Selector for a Organization in oss to populate orgId. + // +kubebuilder:validation:Optional + OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` + // (String) The content of the message template. // The content of the message template. // +kubebuilder:validation:Optional diff --git a/apis/alerting/v1alpha1/zz_mutetiming_types.go b/apis/alerting/v1alpha1/zz_mutetiming_types.go index 19b4c48..0285389 100755 --- a/apis/alerting/v1alpha1/zz_mutetiming_types.go +++ b/apis/alerting/v1alpha1/zz_mutetiming_types.go @@ -23,6 +23,10 @@ type IntervalsInitParameters struct { // An inclusive range of days, 1-31, within a month, e.g. "1" or "14:16". Negative values can be used to represent days counting from the end of a month, e.g. "-1". DaysOfMonth []*string `json:"daysOfMonth,omitempty" tf:"days_of_month,omitempty"` + // (String) Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + // Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + Location *string `json:"location,omitempty" tf:"location,omitempty"` + // (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". // An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". Months []*string `json:"months,omitempty" tf:"months,omitempty"` @@ -46,6 +50,10 @@ type IntervalsObservation struct { // An inclusive range of days, 1-31, within a month, e.g. "1" or "14:16". Negative values can be used to represent days counting from the end of a month, e.g. "-1". DaysOfMonth []*string `json:"daysOfMonth,omitempty" tf:"days_of_month,omitempty"` + // (String) Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + // Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + Location *string `json:"location,omitempty" tf:"location,omitempty"` + // (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". // An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". Months []*string `json:"months,omitempty" tf:"months,omitempty"` @@ -70,6 +78,11 @@ type IntervalsParameters struct { // +kubebuilder:validation:Optional DaysOfMonth []*string `json:"daysOfMonth,omitempty" tf:"days_of_month,omitempty"` + // (String) Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + // Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" + // +kubebuilder:validation:Optional + Location *string `json:"location,omitempty" tf:"location,omitempty"` + // (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". // An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". // +kubebuilder:validation:Optional diff --git a/apis/alerting/v1alpha1/zz_notificationpolicy_types.go b/apis/alerting/v1alpha1/zz_notificationpolicy_types.go index bfa1102..af76fcf 100755 --- a/apis/alerting/v1alpha1/zz_notificationpolicy_types.go +++ b/apis/alerting/v1alpha1/zz_notificationpolicy_types.go @@ -174,7 +174,7 @@ type PolicyInitParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -185,7 +185,7 @@ type PolicyInitParameters struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []MatcherInitParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -261,7 +261,7 @@ type PolicyObservation struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -272,7 +272,7 @@ type PolicyObservation struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []MatcherObservation `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -302,9 +302,9 @@ type PolicyParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. // +kubebuilder:validation:Optional - GroupBy []*string `json:"groupBy" tf:"group_by,omitempty"` + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. // Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -316,7 +316,7 @@ type PolicyParameters struct { // +kubebuilder:validation:Optional GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. // +kubebuilder:validation:Optional Matcher []MatcherParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -348,7 +348,7 @@ type PolicyPolicyInitParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -359,7 +359,7 @@ type PolicyPolicyInitParameters struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyMatcherInitParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -435,7 +435,7 @@ type PolicyPolicyObservation struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -446,7 +446,7 @@ type PolicyPolicyObservation struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyMatcherObservation `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -476,9 +476,9 @@ type PolicyPolicyParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. // +kubebuilder:validation:Optional - GroupBy []*string `json:"groupBy" tf:"group_by,omitempty"` + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. // Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -490,7 +490,7 @@ type PolicyPolicyParameters struct { // +kubebuilder:validation:Optional GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. // +kubebuilder:validation:Optional Matcher []PolicyMatcherParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -522,7 +522,7 @@ type PolicyPolicyPolicyInitParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -533,7 +533,7 @@ type PolicyPolicyPolicyInitParameters struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyPolicyMatcherInitParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -609,7 +609,7 @@ type PolicyPolicyPolicyObservation struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -620,7 +620,7 @@ type PolicyPolicyPolicyObservation struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyPolicyMatcherObservation `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -650,9 +650,9 @@ type PolicyPolicyPolicyParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. // +kubebuilder:validation:Optional - GroupBy []*string `json:"groupBy" tf:"group_by,omitempty"` + GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. // Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -664,7 +664,7 @@ type PolicyPolicyPolicyParameters struct { // +kubebuilder:validation:Optional GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. // +kubebuilder:validation:Optional Matcher []PolicyPolicyMatcherParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -696,7 +696,7 @@ type PolicyPolicyPolicyPolicyInitParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -707,7 +707,7 @@ type PolicyPolicyPolicyPolicyInitParameters struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyPolicyPolicyMatcherInitParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -731,7 +731,7 @@ type PolicyPolicyPolicyPolicyObservation struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) Minimum time interval between two notifications for the same group. Default is 5 minutes. @@ -742,7 +742,7 @@ type PolicyPolicyPolicyPolicyObservation struct { // Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds. GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. Matcher []PolicyPolicyPolicyMatcherObservation `json:"matcher,omitempty" tf:"matcher,omitempty"` @@ -768,7 +768,7 @@ type PolicyPolicyPolicyPolicyParameters struct { Continue *bool `json:"continue,omitempty" tf:"continue,omitempty"` // (List of String) A list of alert labels to group alerts into notifications by. Use the special label ... to group alerts by all labels, effectively disabling grouping. - // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + // A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used. // +kubebuilder:validation:Optional GroupBy []*string `json:"groupBy" tf:"group_by,omitempty"` @@ -782,7 +782,7 @@ type PolicyPolicyPolicyPolicyParameters struct { // +kubebuilder:validation:Optional GroupWait *string `json:"groupWait,omitempty" tf:"group_wait,omitempty"` - // (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + // (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) // Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. // +kubebuilder:validation:Optional Matcher []PolicyPolicyPolicyMatcherParameters `json:"matcher,omitempty" tf:"matcher,omitempty"` diff --git a/apis/alerting/v1alpha1/zz_rulegroup_types.go b/apis/alerting/v1alpha1/zz_rulegroup_types.go index 3803012..73e0eee 100755 --- a/apis/alerting/v1alpha1/zz_rulegroup_types.go +++ b/apis/alerting/v1alpha1/zz_rulegroup_types.go @@ -128,6 +128,9 @@ type RelativeTimeRangeParameters struct { type RuleGroupInitParameters struct { + // Defaults to false. Defaults to `false`. + DisableProvenance *bool `json:"disableProvenance,omitempty" tf:"disable_provenance,omitempty"` + // (Number) The interval, in seconds, at which all rules in the group are evaluated. If a group contains many rules, the rules are evaluated sequentially. // The interval, in seconds, at which all rules in the group are evaluated. If a group contains many rules, the rules are evaluated sequentially. IntervalSeconds *float64 `json:"intervalSeconds,omitempty" tf:"interval_seconds,omitempty"` @@ -143,6 +146,9 @@ type RuleGroupInitParameters struct { type RuleGroupObservation struct { + // Defaults to false. Defaults to `false`. + DisableProvenance *bool `json:"disableProvenance,omitempty" tf:"disable_provenance,omitempty"` + // (String) The UID of the folder that the group belongs to. // The UID of the folder that the group belongs to. FolderUID *string `json:"folderUid,omitempty" tf:"folder_uid,omitempty"` @@ -158,8 +164,8 @@ type RuleGroupObservation struct { // The name of the rule group. Name *string `json:"name,omitempty" tf:"name,omitempty"` - // (String) The ID of the org to which the group belongs. - // The ID of the org to which the group belongs. + // (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` // (Block List, Min: 1) The rules within the group. (see below for nested schema) @@ -169,6 +175,10 @@ type RuleGroupObservation struct { type RuleGroupParameters struct { + // Defaults to false. Defaults to `false`. + // +kubebuilder:validation:Optional + DisableProvenance *bool `json:"disableProvenance,omitempty" tf:"disable_provenance,omitempty"` + // Reference to a Folder in oss to populate folderUid. // +kubebuilder:validation:Optional FolderRef *v1.Reference `json:"folderRef,omitempty" tf:"-"` @@ -196,8 +206,8 @@ type RuleGroupParameters struct { // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` - // (String) The ID of the org to which the group belongs. - // The ID of the org to which the group belongs. + // (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + // The Organization ID. If not set, the Org ID defined in the provider block will be used. // +crossplane:generate:reference:type=github.com/grafana/crossplane-provider-grafana/apis/oss/v1alpha1.Organization // +crossplane:generate:reference:refFieldName=OrganizationRef // +crossplane:generate:reference:selectorFieldName=OrganizationSelector diff --git a/apis/oncall/v1alpha1/zz_generated.deepcopy.go b/apis/oncall/v1alpha1/zz_generated.deepcopy.go index cf9a3a7..f65a9d5 100644 --- a/apis/oncall/v1alpha1/zz_generated.deepcopy.go +++ b/apis/oncall/v1alpha1/zz_generated.deepcopy.go @@ -1683,6 +1683,32 @@ func (in *OutgoingWebhookInitParameters) DeepCopyInto(out *OutgoingWebhookInitPa *out = new(bool) **out = **in } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = new(string) + **out = **in + } + if in.IntegrationFilter != nil { + in, out := &in.IntegrationFilter, &out.IntegrationFilter + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.IsWebhookEnabled != nil { + in, out := &in.IsWebhookEnabled, &out.IsWebhookEnabled + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1693,6 +1719,16 @@ func (in *OutgoingWebhookInitParameters) DeepCopyInto(out *OutgoingWebhookInitPa *out = new(string) **out = **in } + if in.TriggerTemplate != nil { + in, out := &in.TriggerTemplate, &out.TriggerTemplate + *out = new(string) + **out = **in + } + if in.TriggerType != nil { + in, out := &in.TriggerType, &out.TriggerType + *out = new(string) + **out = **in + } if in.URL != nil { in, out := &in.URL, &out.URL *out = new(string) @@ -1760,11 +1796,37 @@ func (in *OutgoingWebhookObservation) DeepCopyInto(out *OutgoingWebhookObservati *out = new(bool) **out = **in } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = new(string) + **out = **in + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) **out = **in } + if in.IntegrationFilter != nil { + in, out := &in.IntegrationFilter, &out.IntegrationFilter + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.IsWebhookEnabled != nil { + in, out := &in.IsWebhookEnabled, &out.IsWebhookEnabled + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1775,6 +1837,16 @@ func (in *OutgoingWebhookObservation) DeepCopyInto(out *OutgoingWebhookObservati *out = new(string) **out = **in } + if in.TriggerTemplate != nil { + in, out := &in.TriggerTemplate, &out.TriggerTemplate + *out = new(string) + **out = **in + } + if in.TriggerType != nil { + in, out := &in.TriggerType, &out.TriggerType + *out = new(string) + **out = **in + } if in.URL != nil { in, out := &in.URL, &out.URL *out = new(string) @@ -1815,6 +1887,32 @@ func (in *OutgoingWebhookParameters) DeepCopyInto(out *OutgoingWebhookParameters *out = new(bool) **out = **in } + if in.HTTPMethod != nil { + in, out := &in.HTTPMethod, &out.HTTPMethod + *out = new(string) + **out = **in + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = new(string) + **out = **in + } + if in.IntegrationFilter != nil { + in, out := &in.IntegrationFilter, &out.IntegrationFilter + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.IsWebhookEnabled != nil { + in, out := &in.IsWebhookEnabled, &out.IsWebhookEnabled + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1830,6 +1928,16 @@ func (in *OutgoingWebhookParameters) DeepCopyInto(out *OutgoingWebhookParameters *out = new(string) **out = **in } + if in.TriggerTemplate != nil { + in, out := &in.TriggerTemplate, &out.TriggerTemplate + *out = new(string) + **out = **in + } + if in.TriggerType != nil { + in, out := &in.TriggerType, &out.TriggerType + *out = new(string) + **out = **in + } if in.URL != nil { in, out := &in.URL, &out.URL *out = new(string) @@ -2544,6 +2652,11 @@ func (in *Schedule) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScheduleInitParameters) DeepCopyInto(out *ScheduleInitParameters) { *out = *in + if in.EnableWebOverrides != nil { + in, out := &in.EnableWebOverrides, &out.EnableWebOverrides + *out = new(bool) + **out = **in + } if in.IcalURLOverrides != nil { in, out := &in.IcalURLOverrides, &out.IcalURLOverrides *out = new(string) @@ -2639,6 +2752,11 @@ func (in *ScheduleList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScheduleObservation) DeepCopyInto(out *ScheduleObservation) { *out = *in + if in.EnableWebOverrides != nil { + in, out := &in.EnableWebOverrides, &out.EnableWebOverrides + *out = new(bool) + **out = **in + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -2707,6 +2825,11 @@ func (in *ScheduleObservation) DeepCopy() *ScheduleObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScheduleParameters) DeepCopyInto(out *ScheduleParameters) { *out = *in + if in.EnableWebOverrides != nil { + in, out := &in.EnableWebOverrides, &out.EnableWebOverrides + *out = new(bool) + **out = **in + } if in.IcalURLOverrides != nil { in, out := &in.IcalURLOverrides, &out.IcalURLOverrides *out = new(string) diff --git a/apis/oncall/v1alpha1/zz_integration_types.go b/apis/oncall/v1alpha1/zz_integration_types.go index ec06ff5..7671634 100755 --- a/apis/oncall/v1alpha1/zz_integration_types.go +++ b/apis/oncall/v1alpha1/zz_integration_types.go @@ -130,12 +130,12 @@ type IntegrationInitParameters struct { // The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` - // (Block List, Max: 1) Jinja2 templates for Alert payload. (see below for nested schema) - // Jinja2 templates for Alert payload. + // (Block List, Max: 1) Jinja2 templates for Alert payload. An empty templates block will be ignored. (see below for nested schema) + // Jinja2 templates for Alert payload. An empty templates block will be ignored. Templates []TemplatesInitParameters `json:"templates,omitempty" tf:"templates,omitempty"` - // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. - // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. + // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. + // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -160,12 +160,12 @@ type IntegrationObservation struct { // The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` - // (Block List, Max: 1) Jinja2 templates for Alert payload. (see below for nested schema) - // Jinja2 templates for Alert payload. + // (Block List, Max: 1) Jinja2 templates for Alert payload. An empty templates block will be ignored. (see below for nested schema) + // Jinja2 templates for Alert payload. An empty templates block will be ignored. Templates []TemplatesObservation `json:"templates,omitempty" tf:"templates,omitempty"` - // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. - // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. + // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. + // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -186,13 +186,13 @@ type IntegrationParameters struct { // +kubebuilder:validation:Optional TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` - // (Block List, Max: 1) Jinja2 templates for Alert payload. (see below for nested schema) - // Jinja2 templates for Alert payload. + // (Block List, Max: 1) Jinja2 templates for Alert payload. An empty templates block will be ignored. (see below for nested schema) + // Jinja2 templates for Alert payload. An empty templates block will be ignored. // +kubebuilder:validation:Optional Templates []TemplatesParameters `json:"templates,omitempty" tf:"templates,omitempty"` - // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. - // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. + // (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. + // The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` } diff --git a/apis/oncall/v1alpha1/zz_outgoingwebhook_types.go b/apis/oncall/v1alpha1/zz_outgoingwebhook_types.go index fc0a84d..f39d596 100755 --- a/apis/oncall/v1alpha1/zz_outgoingwebhook_types.go +++ b/apis/oncall/v1alpha1/zz_outgoingwebhook_types.go @@ -23,10 +23,26 @@ type OutgoingWebhookInitParameters struct { // The data of the webhook. Data *string `json:"data,omitempty" tf:"data,omitempty"` - // (Boolean) Forwards whole payload of the alert to the webhook's url as POST data. - // Forwards whole payload of the alert to the webhook's url as POST data. + // (Boolean) Toggle to send the entire webhook payload instead of using the values in the Data field. + // Toggle to send the entire webhook payload instead of using the values in the Data field. ForwardWholePayload *bool `json:"forwardWholePayload,omitempty" tf:"forward_whole_payload,omitempty"` + // (String) The HTTP method used in the request made by the outgoing webhook. Defaults to POST. + // The HTTP method used in the request made by the outgoing webhook. Defaults to `POST`. + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (String) Headers to add to the outgoing webhook request. + // Headers to add to the outgoing webhook request. + Headers *string `json:"headers,omitempty" tf:"headers,omitempty"` + + // (List of String) Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + // Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + IntegrationFilter []*string `json:"integrationFilter,omitempty" tf:"integration_filter,omitempty"` + + // (Boolean) Controls whether the outgoing webhook will trigger or is ignored. The default is true. + // Controls whether the outgoing webhook will trigger or is ignored. The default is `true`. + IsWebhookEnabled *bool `json:"isWebhookEnabled,omitempty" tf:"is_webhook_enabled,omitempty"` + // (String) The name of the outgoing webhook. // The name of the outgoing webhook. Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -35,12 +51,20 @@ type OutgoingWebhookInitParameters struct { // The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // (String) A template used to dynamically determine whether the webhook should execute based on the content of the payload. + // A template used to dynamically determine whether the webhook should execute based on the content of the payload. + TriggerTemplate *string `json:"triggerTemplate,omitempty" tf:"trigger_template,omitempty"` + + // (String) The type of event that will cause this outgoing webhook to execute. The types of triggers are: escalation, alert group created, acknowledge, resolve, silence, unsilence, unresolve, unacknowledge. Defaults to escalation. + // The type of event that will cause this outgoing webhook to execute. The types of triggers are: `escalation`, `alert group created`, `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, `unacknowledge`. Defaults to `escalation`. + TriggerType *string `json:"triggerType,omitempty" tf:"trigger_type,omitempty"` + // (String) The webhook URL. // The webhook URL. URL *string `json:"url,omitempty" tf:"url,omitempty"` - // (String) The auth data of the webhook. Used for Basic authentication. - // The auth data of the webhook. Used for Basic authentication. + // (String) Username to use when making the outgoing webhook request. + // Username to use when making the outgoing webhook request. User *string `json:"user,omitempty" tf:"user,omitempty"` } @@ -50,13 +74,29 @@ type OutgoingWebhookObservation struct { // The data of the webhook. Data *string `json:"data,omitempty" tf:"data,omitempty"` - // (Boolean) Forwards whole payload of the alert to the webhook's url as POST data. - // Forwards whole payload of the alert to the webhook's url as POST data. + // (Boolean) Toggle to send the entire webhook payload instead of using the values in the Data field. + // Toggle to send the entire webhook payload instead of using the values in the Data field. ForwardWholePayload *bool `json:"forwardWholePayload,omitempty" tf:"forward_whole_payload,omitempty"` + // (String) The HTTP method used in the request made by the outgoing webhook. Defaults to POST. + // The HTTP method used in the request made by the outgoing webhook. Defaults to `POST`. + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (String) Headers to add to the outgoing webhook request. + // Headers to add to the outgoing webhook request. + Headers *string `json:"headers,omitempty" tf:"headers,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // (List of String) Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + // Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + IntegrationFilter []*string `json:"integrationFilter,omitempty" tf:"integration_filter,omitempty"` + + // (Boolean) Controls whether the outgoing webhook will trigger or is ignored. The default is true. + // Controls whether the outgoing webhook will trigger or is ignored. The default is `true`. + IsWebhookEnabled *bool `json:"isWebhookEnabled,omitempty" tf:"is_webhook_enabled,omitempty"` + // (String) The name of the outgoing webhook. // The name of the outgoing webhook. Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -65,12 +105,20 @@ type OutgoingWebhookObservation struct { // The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // (String) A template used to dynamically determine whether the webhook should execute based on the content of the payload. + // A template used to dynamically determine whether the webhook should execute based on the content of the payload. + TriggerTemplate *string `json:"triggerTemplate,omitempty" tf:"trigger_template,omitempty"` + + // (String) The type of event that will cause this outgoing webhook to execute. The types of triggers are: escalation, alert group created, acknowledge, resolve, silence, unsilence, unresolve, unacknowledge. Defaults to escalation. + // The type of event that will cause this outgoing webhook to execute. The types of triggers are: `escalation`, `alert group created`, `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, `unacknowledge`. Defaults to `escalation`. + TriggerType *string `json:"triggerType,omitempty" tf:"trigger_type,omitempty"` + // (String) The webhook URL. // The webhook URL. URL *string `json:"url,omitempty" tf:"url,omitempty"` - // (String) The auth data of the webhook. Used for Basic authentication. - // The auth data of the webhook. Used for Basic authentication. + // (String) Username to use when making the outgoing webhook request. + // Username to use when making the outgoing webhook request. User *string `json:"user,omitempty" tf:"user,omitempty"` } @@ -86,11 +134,31 @@ type OutgoingWebhookParameters struct { // +kubebuilder:validation:Optional Data *string `json:"data,omitempty" tf:"data,omitempty"` - // (Boolean) Forwards whole payload of the alert to the webhook's url as POST data. - // Forwards whole payload of the alert to the webhook's url as POST data. + // (Boolean) Toggle to send the entire webhook payload instead of using the values in the Data field. + // Toggle to send the entire webhook payload instead of using the values in the Data field. // +kubebuilder:validation:Optional ForwardWholePayload *bool `json:"forwardWholePayload,omitempty" tf:"forward_whole_payload,omitempty"` + // (String) The HTTP method used in the request made by the outgoing webhook. Defaults to POST. + // The HTTP method used in the request made by the outgoing webhook. Defaults to `POST`. + // +kubebuilder:validation:Optional + HTTPMethod *string `json:"httpMethod,omitempty" tf:"http_method,omitempty"` + + // (String) Headers to add to the outgoing webhook request. + // Headers to add to the outgoing webhook request. + // +kubebuilder:validation:Optional + Headers *string `json:"headers,omitempty" tf:"headers,omitempty"` + + // (List of String) Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + // Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + // +kubebuilder:validation:Optional + IntegrationFilter []*string `json:"integrationFilter,omitempty" tf:"integration_filter,omitempty"` + + // (Boolean) Controls whether the outgoing webhook will trigger or is ignored. The default is true. + // Controls whether the outgoing webhook will trigger or is ignored. The default is `true`. + // +kubebuilder:validation:Optional + IsWebhookEnabled *bool `json:"isWebhookEnabled,omitempty" tf:"is_webhook_enabled,omitempty"` + // (String) The name of the outgoing webhook. // The name of the outgoing webhook. // +kubebuilder:validation:Optional @@ -106,13 +174,23 @@ type OutgoingWebhookParameters struct { // +kubebuilder:validation:Optional TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // (String) A template used to dynamically determine whether the webhook should execute based on the content of the payload. + // A template used to dynamically determine whether the webhook should execute based on the content of the payload. + // +kubebuilder:validation:Optional + TriggerTemplate *string `json:"triggerTemplate,omitempty" tf:"trigger_template,omitempty"` + + // (String) The type of event that will cause this outgoing webhook to execute. The types of triggers are: escalation, alert group created, acknowledge, resolve, silence, unsilence, unresolve, unacknowledge. Defaults to escalation. + // The type of event that will cause this outgoing webhook to execute. The types of triggers are: `escalation`, `alert group created`, `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, `unacknowledge`. Defaults to `escalation`. + // +kubebuilder:validation:Optional + TriggerType *string `json:"triggerType,omitempty" tf:"trigger_type,omitempty"` + // (String) The webhook URL. // The webhook URL. // +kubebuilder:validation:Optional URL *string `json:"url,omitempty" tf:"url,omitempty"` - // (String) The auth data of the webhook. Used for Basic authentication. - // The auth data of the webhook. Used for Basic authentication. + // (String) Username to use when making the outgoing webhook request. + // Username to use when making the outgoing webhook request. // +kubebuilder:validation:Optional User *string `json:"user,omitempty" tf:"user,omitempty"` } diff --git a/apis/oncall/v1alpha1/zz_schedule_types.go b/apis/oncall/v1alpha1/zz_schedule_types.go index 2d00854..467dac9 100755 --- a/apis/oncall/v1alpha1/zz_schedule_types.go +++ b/apis/oncall/v1alpha1/zz_schedule_types.go @@ -19,6 +19,10 @@ import ( type ScheduleInitParameters struct { + // (Boolean) Enable overrides via web UI (it will ignore ical_url_overrides). + // Enable overrides via web UI (it will ignore ical_url_overrides). + EnableWebOverrides *bool `json:"enableWebOverrides,omitempty" tf:"enable_web_overrides,omitempty"` + // (String) The URL of external iCal calendar which override primary events. // The URL of external iCal calendar which override primary events. IcalURLOverrides *string `json:"icalUrlOverrides,omitempty" tf:"ical_url_overrides,omitempty"` @@ -54,6 +58,10 @@ type ScheduleInitParameters struct { type ScheduleObservation struct { + // (Boolean) Enable overrides via web UI (it will ignore ical_url_overrides). + // Enable overrides via web UI (it will ignore ical_url_overrides). + EnableWebOverrides *bool `json:"enableWebOverrides,omitempty" tf:"enable_web_overrides,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -92,6 +100,11 @@ type ScheduleObservation struct { type ScheduleParameters struct { + // (Boolean) Enable overrides via web UI (it will ignore ical_url_overrides). + // Enable overrides via web UI (it will ignore ical_url_overrides). + // +kubebuilder:validation:Optional + EnableWebOverrides *bool `json:"enableWebOverrides,omitempty" tf:"enable_web_overrides,omitempty"` + // (String) The URL of external iCal calendar which override primary events. // The URL of external iCal calendar which override primary events. // +kubebuilder:validation:Optional diff --git a/apis/oss/v1alpha1/zz_dashboardpermission_types.go b/apis/oss/v1alpha1/zz_dashboardpermission_types.go index 03267f2..d55eed1 100755 --- a/apis/oss/v1alpha1/zz_dashboardpermission_types.go +++ b/apis/oss/v1alpha1/zz_dashboardpermission_types.go @@ -19,7 +19,7 @@ import ( type DashboardPermissionInitParameters struct { - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []PermissionsInitParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` } @@ -37,7 +37,7 @@ type DashboardPermissionObservation struct { // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []PermissionsObservation `json:"permissions,omitempty" tf:"permissions,omitempty"` } @@ -77,7 +77,7 @@ type DashboardPermissionParameters struct { // +kubebuilder:validation:Optional OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. // +kubebuilder:validation:Optional Permissions []PermissionsParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` @@ -169,7 +169,7 @@ type DashboardPermissionStatus struct { // +kubebuilder:object:root=true -// DashboardPermission is the Schema for the DashboardPermissions API. Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/dashboard_permissions/ +// DashboardPermission is the Schema for the DashboardPermissions API. Manages the entire set of permissions for a dashboard. Permissions that aren't specified when applying this resource will be removed. // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" @@ -179,9 +179,8 @@ type DashboardPermissionStatus struct { type DashboardPermission struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permissions) || (has(self.initProvider) && has(self.initProvider.permissions))",message="spec.forProvider.permissions is a required parameter" - Spec DashboardPermissionSpec `json:"spec"` - Status DashboardPermissionStatus `json:"status,omitempty"` + Spec DashboardPermissionSpec `json:"spec"` + Status DashboardPermissionStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/oss/v1alpha1/zz_folder_types.go b/apis/oss/v1alpha1/zz_folder_types.go index 0d51ad5..9b049c0 100755 --- a/apis/oss/v1alpha1/zz_folder_types.go +++ b/apis/oss/v1alpha1/zz_folder_types.go @@ -41,6 +41,10 @@ type FolderObservation struct { // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` + // (String) The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance. + // The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance. + ParentFolderUID *string `json:"parentFolderUid,omitempty" tf:"parent_folder_uid,omitempty"` + // (Boolean) Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to false. // Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to `false`. PreventDestroyIfNotEmpty *bool `json:"preventDestroyIfNotEmpty,omitempty" tf:"prevent_destroy_if_not_empty,omitempty"` @@ -60,6 +64,14 @@ type FolderObservation struct { type FolderParameters struct { + // Reference to a Folder in oss to populate parentFolderUid. + // +kubebuilder:validation:Optional + FolderRef *v1.Reference `json:"folderRef,omitempty" tf:"-"` + + // Selector for a Folder in oss to populate parentFolderUid. + // +kubebuilder:validation:Optional + FolderSelector *v1.Selector `json:"folderSelector,omitempty" tf:"-"` + // (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. // The Organization ID. If not set, the Org ID defined in the provider block will be used. // +crossplane:generate:reference:type=github.com/grafana/crossplane-provider-grafana/apis/oss/v1alpha1.Organization @@ -76,6 +88,15 @@ type FolderParameters struct { // +kubebuilder:validation:Optional OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` + // (String) The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance. + // The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance. + // +crossplane:generate:reference:type=github.com/grafana/crossplane-provider-grafana/apis/oss/v1alpha1.Folder + // +crossplane:generate:reference:extractor=github.com/grafana/crossplane-provider-grafana/config/grafana.UIDExtractor() + // +crossplane:generate:reference:refFieldName=FolderRef + // +crossplane:generate:reference:selectorFieldName=FolderSelector + // +kubebuilder:validation:Optional + ParentFolderUID *string `json:"parentFolderUid,omitempty" tf:"parent_folder_uid,omitempty"` + // (Boolean) Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to false. // Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to `false`. // +kubebuilder:validation:Optional diff --git a/apis/oss/v1alpha1/zz_folderpermission_types.go b/apis/oss/v1alpha1/zz_folderpermission_types.go index 9eff807..9410c9d 100755 --- a/apis/oss/v1alpha1/zz_folderpermission_types.go +++ b/apis/oss/v1alpha1/zz_folderpermission_types.go @@ -19,7 +19,7 @@ import ( type FolderPermissionInitParameters struct { - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []FolderPermissionPermissionsInitParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` } @@ -37,7 +37,7 @@ type FolderPermissionObservation struct { // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []FolderPermissionPermissionsObservation `json:"permissions,omitempty" tf:"permissions,omitempty"` } @@ -77,7 +77,7 @@ type FolderPermissionParameters struct { // +kubebuilder:validation:Optional OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. // +kubebuilder:validation:Optional Permissions []FolderPermissionPermissionsParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` @@ -169,7 +169,7 @@ type FolderPermissionStatus struct { // +kubebuilder:object:root=true -// FolderPermission is the Schema for the FolderPermissions API. Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/folder_permissions/ +// FolderPermission is the Schema for the FolderPermissions API. Manages the entire set of permissions for a folder. Permissions that aren't specified when applying this resource will be removed. // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" @@ -179,9 +179,8 @@ type FolderPermissionStatus struct { type FolderPermission struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permissions) || (has(self.initProvider) && has(self.initProvider.permissions))",message="spec.forProvider.permissions is a required parameter" - Spec FolderPermissionSpec `json:"spec"` - Status FolderPermissionStatus `json:"status,omitempty"` + Spec FolderPermissionSpec `json:"spec"` + Status FolderPermissionStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/oss/v1alpha1/zz_generated.deepcopy.go b/apis/oss/v1alpha1/zz_generated.deepcopy.go index 0dbabcc..22ca869 100644 --- a/apis/oss/v1alpha1/zz_generated.deepcopy.go +++ b/apis/oss/v1alpha1/zz_generated.deepcopy.go @@ -1122,6 +1122,11 @@ func (in *FolderObservation) DeepCopyInto(out *FolderObservation) { *out = new(string) **out = **in } + if in.ParentFolderUID != nil { + in, out := &in.ParentFolderUID, &out.ParentFolderUID + *out = new(string) + **out = **in + } if in.PreventDestroyIfNotEmpty != nil { in, out := &in.PreventDestroyIfNotEmpty, &out.PreventDestroyIfNotEmpty *out = new(bool) @@ -1157,6 +1162,16 @@ func (in *FolderObservation) DeepCopy() *FolderObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *FolderParameters) DeepCopyInto(out *FolderParameters) { *out = *in + if in.FolderRef != nil { + in, out := &in.FolderRef, &out.FolderRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.FolderSelector != nil { + in, out := &in.FolderSelector, &out.FolderSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.OrgID != nil { in, out := &in.OrgID, &out.OrgID *out = new(string) @@ -1172,6 +1187,11 @@ func (in *FolderParameters) DeepCopyInto(out *FolderParameters) { *out = new(v1.Selector) (*in).DeepCopyInto(*out) } + if in.ParentFolderUID != nil { + in, out := &in.ParentFolderUID, &out.ParentFolderUID + *out = new(string) + **out = **in + } if in.PreventDestroyIfNotEmpty != nil { in, out := &in.PreventDestroyIfNotEmpty, &out.PreventDestroyIfNotEmpty *out = new(bool) @@ -1611,6 +1631,17 @@ func (in *OrganizationInitParameters) DeepCopyInto(out *OrganizationInitParamete *out = new(string) **out = **in } + if in.UsersWithoutAccess != nil { + in, out := &in.UsersWithoutAccess, &out.UsersWithoutAccess + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Viewers != nil { in, out := &in.Viewers, &out.Viewers *out = make([]*string, len(*in)) @@ -1716,6 +1747,17 @@ func (in *OrganizationObservation) DeepCopyInto(out *OrganizationObservation) { *out = new(float64) **out = **in } + if in.UsersWithoutAccess != nil { + in, out := &in.UsersWithoutAccess, &out.UsersWithoutAccess + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Viewers != nil { in, out := &in.Viewers, &out.Viewers *out = make([]*string, len(*in)) @@ -1779,6 +1821,17 @@ func (in *OrganizationParameters) DeepCopyInto(out *OrganizationParameters) { *out = new(string) **out = **in } + if in.UsersWithoutAccess != nil { + in, out := &in.UsersWithoutAccess, &out.UsersWithoutAccess + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.Viewers != nil { in, out := &in.Viewers, &out.Viewers *out = make([]*string, len(*in)) diff --git a/apis/oss/v1alpha1/zz_generated.resolvers.go b/apis/oss/v1alpha1/zz_generated.resolvers.go index 5e86f7f..8bcc011 100644 --- a/apis/oss/v1alpha1/zz_generated.resolvers.go +++ b/apis/oss/v1alpha1/zz_generated.resolvers.go @@ -172,6 +172,22 @@ func (mg *Folder) ResolveReferences(ctx context.Context, c client.Reader) error mg.Spec.ForProvider.OrgID = reference.ToPtrValue(rsp.ResolvedValue) mg.Spec.ForProvider.OrganizationRef = rsp.ResolvedReference + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.ParentFolderUID), + Extract: grafana.UIDExtractor(), + Reference: mg.Spec.ForProvider.FolderRef, + Selector: mg.Spec.ForProvider.FolderSelector, + To: reference.To{ + List: &FolderList{}, + Managed: &Folder{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.ParentFolderUID") + } + mg.Spec.ForProvider.ParentFolderUID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.FolderRef = rsp.ResolvedReference + return nil } diff --git a/apis/oss/v1alpha1/zz_organization_types.go b/apis/oss/v1alpha1/zz_organization_types.go index 35ef66d..d6e7627 100755 --- a/apis/oss/v1alpha1/zz_organization_types.go +++ b/apis/oss/v1alpha1/zz_organization_types.go @@ -63,6 +63,14 @@ type OrganizationInitParameters struct { // The display name for the Grafana organization created. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + // A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + UsersWithoutAccess []*string `json:"usersWithoutAccess,omitempty" tf:"users_without_access,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given viewer // access to the organization. Note: users specified here must already exist in // Grafana unless 'create_users' is set to true. @@ -125,6 +133,14 @@ type OrganizationObservation struct { // The organization id assigned to this organization by Grafana. OrgID *float64 `json:"orgId,omitempty" tf:"org_id,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + // A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + UsersWithoutAccess []*string `json:"usersWithoutAccess,omitempty" tf:"users_without_access,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given viewer // access to the organization. Note: users specified here must already exist in // Grafana unless 'create_users' is set to true. @@ -185,6 +201,15 @@ type OrganizationParameters struct { // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + // A list of email addresses corresponding to users who should be given none access to the organization. + // Note: users specified here must already exist in Grafana, unless 'create_users' is + // set to true. This feature is only available in Grafana 10.2+. + // +kubebuilder:validation:Optional + UsersWithoutAccess []*string `json:"usersWithoutAccess,omitempty" tf:"users_without_access,omitempty"` + // (Set of String) A list of email addresses corresponding to users who should be given viewer // access to the organization. Note: users specified here must already exist in // Grafana unless 'create_users' is set to true. diff --git a/apis/oss/v1alpha1/zz_organizationpreferences_types.go b/apis/oss/v1alpha1/zz_organizationpreferences_types.go index 403c1c8..8d15f0e 100755 --- a/apis/oss/v1alpha1/zz_organizationpreferences_types.go +++ b/apis/oss/v1alpha1/zz_organizationpreferences_types.go @@ -19,16 +19,16 @@ import ( type OrganizationPreferencesInitParameters struct { - // (Number) The Organization home dashboard ID. - // The Organization home dashboard ID. + // (Number, Deprecated) The Organization home dashboard ID. Deprecated: Use home_dashboard_uid instead. + // The Organization home dashboard ID. Deprecated: Use `home_dashboard_uid` instead. HomeDashboardID *float64 `json:"homeDashboardId,omitempty" tf:"home_dashboard_id,omitempty"` // (String) The Organization home dashboard UID. This is only available in Grafana 9.0+. // The Organization home dashboard UID. This is only available in Grafana 9.0+. HomeDashboardUID *string `json:"homeDashboardUid,omitempty" tf:"home_dashboard_uid,omitempty"` - // (String) The Organization theme. Available values are light, dark, or an empty string for the default. - // The Organization theme. Available values are `light`, `dark`, or an empty string for the default. + // (String) The Organization theme. Available values are light, dark, system, or an empty string for the default. + // The Organization theme. Available values are `light`, `dark`, `system`, or an empty string for the default. Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` // (String) The Organization timezone. Available values are utc, browser, or an empty string for the default. @@ -42,8 +42,8 @@ type OrganizationPreferencesInitParameters struct { type OrganizationPreferencesObservation struct { - // (Number) The Organization home dashboard ID. - // The Organization home dashboard ID. + // (Number, Deprecated) The Organization home dashboard ID. Deprecated: Use home_dashboard_uid instead. + // The Organization home dashboard ID. Deprecated: Use `home_dashboard_uid` instead. HomeDashboardID *float64 `json:"homeDashboardId,omitempty" tf:"home_dashboard_id,omitempty"` // (String) The Organization home dashboard UID. This is only available in Grafana 9.0+. @@ -57,8 +57,8 @@ type OrganizationPreferencesObservation struct { // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` - // (String) The Organization theme. Available values are light, dark, or an empty string for the default. - // The Organization theme. Available values are `light`, `dark`, or an empty string for the default. + // (String) The Organization theme. Available values are light, dark, system, or an empty string for the default. + // The Organization theme. Available values are `light`, `dark`, `system`, or an empty string for the default. Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` // (String) The Organization timezone. Available values are utc, browser, or an empty string for the default. @@ -72,8 +72,8 @@ type OrganizationPreferencesObservation struct { type OrganizationPreferencesParameters struct { - // (Number) The Organization home dashboard ID. - // The Organization home dashboard ID. + // (Number, Deprecated) The Organization home dashboard ID. Deprecated: Use home_dashboard_uid instead. + // The Organization home dashboard ID. Deprecated: Use `home_dashboard_uid` instead. // +kubebuilder:validation:Optional HomeDashboardID *float64 `json:"homeDashboardId,omitempty" tf:"home_dashboard_id,omitempty"` @@ -98,8 +98,8 @@ type OrganizationPreferencesParameters struct { // +kubebuilder:validation:Optional OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` - // (String) The Organization theme. Available values are light, dark, or an empty string for the default. - // The Organization theme. Available values are `light`, `dark`, or an empty string for the default. + // (String) The Organization theme. Available values are light, dark, system, or an empty string for the default. + // The Organization theme. Available values are `light`, `dark`, `system`, or an empty string for the default. // +kubebuilder:validation:Optional Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` diff --git a/apis/oss/v1alpha1/zz_serviceaccountpermission_types.go b/apis/oss/v1alpha1/zz_serviceaccountpermission_types.go index 3bd769b..f6f000d 100755 --- a/apis/oss/v1alpha1/zz_serviceaccountpermission_types.go +++ b/apis/oss/v1alpha1/zz_serviceaccountpermission_types.go @@ -19,7 +19,7 @@ import ( type ServiceAccountPermissionInitParameters struct { - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []ServiceAccountPermissionPermissionsInitParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` } @@ -33,7 +33,7 @@ type ServiceAccountPermissionObservation struct { // The Organization ID. If not set, the Org ID defined in the provider block will be used. OrgID *string `json:"orgId,omitempty" tf:"org_id,omitempty"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. Permissions []ServiceAccountPermissionPermissionsObservation `json:"permissions,omitempty" tf:"permissions,omitempty"` @@ -60,7 +60,7 @@ type ServiceAccountPermissionParameters struct { // +kubebuilder:validation:Optional OrganizationSelector *v1.Selector `json:"organizationSelector,omitempty" tf:"-"` - // (Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) + // (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) // The permission items to add/update. Items that are omitted from the list will be removed. // +kubebuilder:validation:Optional Permissions []ServiceAccountPermissionPermissionsParameters `json:"permissions,omitempty" tf:"permissions,omitempty"` @@ -155,7 +155,7 @@ type ServiceAccountPermissionStatus struct { // +kubebuilder:object:root=true -// ServiceAccountPermission is the Schema for the ServiceAccountPermissions API. Note: This resource is available from Grafana 9.2.4 onwards. Official documentation https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana +// ServiceAccountPermission is the Schema for the ServiceAccountPermissions API. Manages the entire set of permissions for a service account. Permissions that aren't specified when applying this resource will be removed. Note: This resource is available from Grafana 9.2.4 onwards. Official documentation https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana // +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" // +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name" @@ -165,9 +165,8 @@ type ServiceAccountPermissionStatus struct { type ServiceAccountPermission struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - // +kubebuilder:validation:XValidation:rule="!('*' in self.managementPolicies || 'Create' in self.managementPolicies || 'Update' in self.managementPolicies) || has(self.forProvider.permissions) || (has(self.initProvider) && has(self.initProvider.permissions))",message="spec.forProvider.permissions is a required parameter" - Spec ServiceAccountPermissionSpec `json:"spec"` - Status ServiceAccountPermissionStatus `json:"status,omitempty"` + Spec ServiceAccountPermissionSpec `json:"spec"` + Status ServiceAccountPermissionStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/oss/v1alpha1/zz_team_types.go b/apis/oss/v1alpha1/zz_team_types.go index 7315ec8..f31c488 100755 --- a/apis/oss/v1alpha1/zz_team_types.go +++ b/apis/oss/v1alpha1/zz_team_types.go @@ -23,8 +23,8 @@ type PreferencesInitParameters struct { // The UID of the dashboard to display when a team member logs in. Defaults to “. HomeDashboardUID *string `json:"homeDashboardUid,omitempty" tf:"home_dashboard_uid,omitempty"` - // (String) The default theme for this team. Available themes are light, dark, or an empty string for the default theme. Defaults to “. - // The default theme for this team. Available themes are `light`, `dark`, or an empty string for the default theme. Defaults to “. + // (String) The default theme for this team. Available themes are light, dark, system, or an empty string for the default theme. Defaults to “. + // The default theme for this team. Available themes are `light`, `dark`, `system`, or an empty string for the default theme. Defaults to “. Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` // (String) The default timezone for this team. Available values are utc, browser, or an empty string for the default. Defaults to “. @@ -38,8 +38,8 @@ type PreferencesObservation struct { // The UID of the dashboard to display when a team member logs in. Defaults to “. HomeDashboardUID *string `json:"homeDashboardUid,omitempty" tf:"home_dashboard_uid,omitempty"` - // (String) The default theme for this team. Available themes are light, dark, or an empty string for the default theme. Defaults to “. - // The default theme for this team. Available themes are `light`, `dark`, or an empty string for the default theme. Defaults to “. + // (String) The default theme for this team. Available themes are light, dark, system, or an empty string for the default theme. Defaults to “. + // The default theme for this team. Available themes are `light`, `dark`, `system`, or an empty string for the default theme. Defaults to “. Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` // (String) The default timezone for this team. Available values are utc, browser, or an empty string for the default. Defaults to “. @@ -54,8 +54,8 @@ type PreferencesParameters struct { // +kubebuilder:validation:Optional HomeDashboardUID *string `json:"homeDashboardUid,omitempty" tf:"home_dashboard_uid,omitempty"` - // (String) The default theme for this team. Available themes are light, dark, or an empty string for the default theme. Defaults to “. - // The default theme for this team. Available themes are `light`, `dark`, or an empty string for the default theme. Defaults to “. + // (String) The default theme for this team. Available themes are light, dark, system, or an empty string for the default theme. Defaults to “. + // The default theme for this team. Available themes are `light`, `dark`, `system`, or an empty string for the default theme. Defaults to “. // +kubebuilder:validation:Optional Theme *string `json:"theme,omitempty" tf:"theme,omitempty"` diff --git a/apis/sm/v1alpha1/zz_check_types.go b/apis/sm/v1alpha1/zz_check_types.go index 02ff56f..e19080d 100755 --- a/apis/sm/v1alpha1/zz_check_types.go +++ b/apis/sm/v1alpha1/zz_check_types.go @@ -17,6 +17,80 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type AssertionsInitParameters struct { + + // (String) The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + // The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression of the assertion. Should start with $. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + // The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + Subject *string `json:"subject,omitempty" tf:"subject,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) The value of the assertion + // The value of the assertion + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type AssertionsObservation struct { + + // (String) The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + // The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression of the assertion. Should start with $. + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + // The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + Subject *string `json:"subject,omitempty" tf:"subject,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) The value of the assertion + // The value of the assertion + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type AssertionsParameters struct { + + // (String) The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + // The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + // +kubebuilder:validation:Optional + Condition *string `json:"condition,omitempty" tf:"condition,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression of the assertion. Should start with $. + // +kubebuilder:validation:Optional + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + // The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY + // +kubebuilder:validation:Optional + Subject *string `json:"subject,omitempty" tf:"subject,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` + + // (String) The value of the assertion + // The value of the assertion + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + type BasicAuthInitParameters struct { // (String) Basic auth password. @@ -52,6 +126,54 @@ type BasicAuthParameters struct { Username *string `json:"username" tf:"username,omitempty"` } +type BodyInitParameters struct { + + // (String) The content encoding of the body + // The content encoding of the body + ContentEncoding *string `json:"contentEncoding,omitempty" tf:"content_encoding,omitempty"` + + // (String) The content type of the body + // The content type of the body + ContentType *string `json:"contentType,omitempty" tf:"content_type,omitempty"` + + // (String) The body payload + // The body payload + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` +} + +type BodyObservation struct { + + // (String) The content encoding of the body + // The content encoding of the body + ContentEncoding *string `json:"contentEncoding,omitempty" tf:"content_encoding,omitempty"` + + // (String) The content type of the body + // The content type of the body + ContentType *string `json:"contentType,omitempty" tf:"content_type,omitempty"` + + // (String) The body payload + // The body payload + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` +} + +type BodyParameters struct { + + // (String) The content encoding of the body + // The content encoding of the body + // +kubebuilder:validation:Optional + ContentEncoding *string `json:"contentEncoding,omitempty" tf:"content_encoding,omitempty"` + + // (String) The content type of the body + // The content type of the body + // +kubebuilder:validation:Optional + ContentType *string `json:"contentType,omitempty" tf:"content_type,omitempty"` + + // (String) The body payload + // The body payload + // +kubebuilder:validation:Optional + Payload *string `json:"payload,omitempty" tf:"payload,omitempty"` +} + type CheckInitParameters struct { // (String) Can be set to none, low, medium, or high to correspond to the check alert levels. Defaults to none. @@ -337,6 +459,54 @@ type DNSParameters struct { ValidateAuthorityRrs []ValidateAuthorityRrsParameters `json:"validateAuthorityRrs,omitempty" tf:"validate_authority_rrs,omitempty"` } +type EntriesInitParameters struct { + + // (Block List) Assertions to make on the request response (see below for nested schema) + // Assertions to make on the request response + Assertions []AssertionsInitParameters `json:"assertions,omitempty" tf:"assertions,omitempty"` + + // (Block Set, Max: 1) An individual MultiHTTP request (see below for nested schema) + // An individual MultiHTTP request + Request []RequestInitParameters `json:"request,omitempty" tf:"request,omitempty"` + + // (Block List) Variables to extract from the request response (see below for nested schema) + // Variables to extract from the request response + Variables []VariablesInitParameters `json:"variables,omitempty" tf:"variables,omitempty"` +} + +type EntriesObservation struct { + + // (Block List) Assertions to make on the request response (see below for nested schema) + // Assertions to make on the request response + Assertions []AssertionsObservation `json:"assertions,omitempty" tf:"assertions,omitempty"` + + // (Block Set, Max: 1) An individual MultiHTTP request (see below for nested schema) + // An individual MultiHTTP request + Request []RequestObservation `json:"request,omitempty" tf:"request,omitempty"` + + // (Block List) Variables to extract from the request response (see below for nested schema) + // Variables to extract from the request response + Variables []VariablesObservation `json:"variables,omitempty" tf:"variables,omitempty"` +} + +type EntriesParameters struct { + + // (Block List) Assertions to make on the request response (see below for nested schema) + // Assertions to make on the request response + // +kubebuilder:validation:Optional + Assertions []AssertionsParameters `json:"assertions,omitempty" tf:"assertions,omitempty"` + + // (Block Set, Max: 1) An individual MultiHTTP request (see below for nested schema) + // An individual MultiHTTP request + // +kubebuilder:validation:Optional + Request []RequestParameters `json:"request,omitempty" tf:"request,omitempty"` + + // (Block List) Variables to extract from the request response (see below for nested schema) + // Variables to extract from the request response + // +kubebuilder:validation:Optional + Variables []VariablesParameters `json:"variables,omitempty" tf:"variables,omitempty"` +} + type FailIfHeaderMatchesRegexpInitParameters struct { // (Boolean) Allow header to be missing from responses. Defaults to false. @@ -491,6 +661,10 @@ type HTTPInitParameters struct { // Do not follow redirects. Defaults to `false`. NoFollowRedirects *bool `json:"noFollowRedirects,omitempty" tf:"no_follow_redirects,omitempty"` + // (Set of String) The HTTP headers sent to the proxy URL + // The HTTP headers sent to the proxy URL + ProxyConnectHeaders []*string `json:"proxyConnectHeaders,omitempty" tf:"proxy_connect_headers,omitempty"` + // (String) Proxy URL. // Proxy URL. ProxyURL *string `json:"proxyUrl,omitempty" tf:"proxy_url,omitempty"` @@ -499,8 +673,8 @@ type HTTPInitParameters struct { // TLS config. TLSConfig []TLSConfigInitParameters `json:"tlsConfig,omitempty" tf:"tls_config,omitempty"` - // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2 - // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2` + // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 + // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` ValidHTTPVersions []*string `json:"validHttpVersions,omitempty" tf:"valid_http_versions,omitempty"` // (Set of Number) Accepted status codes. If unset, defaults to 2xx. @@ -566,6 +740,10 @@ type HTTPObservation struct { // Do not follow redirects. Defaults to `false`. NoFollowRedirects *bool `json:"noFollowRedirects,omitempty" tf:"no_follow_redirects,omitempty"` + // (Set of String) The HTTP headers sent to the proxy URL + // The HTTP headers sent to the proxy URL + ProxyConnectHeaders []*string `json:"proxyConnectHeaders,omitempty" tf:"proxy_connect_headers,omitempty"` + // (String) Proxy URL. // Proxy URL. ProxyURL *string `json:"proxyUrl,omitempty" tf:"proxy_url,omitempty"` @@ -574,8 +752,8 @@ type HTTPObservation struct { // TLS config. TLSConfig []TLSConfigObservation `json:"tlsConfig,omitempty" tf:"tls_config,omitempty"` - // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2 - // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2` + // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 + // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` ValidHTTPVersions []*string `json:"validHttpVersions,omitempty" tf:"valid_http_versions,omitempty"` // (Set of Number) Accepted status codes. If unset, defaults to 2xx. @@ -655,6 +833,11 @@ type HTTPParameters struct { // +kubebuilder:validation:Optional NoFollowRedirects *bool `json:"noFollowRedirects,omitempty" tf:"no_follow_redirects,omitempty"` + // (Set of String) The HTTP headers sent to the proxy URL + // The HTTP headers sent to the proxy URL + // +kubebuilder:validation:Optional + ProxyConnectHeaders []*string `json:"proxyConnectHeaders,omitempty" tf:"proxy_connect_headers,omitempty"` + // (String) Proxy URL. // Proxy URL. // +kubebuilder:validation:Optional @@ -665,8 +848,8 @@ type HTTPParameters struct { // +kubebuilder:validation:Optional TLSConfig []TLSConfigParameters `json:"tlsConfig,omitempty" tf:"tls_config,omitempty"` - // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2 - // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2` + // (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 + // List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0` // +kubebuilder:validation:Optional ValidHTTPVersions []*string `json:"validHttpVersions,omitempty" tf:"valid_http_versions,omitempty"` @@ -676,6 +859,60 @@ type HTTPParameters struct { ValidStatusCodes []*float64 `json:"validStatusCodes,omitempty" tf:"valid_status_codes,omitempty"` } +type HeadersInitParameters struct { + + // (String) Name of the header to send + // Name of the header to send + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the header to send + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type HeadersObservation struct { + + // (String) Name of the header to send + // Name of the header to send + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the header to send + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type HeadersParameters struct { + + // (String) Name of the header to send + // Name of the header to send + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the header to send + // +kubebuilder:validation:Optional + Value *string `json:"value" tf:"value,omitempty"` +} + +type MultihttpInitParameters struct { + + // (Block List) (see below for nested schema) + Entries []EntriesInitParameters `json:"entries,omitempty" tf:"entries,omitempty"` +} + +type MultihttpObservation struct { + + // (Block List) (see below for nested schema) + Entries []EntriesObservation `json:"entries,omitempty" tf:"entries,omitempty"` +} + +type MultihttpParameters struct { + + // (Block List) (see below for nested schema) + // +kubebuilder:validation:Optional + Entries []EntriesParameters `json:"entries,omitempty" tf:"entries,omitempty"` +} + type PingInitParameters struct { // bit in the IP-header. Only works with ipV4. Defaults to false. @@ -737,6 +974,41 @@ type PingParameters struct { SourceIPAddress *string `json:"sourceIpAddress,omitempty" tf:"source_ip_address,omitempty"` } +type QueryFieldsInitParameters struct { + + // (String) Name of the header to send + // Name of the query field to send + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the query field to send + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type QueryFieldsObservation struct { + + // (String) Name of the header to send + // Name of the query field to send + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the query field to send + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type QueryFieldsParameters struct { + + // (String) Name of the header to send + // Name of the query field to send + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (String) The value of the assertion + // Value of the query field to send + // +kubebuilder:validation:Optional + Value *string `json:"value" tf:"value,omitempty"` +} + type QueryResponseInitParameters struct { // (String) Response to expect. @@ -785,6 +1057,80 @@ type QueryResponseParameters struct { StartTLS *bool `json:"startTls,omitempty" tf:"start_tls,omitempty"` } +type RequestInitParameters struct { + + // (String) The body of the HTTP request used in probe. + // The body of the HTTP request used in probe. + Body []BodyInitParameters `json:"body,omitempty" tf:"body,omitempty"` + + // (Set of String) The HTTP headers set for the probe. + // The headers to send with the request + Headers []HeadersInitParameters `json:"headers,omitempty" tf:"headers,omitempty"` + + // (String) Request method. One of GET, CONNECT, DELETE, HEAD, OPTIONS, POST, PUT, TRACE Defaults to GET. + // The HTTP method to use + Method *string `json:"method,omitempty" tf:"method,omitempty"` + + // (Block Set) Query fields to send with the request (see below for nested schema) + // Query fields to send with the request + QueryFields []QueryFieldsInitParameters `json:"queryFields,omitempty" tf:"query_fields,omitempty"` + + // (String) The URL for the request + // The URL for the request + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type RequestObservation struct { + + // (String) The body of the HTTP request used in probe. + // The body of the HTTP request used in probe. + Body []BodyObservation `json:"body,omitempty" tf:"body,omitempty"` + + // (Set of String) The HTTP headers set for the probe. + // The headers to send with the request + Headers []HeadersObservation `json:"headers,omitempty" tf:"headers,omitempty"` + + // (String) Request method. One of GET, CONNECT, DELETE, HEAD, OPTIONS, POST, PUT, TRACE Defaults to GET. + // The HTTP method to use + Method *string `json:"method,omitempty" tf:"method,omitempty"` + + // (Block Set) Query fields to send with the request (see below for nested schema) + // Query fields to send with the request + QueryFields []QueryFieldsObservation `json:"queryFields,omitempty" tf:"query_fields,omitempty"` + + // (String) The URL for the request + // The URL for the request + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type RequestParameters struct { + + // (String) The body of the HTTP request used in probe. + // The body of the HTTP request used in probe. + // +kubebuilder:validation:Optional + Body []BodyParameters `json:"body,omitempty" tf:"body,omitempty"` + + // (Set of String) The HTTP headers set for the probe. + // The headers to send with the request + // +kubebuilder:validation:Optional + Headers []HeadersParameters `json:"headers,omitempty" tf:"headers,omitempty"` + + // (String) Request method. One of GET, CONNECT, DELETE, HEAD, OPTIONS, POST, PUT, TRACE Defaults to GET. + // The HTTP method to use + // +kubebuilder:validation:Optional + Method *string `json:"method" tf:"method,omitempty"` + + // (Block Set) Query fields to send with the request (see below for nested schema) + // Query fields to send with the request + // +kubebuilder:validation:Optional + QueryFields []QueryFieldsParameters `json:"queryFields,omitempty" tf:"query_fields,omitempty"` + + // (String) The URL for the request + // The URL for the request + // +kubebuilder:validation:Optional + URL *string `json:"url" tf:"url,omitempty"` +} + type SettingsInitParameters struct { // (Block Set, Max: 1) Settings for DNS check. The target must be a valid hostname (or IP address for PTR records). (see below for nested schema) @@ -795,6 +1141,10 @@ type SettingsInitParameters struct { // Settings for HTTP check. The target must be a URL (http or https). HTTP []HTTPInitParameters `json:"http,omitempty" tf:"http,omitempty"` + // (Block Set, Max: 1) Settings for MultiHTTP check. The target must be a URL (http or https) (see below for nested schema) + // Settings for MultiHTTP check. The target must be a URL (http or https) + Multihttp []MultihttpInitParameters `json:"multihttp,omitempty" tf:"multihttp,omitempty"` + // (Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. (see below for nested schema) // Settings for ping (ICMP) check. The target must be a valid hostname or IP address. Ping []PingInitParameters `json:"ping,omitempty" tf:"ping,omitempty"` @@ -818,6 +1168,10 @@ type SettingsObservation struct { // Settings for HTTP check. The target must be a URL (http or https). HTTP []HTTPObservation `json:"http,omitempty" tf:"http,omitempty"` + // (Block Set, Max: 1) Settings for MultiHTTP check. The target must be a URL (http or https) (see below for nested schema) + // Settings for MultiHTTP check. The target must be a URL (http or https) + Multihttp []MultihttpObservation `json:"multihttp,omitempty" tf:"multihttp,omitempty"` + // (Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. (see below for nested schema) // Settings for ping (ICMP) check. The target must be a valid hostname or IP address. Ping []PingObservation `json:"ping,omitempty" tf:"ping,omitempty"` @@ -843,6 +1197,11 @@ type SettingsParameters struct { // +kubebuilder:validation:Optional HTTP []HTTPParameters `json:"http,omitempty" tf:"http,omitempty"` + // (Block Set, Max: 1) Settings for MultiHTTP check. The target must be a URL (http or https) (see below for nested schema) + // Settings for MultiHTTP check. The target must be a URL (http or https) + // +kubebuilder:validation:Optional + Multihttp []MultihttpParameters `json:"multihttp,omitempty" tf:"multihttp,omitempty"` + // (Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. (see below for nested schema) // Settings for ping (ICMP) check. The target must be a valid hostname or IP address. // +kubebuilder:validation:Optional @@ -1218,6 +1577,67 @@ type ValidateAuthorityRrsParameters struct { FailIfNotMatchesRegexp []*string `json:"failIfNotMatchesRegexp,omitempty" tf:"fail_if_not_matches_regexp,omitempty"` } +type VariablesInitParameters struct { + + // (String) The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + // The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + Attribute *string `json:"attribute,omitempty" tf:"attribute,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression to when finding the variable. Should start with $. Only use when type is JSON_PATH or REGEX + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) Name of the header to send + // The name of the variable to extract + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The method of finding the variable value to extract. JSON_PATH, REGEX, CSS_SELECTOR + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type VariablesObservation struct { + + // (String) The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + // The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + Attribute *string `json:"attribute,omitempty" tf:"attribute,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression to when finding the variable. Should start with $. Only use when type is JSON_PATH or REGEX + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) Name of the header to send + // The name of the variable to extract + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The method of finding the variable value to extract. JSON_PATH, REGEX, CSS_SELECTOR + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type VariablesParameters struct { + + // (String) The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + // The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR + // +kubebuilder:validation:Optional + Attribute *string `json:"attribute,omitempty" tf:"attribute,omitempty"` + + // (String) The expression of the assertion. Should start with $. + // The expression to when finding the variable. Should start with $. Only use when type is JSON_PATH or REGEX + // +kubebuilder:validation:Optional + Expression *string `json:"expression,omitempty" tf:"expression,omitempty"` + + // (String) Name of the header to send + // The name of the variable to extract + // +kubebuilder:validation:Optional + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION + // The method of finding the variable value to extract. JSON_PATH, REGEX, CSS_SELECTOR + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + // CheckSpec defines the desired state of Check type CheckSpec struct { v1.ResourceSpec `json:",inline"` diff --git a/apis/sm/v1alpha1/zz_generated.deepcopy.go b/apis/sm/v1alpha1/zz_generated.deepcopy.go index eda81e3..c5afa7a 100644 --- a/apis/sm/v1alpha1/zz_generated.deepcopy.go +++ b/apis/sm/v1alpha1/zz_generated.deepcopy.go @@ -13,6 +13,126 @@ import ( runtime "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionsInitParameters) DeepCopyInto(out *AssertionsInitParameters) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Subject != nil { + in, out := &in.Subject, &out.Subject + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionsInitParameters. +func (in *AssertionsInitParameters) DeepCopy() *AssertionsInitParameters { + if in == nil { + return nil + } + out := new(AssertionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionsObservation) DeepCopyInto(out *AssertionsObservation) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Subject != nil { + in, out := &in.Subject, &out.Subject + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionsObservation. +func (in *AssertionsObservation) DeepCopy() *AssertionsObservation { + if in == nil { + return nil + } + out := new(AssertionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionsParameters) DeepCopyInto(out *AssertionsParameters) { + *out = *in + if in.Condition != nil { + in, out := &in.Condition, &out.Condition + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Subject != nil { + in, out := &in.Subject, &out.Subject + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionsParameters. +func (in *AssertionsParameters) DeepCopy() *AssertionsParameters { + if in == nil { + return nil + } + out := new(AssertionsParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BasicAuthInitParameters) DeepCopyInto(out *BasicAuthInitParameters) { *out = *in @@ -88,6 +208,96 @@ func (in *BasicAuthParameters) DeepCopy() *BasicAuthParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BodyInitParameters) DeepCopyInto(out *BodyInitParameters) { + *out = *in + if in.ContentEncoding != nil { + in, out := &in.ContentEncoding, &out.ContentEncoding + *out = new(string) + **out = **in + } + if in.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BodyInitParameters. +func (in *BodyInitParameters) DeepCopy() *BodyInitParameters { + if in == nil { + return nil + } + out := new(BodyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BodyObservation) DeepCopyInto(out *BodyObservation) { + *out = *in + if in.ContentEncoding != nil { + in, out := &in.ContentEncoding, &out.ContentEncoding + *out = new(string) + **out = **in + } + if in.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BodyObservation. +func (in *BodyObservation) DeepCopy() *BodyObservation { + if in == nil { + return nil + } + out := new(BodyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BodyParameters) DeepCopyInto(out *BodyParameters) { + *out = *in + if in.ContentEncoding != nil { + in, out := &in.ContentEncoding, &out.ContentEncoding + *out = new(string) + **out = **in + } + if in.ContentType != nil { + in, out := &in.ContentType, &out.ContentType + *out = new(string) + **out = **in + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BodyParameters. +func (in *BodyParameters) DeepCopy() *BodyParameters { + if in == nil { + return nil + } + out := new(BodyParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Check) DeepCopyInto(out *Check) { *out = *in @@ -675,6 +885,114 @@ func (in *DNSParameters) DeepCopy() *DNSParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntriesInitParameters) DeepCopyInto(out *EntriesInitParameters) { + *out = *in + if in.Assertions != nil { + in, out := &in.Assertions, &out.Assertions + *out = make([]AssertionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]RequestInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntriesInitParameters. +func (in *EntriesInitParameters) DeepCopy() *EntriesInitParameters { + if in == nil { + return nil + } + out := new(EntriesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntriesObservation) DeepCopyInto(out *EntriesObservation) { + *out = *in + if in.Assertions != nil { + in, out := &in.Assertions, &out.Assertions + *out = make([]AssertionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]RequestObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntriesObservation. +func (in *EntriesObservation) DeepCopy() *EntriesObservation { + if in == nil { + return nil + } + out := new(EntriesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EntriesParameters) DeepCopyInto(out *EntriesParameters) { + *out = *in + if in.Assertions != nil { + in, out := &in.Assertions, &out.Assertions + *out = make([]AssertionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]RequestParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Variables != nil { + in, out := &in.Variables, &out.Variables + *out = make([]VariablesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EntriesParameters. +func (in *EntriesParameters) DeepCopy() *EntriesParameters { + if in == nil { + return nil + } + out := new(EntriesParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *FailIfHeaderMatchesRegexpInitParameters) DeepCopyInto(out *FailIfHeaderMatchesRegexpInitParameters) { *out = *in @@ -952,6 +1270,17 @@ func (in *HTTPInitParameters) DeepCopyInto(out *HTTPInitParameters) { *out = new(bool) **out = **in } + if in.ProxyConnectHeaders != nil { + in, out := &in.ProxyConnectHeaders, &out.ProxyConnectHeaders + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ProxyURL != nil { in, out := &in.ProxyURL, &out.ProxyURL *out = new(string) @@ -1095,6 +1424,17 @@ func (in *HTTPObservation) DeepCopyInto(out *HTTPObservation) { *out = new(bool) **out = **in } + if in.ProxyConnectHeaders != nil { + in, out := &in.ProxyConnectHeaders, &out.ProxyConnectHeaders + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ProxyURL != nil { in, out := &in.ProxyURL, &out.ProxyURL *out = new(string) @@ -1238,6 +1578,17 @@ func (in *HTTPParameters) DeepCopyInto(out *HTTPParameters) { *out = new(bool) **out = **in } + if in.ProxyConnectHeaders != nil { + in, out := &in.ProxyConnectHeaders, &out.ProxyConnectHeaders + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } if in.ProxyURL != nil { in, out := &in.ProxyURL, &out.ProxyURL *out = new(string) @@ -1284,6 +1635,81 @@ func (in *HTTPParameters) DeepCopy() *HTTPParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadersInitParameters) DeepCopyInto(out *HeadersInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadersInitParameters. +func (in *HeadersInitParameters) DeepCopy() *HeadersInitParameters { + if in == nil { + return nil + } + out := new(HeadersInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadersObservation) DeepCopyInto(out *HeadersObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadersObservation. +func (in *HeadersObservation) DeepCopy() *HeadersObservation { + if in == nil { + return nil + } + out := new(HeadersObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HeadersParameters) DeepCopyInto(out *HeadersParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadersParameters. +func (in *HeadersParameters) DeepCopy() *HeadersParameters { + if in == nil { + return nil + } + out := new(HeadersParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Installation) DeepCopyInto(out *Installation) { *out = *in @@ -1459,12 +1885,78 @@ func (in *InstallationStatus) DeepCopyInto(out *InstallationStatus) { in.AtProvider.DeepCopyInto(&out.AtProvider) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationStatus. -func (in *InstallationStatus) DeepCopy() *InstallationStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstallationStatus. +func (in *InstallationStatus) DeepCopy() *InstallationStatus { + if in == nil { + return nil + } + out := new(InstallationStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MultihttpInitParameters) DeepCopyInto(out *MultihttpInitParameters) { + *out = *in + if in.Entries != nil { + in, out := &in.Entries, &out.Entries + *out = make([]EntriesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultihttpInitParameters. +func (in *MultihttpInitParameters) DeepCopy() *MultihttpInitParameters { + if in == nil { + return nil + } + out := new(MultihttpInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MultihttpObservation) DeepCopyInto(out *MultihttpObservation) { + *out = *in + if in.Entries != nil { + in, out := &in.Entries, &out.Entries + *out = make([]EntriesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultihttpObservation. +func (in *MultihttpObservation) DeepCopy() *MultihttpObservation { + if in == nil { + return nil + } + out := new(MultihttpObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MultihttpParameters) DeepCopyInto(out *MultihttpParameters) { + *out = *in + if in.Entries != nil { + in, out := &in.Entries, &out.Entries + *out = make([]EntriesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultihttpParameters. +func (in *MultihttpParameters) DeepCopy() *MultihttpParameters { if in == nil { return nil } - out := new(InstallationStatus) + out := new(MultihttpParameters) in.DeepCopyInto(out) return out } @@ -1846,6 +2338,81 @@ func (in *ProbeStatus) DeepCopy() *ProbeStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryFieldsInitParameters) DeepCopyInto(out *QueryFieldsInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryFieldsInitParameters. +func (in *QueryFieldsInitParameters) DeepCopy() *QueryFieldsInitParameters { + if in == nil { + return nil + } + out := new(QueryFieldsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryFieldsObservation) DeepCopyInto(out *QueryFieldsObservation) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryFieldsObservation. +func (in *QueryFieldsObservation) DeepCopy() *QueryFieldsObservation { + if in == nil { + return nil + } + out := new(QueryFieldsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QueryFieldsParameters) DeepCopyInto(out *QueryFieldsParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryFieldsParameters. +func (in *QueryFieldsParameters) DeepCopy() *QueryFieldsParameters { + if in == nil { + return nil + } + out := new(QueryFieldsParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *QueryResponseInitParameters) DeepCopyInto(out *QueryResponseInitParameters) { *out = *in @@ -1936,6 +2503,144 @@ func (in *QueryResponseParameters) DeepCopy() *QueryResponseParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestInitParameters) DeepCopyInto(out *RequestInitParameters) { + *out = *in + if in.Body != nil { + in, out := &in.Body, &out.Body + *out = make([]BodyInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make([]HeadersInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Method != nil { + in, out := &in.Method, &out.Method + *out = new(string) + **out = **in + } + if in.QueryFields != nil { + in, out := &in.QueryFields, &out.QueryFields + *out = make([]QueryFieldsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestInitParameters. +func (in *RequestInitParameters) DeepCopy() *RequestInitParameters { + if in == nil { + return nil + } + out := new(RequestInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestObservation) DeepCopyInto(out *RequestObservation) { + *out = *in + if in.Body != nil { + in, out := &in.Body, &out.Body + *out = make([]BodyObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make([]HeadersObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Method != nil { + in, out := &in.Method, &out.Method + *out = new(string) + **out = **in + } + if in.QueryFields != nil { + in, out := &in.QueryFields, &out.QueryFields + *out = make([]QueryFieldsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestObservation. +func (in *RequestObservation) DeepCopy() *RequestObservation { + if in == nil { + return nil + } + out := new(RequestObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestParameters) DeepCopyInto(out *RequestParameters) { + *out = *in + if in.Body != nil { + in, out := &in.Body, &out.Body + *out = make([]BodyParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make([]HeadersParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Method != nil { + in, out := &in.Method, &out.Method + *out = new(string) + **out = **in + } + if in.QueryFields != nil { + in, out := &in.QueryFields, &out.QueryFields + *out = make([]QueryFieldsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestParameters. +func (in *RequestParameters) DeepCopy() *RequestParameters { + if in == nil { + return nil + } + out := new(RequestParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SettingsInitParameters) DeepCopyInto(out *SettingsInitParameters) { *out = *in @@ -1953,6 +2658,13 @@ func (in *SettingsInitParameters) DeepCopyInto(out *SettingsInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Multihttp != nil { + in, out := &in.Multihttp, &out.Multihttp + *out = make([]MultihttpInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Ping != nil { in, out := &in.Ping, &out.Ping *out = make([]PingInitParameters, len(*in)) @@ -2003,6 +2715,13 @@ func (in *SettingsObservation) DeepCopyInto(out *SettingsObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Multihttp != nil { + in, out := &in.Multihttp, &out.Multihttp + *out = make([]MultihttpObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Ping != nil { in, out := &in.Ping, &out.Ping *out = make([]PingObservation, len(*in)) @@ -2053,6 +2772,13 @@ func (in *SettingsParameters) DeepCopyInto(out *SettingsParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Multihttp != nil { + in, out := &in.Multihttp, &out.Multihttp + *out = make([]MultihttpParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Ping != nil { in, out := &in.Ping, &out.Ping *out = make([]PingParameters, len(*in)) @@ -2860,3 +3586,108 @@ func (in *ValidateAuthorityRrsParameters) DeepCopy() *ValidateAuthorityRrsParame in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesInitParameters) DeepCopyInto(out *VariablesInitParameters) { + *out = *in + if in.Attribute != nil { + in, out := &in.Attribute, &out.Attribute + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesInitParameters. +func (in *VariablesInitParameters) DeepCopy() *VariablesInitParameters { + if in == nil { + return nil + } + out := new(VariablesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesObservation) DeepCopyInto(out *VariablesObservation) { + *out = *in + if in.Attribute != nil { + in, out := &in.Attribute, &out.Attribute + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesObservation. +func (in *VariablesObservation) DeepCopy() *VariablesObservation { + if in == nil { + return nil + } + out := new(VariablesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VariablesParameters) DeepCopyInto(out *VariablesParameters) { + *out = *in + if in.Attribute != nil { + in, out := &in.Attribute, &out.Attribute + *out = new(string) + **out = **in + } + if in.Expression != nil { + in, out := &in.Expression, &out.Expression + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariablesParameters. +func (in *VariablesParameters) DeepCopy() *VariablesParameters { + if in == nil { + return nil + } + out := new(VariablesParameters) + in.DeepCopyInto(out) + return out +} diff --git a/config/grafana/config.go b/config/grafana/config.go index 009a5e7..a03d9ac 100644 --- a/config/grafana/config.go +++ b/config/grafana/config.go @@ -147,6 +147,14 @@ func Configure(p *ujconfig.Provider) { Extractor: SelfPackagePath + ".UIDExtractor()", } }) + p.AddResourceConfigurator("grafana_folder", func(r *ujconfig.Resource) { + r.References["parent_folder_uid"] = ujconfig.Reference{ + TerraformName: "grafana_folder", + RefFieldName: "FolderRef", + SelectorFieldName: "FolderSelector", + Extractor: SelfPackagePath + ".UIDExtractor()", + } + }) p.AddResourceConfigurator("grafana_folder_permission", func(r *ujconfig.Resource) { r.References["folder_uid"] = ujconfig.Reference{ TerraformName: "grafana_folder", diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index fbf5991..674fa9c 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -343,10 +343,13 @@ resources: } argumentDocs: addresses: (List of String) The addresses to send emails to. + agent_id: (String) Agent ID added to the request payload when using APIAPP. alertmanager: (Block List) A contact point that sends notifications to other Alertmanager instances. (see below for nested schema) api_key: (String, Sensitive) The OpsGenie API key to use. api_secret: (String, Sensitive) The Threema API key. api_token: (String, Sensitive) The Pushover API token. + api_url: (String) The URL to send webhook requests to. + api_version: '(String) The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to v2.' authorization_credentials: (String, Sensitive) Allows a custom authorization scheme - attaches an auth header with this value. Do not use in conjunction with basic auth parameters. authorization_scheme: (String) Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters. auto_close: (Boolean) Whether to auto-close alerts in OpsGenie when they resolve in the Alertmanager. @@ -358,12 +361,16 @@ resources: class: (String) The class or type of event, for example ping failure. client: (String) The name of the monitoring client that is triggering this event. client_url: (String) The URL of the monitoring client that is triggering this event. + cluster_id: (String) The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3' component: (String) The component being affected by the event. - description: (String) A templated high-level description to use for the alert. - details: (Map of String) A set of arbitrary key/value pairs that provide further detail about the incident. + corp_id: (String) Corp ID used to get token when using APIAPP. + description: (String) The templated description of the Kafka message. + details: (String) The templated details to include with the message. device: (String) Comma-separated list of devices to which the event is associated. dingding: (Block List) A contact point that sends notifications to DingDing. (see below for nested schema) + disable_notifications: (Boolean) When set users will receive a notification with no sound. disable_resolve_message: (Boolean) Whether to disable sending resolve messages. Defaults to false. + disable_web_page_preview: (Boolean) When set it disables link previews for links in the message. discord: (Block List) A contact point that sends notifications as Discord messages (see below for nested schema) email: (Block List) A contact point that sends notifications to an email address. (see below for nested schema) endpoint_url: (String) Use this to override the Slack API endpoint URL to send requests to. @@ -379,25 +386,34 @@ resources: id: (String) The ID of this resource. integration_key: (String, Sensitive) The PagerDuty API key. kafka: (Block List) A contact point that publishes notifications to Apache Kafka topics. (see below for nested schema) + line: (Block List) A contact point that sends notifications to LINE.me. (see below for nested schema) max_alerts: (Number) The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit. mention_channel: (String) Describes how to ping the slack channel that messages are being sent to. Options are here for an @here ping, channel for @channel, or empty for no ping. mention_groups: (String) Comma-separated list of groups to mention in the message. mention_users: (String) Comma-separated list of users to mention in the message. message: (String) The templated content of the message. message_type: (String) The format of message to send - either 'link' or 'actionCard' + msg_type: '(String) The type of them message. Supported: markdown, text. Default: text.' name: (String) The name of the contact point. namespace: (String) The namespace in which the check resides. ok_priority: (Number) The priority level of the resolved event. ok_sound: (String) The sound associated with the resolved notification. + oncall: (Block List) A contact point that sends notifications to Grafana On-Call. (see below for nested schema) opsgenie: (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) override_priority: (Boolean) Whether to allow the alert priority to be configured via the value of the og_priority annotation on the alert. pagerduty: (Block List) A contact point that sends notifications to PagerDuty. (see below for nested schema) + parse_mode: '(String) Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default.' + password: (String, Sensitive) The password to use when making a call to the Kafka REST Proxy priority: (Number) The priority level of the event. + protect_content: (Boolean) When set it protects the contents of the message from forwarding and saving. pushover: (Block List) A contact point that sends notifications to Pushover. (see below for nested schema) recipient: (String) Channel, private group, or IM channel (can be an encoded ID or a name) to send messages to. recipient_id: (String) The ID of the recipient of the message. + responders: (Block List) Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+. (see below for nested schema) rest_proxy_url: (String, Sensitive) The URL of the Kafka REST proxy to send requests to. retry: (Number) How often, in seconds, the Pushover servers will send the same notification to the user. + room_id: (String) ID of the Webex Teams room where to send the messages. + secret: (String, Sensitive) The secret key required to obtain access token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps to create APIAPP. section_title: (String) The templated subtitle for each message section. send_tags_as: (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, details, both, or empty to use the default behavior of Tags. sensugo: (Block List) A contact point that sends notifications to SensuGo. (see below for nested schema) @@ -414,14 +430,18 @@ resources: text: (String) Templated content of the message. threema: (Block List) A contact point that sends notifications to Threema. (see below for nested schema) title: (String) The templated title of the message. - token: (String, Sensitive) A Slack API token,for sending messages directly without the webhook method. + to_user: '(String) The ID of user that should receive the message. Multiple entries should be separated by ''|''. Default: @all.' + token: (String, Sensitive) The bearer token used to authorize the client. topic: (String) The name of the Kafka topic to publish to. + type: '(String) Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values.' uid: (String) The UID of the contact point. + upload_image: (Boolean) Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications. url: (String) The URL of the Alertmanager instance. use_discord_username: (Boolean) Whether to use the bot account's plain username instead of "Grafana." Defaults to false. user_key: (String, Sensitive) The Pushover user key. - username: (String) Username for the bot to use. + username: (String) The user name to use when making a call to the Kafka REST Proxy victorops: (Block List) A contact point that sends notifications to VictorOps (now known as Splunk OnCall). (see below for nested schema) + webex: (Block List) A contact point that sends notifications to Cisco Webex. (see below for nested schema) webhook: '(Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config (see below for nested schema)' wecom: (Block List) A contact point that sends notifications to WeCom. (see below for nested schema) importStatements: @@ -432,11 +452,20 @@ resources: name: grafana_dashboard title: grafana_dashboard Resource - terraform-provider-grafana examples: - - name: metrics + - name: test manifest: |- { - "config_json": "${file(\"grafana-dashboard.json\")}" + "config_json": "${jsonencode({\n \"title\" : \"My Dashboard\",\n \"uid\" : \"my-dashboard-uid\"\n })}", + "folder": "${grafana_folder.test.uid}" } + references: + folder: grafana_folder.test.uid + dependencies: + grafana_folder.test: |- + { + "title": "My Folder", + "uid": "my-folder-uid" + } argumentDocs: config_json: (String) The complete dashboard model JSON. dashboard_id: (Number) The numeric ID of the dashboard computed by Grafana. @@ -454,7 +483,7 @@ resources: terraform import grafana_dashboard.dashboard_name {{org_id}}:{{dashboard_uid}} # When "org_id" is set on the resource grafana_dashboard_permission: subCategory: Grafana OSS - description: Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/dashboard_permissions/ + description: Manages the entire set of permissions for a dashboard. Permissions that aren't specified when applying this resource will be removed. name: grafana_dashboard_permission title: grafana_dashboard_permission Resource - terraform-provider-grafana examples: @@ -484,7 +513,7 @@ resources: dependencies: grafana_dashboard.metrics: |- { - "config_json": "${file(\"grafana-dashboard.json\")}" + "config_json": "${jsonencode({\n \"title\" : \"My Dashboard\",\n \"uid\" : \"my-dashboard-uid\"\n })}" } grafana_team.team: |- { @@ -492,7 +521,9 @@ resources: } grafana_user.user: |- { - "email": "user.name@example.com" + "email": "user.name@example.com", + "login": "user.name", + "password": "my-password" } argumentDocs: dashboard_id: '(Number, Deprecated) ID of the dashboard to apply permissions to. Deprecated: use dashboard_uid instead.' @@ -500,12 +531,107 @@ resources: id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. permission: (String) Permission to associate with item. Must be one of View, Edit, or Admin. - permissions: '(Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema)' + permissions: (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) role: (String) Manage permissions for Viewer or Editor roles. team_id: (String) ID of the team to manage permissions for. Defaults to 0. user_id: (String) ID of the user or service account to manage permissions for. Defaults to 0. importStatements: - terraform import grafana_dashboard_permission.dashboard_name {{dashboard_uid}} + grafana_dashboard_public: + subCategory: Grafana OSS + description: 'Manages Grafana public dashboards. Note: This resource is available only with Grafana 10.2+. Official documentation https://grafana.com/docs/grafana/latest/dashboards/dashboard-public/HTTP API https://grafana.com/docs/grafana/next/developers/http_api/dashboard_public/' + name: grafana_dashboard_public + title: grafana_dashboard_public Resource - terraform-provider-grafana + examples: + - name: my_public_dashboard + manifest: |- + { + "access_token": "e99e4275da6f410d83760eefa934d8d2", + "annotations_enabled": true, + "dashboard_uid": "${grafana_dashboard.test_dash.uid}", + "is_enabled": true, + "org_id": "${grafana_organization.my_org.org_id}", + "share": "public", + "time_selection_enabled": true, + "uid": "my-custom-public-uid" + } + references: + dashboard_uid: grafana_dashboard.test_dash.uid + org_id: grafana_organization.my_org.org_id + dependencies: + grafana_dashboard.test_dash: |- + { + "config_json": "${jsonencode({\n \"title\" : \"My Terraform Dashboard\",\n \"uid\" : \"my-dashboard-uid\"\n })}", + "folder": "${grafana_folder.my_folder.id}", + "org_id": "${grafana_organization.my_org.org_id}" + } + grafana_dashboard.test_dash2: |- + { + "config_json": "${jsonencode({\n \"title\" : \"My Terraform Dashboard2\",\n \"uid\" : \"my-dashboard-uid2\"\n })}", + "org_id": "${grafana_organization.my_org2.org_id}" + } + grafana_folder.my_folder: |- + { + "org_id": "${grafana_organization.my_org.org_id}", + "title": "test Folder" + } + grafana_organization.my_org: |- + { + "name": "test 1" + } + grafana_organization.my_org2: |- + { + "name": "test 2" + } + - name: my_public_dashboard2 + manifest: |- + { + "dashboard_uid": "${grafana_dashboard.test_dash2.uid}", + "org_id": "${grafana_organization.my_org2.org_id}", + "share": "public" + } + references: + dashboard_uid: grafana_dashboard.test_dash2.uid + org_id: grafana_organization.my_org2.org_id + dependencies: + grafana_dashboard.test_dash: |- + { + "config_json": "${jsonencode({\n \"title\" : \"My Terraform Dashboard\",\n \"uid\" : \"my-dashboard-uid\"\n })}", + "folder": "${grafana_folder.my_folder.id}", + "org_id": "${grafana_organization.my_org.org_id}" + } + grafana_dashboard.test_dash2: |- + { + "config_json": "${jsonencode({\n \"title\" : \"My Terraform Dashboard2\",\n \"uid\" : \"my-dashboard-uid2\"\n })}", + "org_id": "${grafana_organization.my_org2.org_id}" + } + grafana_folder.my_folder: |- + { + "org_id": "${grafana_organization.my_org.org_id}", + "title": "test Folder" + } + grafana_organization.my_org: |- + { + "name": "test 1" + } + grafana_organization.my_org2: |- + { + "name": "test 2" + } + argumentDocs: + access_token: (String) A public unique identifier of a public dashboard. This is used to construct its URL. It's automatically generated if not provided when creating a public dashboard. + annotations_enabled: (Boolean) Set to true to show annotations. The default value is false. + dashboard_uid: (String) The unique identifier of the original dashboard. + id: (String) The ID of this resource. + is_enabled: (Boolean) Set to true to enable the public dashboard. The default value is false. + org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + share: (String) Set the share mode. The default value is public. + time_selection_enabled: (Boolean) Set to true to enable the time picker in the public dashboard. The default value is false. + uid: (String) The unique identifier of a public dashboard. It's automatically generated if not provided when creating a public dashboard. + importStatements: + - |- + terraform import grafana_dashboard_public.dashboard_name {{dashboard_uid}}:{{public_dashboard_uid}} # To use the default provider org + terraform import grafana_dashboard_public.dashboard_name {org_id}}:{{dashboard_uid}}:{{public_dashboard_uid}} # When "org_id" is set on the resource grafana_data_source: subCategory: Grafana OSS description: Official documentation https://grafana.com/docs/grafana/latest/datasources/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/data_source/ The required arguments for this resource vary depending on the type of data source selected (via the 'type' argument). @@ -525,14 +651,12 @@ resources: { "basic_auth_enabled": true, "basic_auth_username": "username", - "database_name": "${influxdb_database.metrics.name}", + "database_name": "dbname", "json_data_encoded": "${jsonencode({\n authType = \"default\"\n basicAuthPassword = \"mypassword\"\n })}", "name": "myapp-metrics", "type": "influxdb", "url": "http://influxdb.example.net:8086/" } - references: - database_name: influxdb_database.metrics.name - name: cloudwatch manifest: |- { @@ -577,7 +701,7 @@ resources: terraform import grafana_data_source.by_uid {{org_id}}:{{datasource_uid}} # When "org_id" is set on the resource grafana_data_source_permission: subCategory: Grafana Enterprise - description: HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/datasource_permissions/ + description: Manages the entire set of permissions for a datasource. Permissions that aren't specified when applying this resource will be removed. name: grafana_data_source_permission title: grafana_data_source_permission Resource - terraform-provider-grafana examples: @@ -587,7 +711,7 @@ resources: "datasource_id": "${grafana_data_source.foo.id}", "permissions": [ { - "permission": "Query", + "permission": "Edit", "team_id": "${grafana_team.team.id}" }, { @@ -637,8 +761,8 @@ resources: datasource_id: (String) ID of the datasource to apply permissions to. id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. - permission: '(String) Permission to associate with item. Options: Query or Edit (Edit can only be used with Grafana v9.2.3+).' - permissions: '(Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema)' + permission: '(String) Permission to associate with item. Options: Query, Edit or Admin (Admin can only be used with Grafana v10.3.0+).' + permissions: (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) team_id: (String) ID of the team to manage permissions for. Defaults to 0. user_id: (String) ID of the user or service account to manage permissions for. Defaults to 0. importStatements: [] @@ -674,6 +798,7 @@ resources: argumentDocs: id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. + parent_folder_uid: '(String) The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance.' prevent_destroy_if_not_empty: (Boolean) Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to false. title: (String) The title of the folder. uid: (String) Unique identifier. @@ -684,7 +809,7 @@ resources: terraform import grafana_folder.by_uid {{folder_uid}} grafana_folder_permission: subCategory: Grafana OSS - description: Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/folder_permissions/ + description: Manages the entire set of permissions for a folder. Permissions that aren't specified when applying this resource will be removed. name: grafana_folder_permission title: grafana_folder_permission Resource - terraform-provider-grafana examples: @@ -722,18 +847,23 @@ resources: } grafana_user.user: |- { - "email": "user.name@example.com" + "email": "user.name@example.com", + "login": "user.name", + "password": "my-password" } argumentDocs: folder_uid: (String) The UID of the folder. id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. permission: (String) Permission to associate with item. Must be one of View, Edit, or Admin. - permissions: '(Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema)' + permissions: (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) role: (String) Manage permissions for Viewer or Editor roles. team_id: (String) ID of the team to manage permissions for. Defaults to 0. user_id: (String) ID of the user or service account to manage permissions for. Defaults to 0. - importStatements: [] + importStatements: + - |- + terraform import grafana_folder_permission.my_folder {{folder_uid}} # To use the default provider org + terraform import grafana_folder_permission.my_folder {{org_id}}:{{folder_uid}} # When "org_id" is set on the resource grafana_library_panel: subCategory: Grafana OSS description: Manages Grafana library panels. Official documentation https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/manage-library-panels/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/library_element/ @@ -743,8 +873,8 @@ resources: - name: test manifest: |- { - "model_json": "${jsonencode({\n title = \"updated name\",\n id = 12,\n version = 35\n })}", - "name": "updated name" + "model_json": "${jsonencode({\n gridPos = {\n x = 0\n y = 0\n h = 10\n w = 10\n }\n title = \"panel\"\n type = \"text\"\n version = 0\n })}", + "name": "panel" } argumentDocs: created: (String) Timestamp when the library panel was created. @@ -765,7 +895,7 @@ resources: importStatements: - terraform import grafana_library_panel.panel_name {{library_panel_slug}} grafana_machine_learning_holiday Resource - terraform-provider-grafana: - subCategory: Cloud + subCategory: Machine Learning description: 'A holiday describes time periods where a time series is expected to behave differently to normal. To use a holiday in a job, use its id in the holidays attribute of a grafana_machine_learning_job: terraform resource "grafana_machine_learning_job" "test_job" { ... holidays = [ grafana_machine_learning_holiday.my_holiday.id ] }' name: grafana_machine_learning_holiday Resource - terraform-provider-grafana title: grafana_machine_learning_holiday Resource - terraform-provider-grafana @@ -780,7 +910,7 @@ resources: start_time: (String) importStatements: [] grafana_machine_learning_job Resource - terraform-provider-grafana: - subCategory: Cloud + subCategory: Machine Learning description: A job defines the queries and model parameters for a machine learning task. name: grafana_machine_learning_job Resource - terraform-provider-grafana title: grafana_machine_learning_job Resource - terraform-provider-grafana @@ -800,7 +930,7 @@ resources: training_window: (Number) The data interval in seconds to train the data on. Defaults to 7776000. importStatements: [] grafana_machine_learning_outlier_detector Resource - terraform-provider-grafana: - subCategory: Cloud + subCategory: Machine Learning description: An outlier detector monitors the results of a query and reports when its values are outside normal bands. The normal band is configured by choice of algorithm, its sensitivity and other configuration. Visit https://grafana.com/docs/grafana-cloud/machine-learning/outlier-detection/ for more details. name: grafana_machine_learning_outlier_detector Resource - terraform-provider-grafana title: grafana_machine_learning_outlier_detector Resource - terraform-provider-grafana @@ -834,6 +964,7 @@ resources: argumentDocs: id: (String) The ID of this resource. name: (String) The name of the message template. + org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. template: (String) The content of the message template. importStatements: - terraform import grafana_message_template.message_template_name {{message_template_name}} @@ -852,6 +983,7 @@ resources: "1:7", "-1" ], + "location": "America/New_York", "months": [ "1:3", "december" @@ -879,6 +1011,7 @@ resources: end: (String) The time, in hh:mm format, of when the interval should end exclusively. id: (String) The ID of this resource. intervals: (Block List) The time intervals at which to mute notifications. (see below for nested schema) + location: (String) Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g "America/New_York" months: (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", or "may:august". name: (String) The name of the mute timing. start: (String) The time, in hh:mm format, of when the interval should begin inclusively. @@ -906,9 +1039,6 @@ resources: { "contact_point": "${grafana_contact_point.a_contact_point.name}", "continue": true, - "group_by": [ - "alertname" - ], "group_interval": "6m", "group_wait": "45s", "matcher": [ @@ -916,6 +1046,16 @@ resources: "label": "mylabel", "match": "=", "value": "myvalue" + }, + { + "label": "alertname", + "match": "=", + "value": "CPU Usage" + }, + { + "label": "Name", + "match": "=~", + "value": "host.*|host-b.*" } ], "mute_timings": [ @@ -992,7 +1132,7 @@ resources: id: (String) The ID of this resource. label: (String) The name of the label to match against. match: (String) The operator to apply when matching values of the given label. Allowed operators are = for equality, != for negated equality, =~ for regex equality, and !~ for negated regex equality. - matcher: (Block List) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) + matcher: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances. (see below for nested schema) mute_timings: (List of String) A list of mute timing names to apply to alerts that match this policy. policy: (Block List) Routing rules for specific label sets. (see below for nested schema) repeat_interval: (String) Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours. @@ -1160,9 +1300,9 @@ resources: source_link: (String) Template for a source link. team_id: (String) The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the grafana_oncall_team datasource. telegram: '(Block List, Max: 1) Telegram-specific settings for a route. (see below for nested schema)' - templates: '(Block List, Max: 1) Jinja2 templates for Alert payload. (see below for nested schema)' + templates: '(Block List, Max: 1) Jinja2 templates for Alert payload. An empty templates block will be ignored. (see below for nested schema)' title: (String) Template for Alert title. - type: (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging. + type: (String) The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira. web: '(Block List, Max: 1) Templates for Web. (see below for nested schema)' importStatements: - terraform import grafana_oncall_integration.integration_name {{integration_id}} @@ -1248,13 +1388,19 @@ resources: argumentDocs: authorization_header: (String, Sensitive) The auth data of the webhook. Used in Authorization header instead of user/password auth. data: (String) The data of the webhook. - forward_whole_payload: (Boolean) Forwards whole payload of the alert to the webhook's url as POST data. + forward_whole_payload: (Boolean) Toggle to send the entire webhook payload instead of using the values in the Data field. + headers: (String) Headers to add to the outgoing webhook request. + http_method: (String) The HTTP method used in the request made by the outgoing webhook. Defaults to POST. id: (String) The ID of this resource. + integration_filter: (List of String) Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration. + is_webhook_enabled: (Boolean) Controls whether the outgoing webhook will trigger or is ignored. The default is true. name: (String) The name of the outgoing webhook. password: (String, Sensitive) The auth data of the webhook. Used for Basic authentication team_id: (String) The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the grafana_oncall_team datasource. + trigger_template: (String) A template used to dynamically determine whether the webhook should execute based on the content of the payload. + trigger_type: '(String) The type of event that will cause this outgoing webhook to execute. The types of triggers are: escalation, alert group created, acknowledge, resolve, silence, unsilence, unresolve, unacknowledge. Defaults to escalation.' url: (String) The webhook URL. - user: (String) The auth data of the webhook. Used for Basic authentication. + user: (String) Username to use when making the outgoing webhook request. importStatements: - terraform import grafana_oncall_outgoing_webhook.outgoing_webhook_name {{outgoing_webhook_id}} grafana_oncall_route: @@ -1351,6 +1497,7 @@ resources: } argumentDocs: channel_id: (String) Slack channel id. Reminder about schedule shifts will be directed to this channel in Slack. + enable_web_overrides: (Boolean) Enable overrides via web UI (it will ignore ical_url_overrides). ical_url_overrides: (String) The URL of external iCal calendar which override primary events. ical_url_primary: (String) The URL of the external calendar iCal file. id: (String) The ID of this resource. @@ -1414,6 +1561,10 @@ resources: id: (String) The ID of this resource. name: (String) The display name for the Grafana organization created. org_id: (Number) The organization id assigned to this organization by Grafana. + users_without_access: |- + (Set of String) A list of email addresses corresponding to users who should be given none access to the organization. + Note: users specified here must already exist in Grafana, unless 'create_users' is + set to true. This feature is only available in Grafana 10.2+. viewers: |- (Set of String) A list of email addresses corresponding to users who should be given viewer access to the organization. Note: users specified here must already exist in @@ -1434,19 +1585,40 @@ resources: "week_start": "Tuesday" } argumentDocs: - home_dashboard_id: (Number) The Organization home dashboard ID. + home_dashboard_id: '(Number, Deprecated) The Organization home dashboard ID. Deprecated: Use home_dashboard_uid instead.' home_dashboard_uid: (String) The Organization home dashboard UID. This is only available in Grafana 9.0+. id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. - theme: (String) The Organization theme. Available values are light, dark, or an empty string for the default. + theme: (String) The Organization theme. Available values are light, dark, system, or an empty string for the default. timezone: (String) The Organization timezone. Available values are utc, browser, or an empty string for the default. week_start: (String) The Organization week start. importStatements: [] - grafana_playlist Resource - terraform-provider-grafana: + grafana_playlist: subCategory: Grafana OSS description: Official documentation https://grafana.com/docs/grafana/latest/dashboards/create-manage-playlists/HTTP API https://grafana.com/docs/grafana/latest/developers/http_api/playlist/ - name: grafana_playlist Resource - terraform-provider-grafana + name: grafana_playlist title: grafana_playlist Resource - terraform-provider-grafana + examples: + - name: test + manifest: |- + { + "interval": "5m", + "item": [ + { + "order": 2, + "title": "Terraform Dashboard By Tag", + "type": "dashboard_by_tag", + "value": "terraform" + }, + { + "order": 1, + "title": "Terraform Dashboard By ID", + "type": "dashboard_by_id", + "value": "3" + } + ], + "name": "My Playlist!" + } argumentDocs: id: (String) The ID of this resource. interval: (String) @@ -1544,6 +1716,7 @@ resources: } argumentDocs: action: '(String) Specific action users granted with the role will be allowed to perform (for example: users:read)' + auto_increment_version: (Boolean) Whether the role version should be incremented automatically on updates (and set to 1 on creation). This field or version should be set. description: (String) Description of the role. display_name: (String) Display name of the role. Available with Grafana 8.5+. global: (Boolean) Boolean to state whether the role is available across all organizations or not. Defaults to false. @@ -1551,15 +1724,16 @@ resources: hidden: (Boolean) Boolean to state whether the role should be visible in the Grafana UI or not. Available with Grafana 8.5+. Defaults to false. id: (String) The ID of this resource. name: (String) Name of the role + org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. permissions: (Block Set) Specific set of actions granted by the role. (see below for nested schema) scope: '(String) Scope to restrict the action to a set of resources (for example: users:* or roles:customrole1) Defaults to ``.' uid: (String) Unique identifier of the role. Used for assignments. - version: (Number) Version of the role. A role is updated only on version increase. + version: (Number) Version of the role. A role is updated only on version increase. This field or auto_increment_version should be set. importStatements: - terraform import grafana_role.role_name {{uid}} grafana_role_assignment: subCategory: Grafana Enterprise - description: 'Note: This resource is available only with Grafana Enterprise 9.2+.' + description: 'Manages the entire set of assignments for a role. Assignments that aren''t specified when applying this resource will be removed. Note: This resource is available only with Grafana Enterprise 9.2+.' name: grafana_role_assignment title: grafana_role_assignment Resource - terraform-provider-grafana examples: @@ -1610,6 +1784,7 @@ resources: } argumentDocs: id: (String) The ID of this resource. + org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. role_uid: (String) Grafana RBAC role UID. service_accounts: (Set of String) IDs of service accounts that the role should be assigned to. teams: (Set of String) IDs of teams that the role should be assigned to. @@ -1685,6 +1860,7 @@ resources: condition: (String) The ref_id of the query node in the data field to use as the alert condition. data: '(Block List, Min: 1) A sequence of stages that describe the contents of the rule. (see below for nested schema)' datasource_uid: (String) The UID of the datasource being queried, or "-100" if this stage is an expression stage. + disable_provenance: (Boolean) Allow modifying the rule group from other sources than Terraform or the Grafana API. Defaults to false. exec_err_state: (String) Describes what state to enter when the rule's query is invalid and the rule cannot be executed. Options are OK, Error, and Alerting. Defaults to Alerting. folder_uid: (String) The UID of the folder that the group belongs to. for: (String) The amount of time for which the rule must be breached for the rule to be considered to be Firing. Before this time has elapsed, the rule is only considered to be Pending. Defaults to 0. @@ -1696,7 +1872,7 @@ resources: model: (String) Custom JSON data to send to the specified datasource when querying. name: (String) The name of the rule group. no_data_state: (String) Describes what state to enter when the rule's query returns No Data. Options are OK, NoData, and Alerting. Defaults to NoData. - org_id: (String) The ID of the org to which the group belongs. + org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. query_type: (String) An optional identifier for the type of query being executed. Defaults to ``. ref_id: (String) A unique string to identify this query stage within a rule. relative_time_range: '(Block List, Min: 1, Max: 1) The time range, relative to when the query is executed, across which to query. (see below for nested schema)' @@ -1727,7 +1903,7 @@ resources: importStatements: [] grafana_service_account_permission: subCategory: Grafana OSS - description: 'Note: This resource is available from Grafana 9.2.4 onwards. Official documentation https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana' + description: 'Manages the entire set of permissions for a service account. Permissions that aren''t specified when applying this resource will be removed. Note: This resource is available from Grafana 9.2.4 onwards. Official documentation https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana' name: grafana_service_account_permission title: grafana_service_account_permission Resource - terraform-provider-grafana examples: @@ -1771,7 +1947,7 @@ resources: id: (String) The ID of this resource. org_id: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. permission: (String) Permission to associate with item. Must be Edit or Admin. - permissions: '(Block Set, Min: 1) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema)' + permissions: (Block Set) The permission items to add/update. Items that are omitted from the list will be removed. (see below for nested schema) service_account_id: (String) The id of the service account. team_id: (String) ID of the team to manage permissions for. Specify either this or user_id. Defaults to 0. user_id: (String) ID of the user or service account to manage permissions for. Specify either this or team_id. Defaults to 0. @@ -1786,15 +1962,31 @@ resources: manifest: |- { "name": "key_foo", - "service_account_id": 1 + "service_account_id": "${grafana_service_account.test.id}" } + references: + service_account_id: grafana_service_account.test.id + dependencies: + grafana_service_account.test: |- + { + "name": "test-service-account", + "role": "Viewer" + } - name: bar manifest: |- { "name": "key_bar", "seconds_to_live": 30, - "service_account_id": 1 + "service_account_id": "${grafana_service_account.test.id}" } + references: + service_account_id: grafana_service_account.test.id + dependencies: + grafana_service_account.test: |- + { + "name": "test-service-account", + "role": "Viewer" + } argumentDocs: expiration: (String) has_expired: (Boolean) @@ -1846,6 +2038,11 @@ resources: } ], "description": "Terraform Description", + "destination_datasource": [ + { + "uid": "grafanacloud-prom" + } + ], "label": [ { "key": "slo", @@ -1918,6 +2115,11 @@ resources: } ], "description": "Complex Resource - Terraform Ratio Query Description", + "destination_datasource": [ + { + "uid": "grafanacloud-prom" + } + ], "label": [ { "key": "slo", @@ -1949,14 +2151,15 @@ resources: } argumentDocs: alerting: |- - (Block List) Configures the alerting rules that will be generated for each + (Block List, Max: 1) Configures the alerting rules that will be generated for each time window associated with the SLO. Grafana SLOs can generate alerts when the short-term error budget burn is very high, the long-term error budget burn rate is high, or when the remaining error budget is below a certain threshold. Annotations and Labels support templating. (see below for nested schema) annotation: (Block List) Annotations will be attached to all alerts generated by any of these rules. (see below for nested schema) description: (String) Description is a free-text field that can provide more context to an SLO. - fastburn: (Block List) Alerting Rules generated for Fast Burn alerts (see below for nested schema) + destination_datasource: '(Block List, Max: 1) Destination Datasource sets the datasource defined for an SLO (see below for nested schema)' + fastburn: '(Block List, Max: 1) Alerting Rules generated for Fast Burn alerts (see below for nested schema)' freeform: '(Block List, Max: 1) (see below for nested schema)' group_by_labels: (List of String) Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - "^[a-zA-Z_][a-zA-Z0-9_]*$" id: (String) The ID of this resource. @@ -1966,10 +2169,11 @@ resources: objectives: '(Block List, Min: 1) Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget. (see below for nested schema)' query: '(Block List, Min: 1) Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported. (see below for nested schema)' ratio: '(Block List, Max: 1) (see below for nested schema)' - slowburn: (Block List) Alerting Rules generated for Slow Burn alerts (see below for nested schema) + slowburn: '(Block List, Max: 1) Alerting Rules generated for Slow Burn alerts (see below for nested schema)' success_metric: (String) Counter metric for success events (numerator) total_metric: (String) Metric for total events (denominator) type: '(String) Query type must be one of: "freeform", "query", "ratio", or "threshold"' + uid: (String) UID for the Mimir Datasource value: (Number) Value between 0 and 1. If the value of the query is above the objective, the SLO is met. window: (String) A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over. importStatements: [] @@ -2136,7 +2340,7 @@ resources: "valid_http_versions": [ "HTTP/1.0", "HTTP/1.1", - "HTTP/2" + "HTTP/2.0" ], "valid_status_codes": [ 200, @@ -2306,6 +2510,8 @@ resources: argumentDocs: alert_sensitivity: (String) Can be set to none, low, medium, or high to correspond to the check alert levels. Defaults to none. allow_missing: (Boolean) Allow header to be missing from responses. Defaults to false. + assertions: (Block List) Assertions to make on the request response (see below for nested schema) + attribute: (String) The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR basic_auth: '(Block Set, Max: 1) Basic auth settings. (see below for nested schema)' basic_metrics_only: (Boolean) Metrics are reduced by default. Set this to false if you'd like to publish all metrics. We maintain a full list of metrics collected for each. Defaults to true. bearer_token: (String) Token for use with bearer authorization header. @@ -2314,10 +2520,15 @@ resources: cache_busting_query_param_name: (String) The name of the query parameter used to prevent the server from using a cached response. Each probe will assign a random value to this parameter each time a request is made. client_cert: (String) Client certificate in PEM format. client_key: (String, Sensitive) Client key in PEM format. + condition: '(String) The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS' + content_encoding: (String) The content encoding of the body + content_type: (String) The content type of the body dns: '(Block Set, Max: 1) Settings for DNS check. The target must be a valid hostname (or IP address for PTR records). (see below for nested schema)' dont_fragment: (Boolean) Set the DF-bit in the IP-header. Only works with ipV4. Defaults to false. enabled: (Boolean) Whether to enable the check. Defaults to true. + entries: (Block List) (see below for nested schema) expect: (String) Response to expect. + expression: (String) The expression of the assertion. Should start with $. fail_if_body_matches_regexp: (Set of String) List of regexes. If any match the response body, the check will fail. fail_if_body_not_matches_regexp: (Set of String) List of regexes. If any do not match the response body, the check will fail. fail_if_header_matches_regexp: (Block Set) Check fails if headers match. (see below for nested schema) @@ -2338,24 +2549,31 @@ resources: max_hops: (Number) Maximum TTL for the trace Defaults to 64. max_unknown_hops: (Number) Maximum number of hosts to travers that give no response Defaults to 15. method: (String) Request method. One of GET, CONNECT, DELETE, HEAD, OPTIONS, POST, PUT, TRACE Defaults to GET. + multihttp: '(Block Set, Max: 1) Settings for MultiHTTP check. The target must be a URL (http or https) (see below for nested schema)' + name: (String) Name of the header to send no_follow_redirects: (Boolean) Do not follow redirects. Defaults to false. password: (String) Basic auth password. + payload: (String) The body payload payload_size: (Number) Payload size. Defaults to 0. ping: '(Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. (see below for nested schema)' port: (Number) Port to target. Defaults to 53. probes: (Set of Number) List of probe location IDs where this target will be checked from. protocol: (String) TCP or UDP. Defaults to UDP. + proxy_connect_headers: (Set of String) The HTTP headers sent to the proxy URL proxy_url: (String) Proxy URL. ptr_lookup: (Boolean) Reverse lookup hostnames from IP addresses Defaults to true. + query_fields: (Block Set) Query fields to send with the request (see below for nested schema) query_response: (Block Set) The query sent in the TCP probe and the expected associated response. (see below for nested schema) record_type: (String) One of ANY, A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT. Defaults to A. regexp: (String) Regex that header value should match. + request: '(Block Set, Max: 1) An individual MultiHTTP request (see below for nested schema)' send: (String) Data to send. server: (String) DNS server address to target. Defaults to 8.8.8.8. server_name: (String) Used to verify the hostname for the targets. settings: '(Block Set, Min: 1, Max: 1) Check settings. Should contain exactly one nested block. (see below for nested schema)' source_ip_address: (String) Source IP address. start_tls: (Boolean) Upgrade TCP connection to TLS. Defaults to false. + subject: '(String) The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY' target: (String) Hostname to ping. tcp: '(Block Set, Max: 1) Settings for TCP check. The target must be of the form :, where the host portion must be a valid hostname or IP address. (see below for nested schema)' tenant_id: (Number) The tenant ID of the check. @@ -2363,13 +2581,17 @@ resources: tls: (Boolean) Whether or not TLS is used when the connection is initiated. Defaults to false. tls_config: '(Block Set, Max: 1) TLS config. (see below for nested schema)' traceroute: '(Block Set, Max: 1) Settings for traceroute check. The target must be a valid hostname or IP address (see below for nested schema)' + type: '(String) The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION' + url: (String) The URL for the request username: (String) Basic auth username. - valid_http_versions: (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2 + valid_http_versions: (Set of String) List of valid HTTP versions. Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 valid_r_codes: (Set of String) List of valid response codes. Options include NOERROR, BADALG, BADMODE, BADKEY, BADCOOKIE, BADNAME, BADSIG, BADTIME, BADTRUNC, BADVERS, FORMERR, NOTIMP, NOTAUTH, NOTZONE, NXDOMAIN, NXRRSET, REFUSED, SERVFAIL, YXDOMAIN, YXRRSET. valid_status_codes: (Set of Number) Accepted status codes. If unset, defaults to 2xx. validate_additional_rrs: (Block Set) Validate additional matches. (see below for nested schema) validate_answer_rrs: '(Block Set, Max: 1) Validate response answer. (see below for nested schema)' validate_authority_rrs: '(Block Set, Max: 1) Validate response authority. (see below for nested schema)' + value: (String) The value of the assertion + variables: (Block List) Variables to extract from the request response (see below for nested schema) importStatements: - terraform import grafana_synthetic_monitoring_check.check {{check-id}} grafana_synthetic_monitoring_installation: @@ -2447,10 +2669,18 @@ resources: { "email": "teamemail@example.com", "members": [ - "viewer-01@example.com" + "${grafana_user.viewer.email}" ], "name": "Test Team" } + dependencies: + grafana_user.viewer: |- + { + "email": "viewer@example.com", + "login": "viewer", + "name": "Viewer", + "password": "my-password" + } argumentDocs: email: (String) An email address for the team. groups: (Set of String) @@ -2468,7 +2698,7 @@ resources: preferences: '(Block List, Max: 1) (see below for nested schema)' team_id: (Number) The team id assigned to this team by Grafana. team_sync: '(Block List, Max: 1) Sync external auth provider groups with this Grafana team. Only available in Grafana Enterprise.' - theme: (String) The default theme for this team. Available themes are light, dark, or an empty string for the default theme. Defaults to ``. + theme: (String) The default theme for this team. Available themes are light, dark, system, or an empty string for the default theme. Defaults to ``. timezone: (String) The default timezone for this team. Available values are utc, browser, or an empty string for the default. Defaults to ``. importStatements: - |- @@ -2476,7 +2706,7 @@ resources: terraform import grafana_team.team_name {{org_id}}:{{team_id}} # When "org_id" is set on the resource grafana_team_external_group: subCategory: Grafana Enterprise - description: Use the team_sync attribute of the grafana_team resource instead. + description: Equivalent to the the team_sync attribute of the grafana_team resource. Use one or the other to configure a team's external groups syncing config. name: grafana_team_external_group title: grafana_team_external_group Resource - terraform-provider-grafana examples: @@ -2487,8 +2717,15 @@ resources: "test-group-1", "test-group-2" ], - "team_id": 1 + "team_id": "${grafana_team.my_team.id}" } + references: + team_id: grafana_team.my_team.id + dependencies: + grafana_team.my_team: |- + { + "name": "My Team" + } argumentDocs: groups: (Set of String) The team external groups list id: (String) The ID of this resource. diff --git a/config/schema.json b/config/schema.json index 43e809e..766a4f8 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +1 @@ -{"format_version":"1.0","provider_schemas":{"registry.terraform.io/grafana/grafana":{"provider":{"version":0,"block":{"attributes":{"auth":{"type":"string","description":"API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via the `GRAFANA_AUTH` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"ca_cert":{"type":"string","description":"Certificate CA bundle (file path or literal value) to use to verify the Grafana server's certificate. May alternatively be set via the `GRAFANA_CA_CERT` environment variable.","description_kind":"markdown","optional":true},"cloud_api_key":{"type":"string","description":"Access Policy Token (or API key) for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"cloud_api_url":{"type":"string","description":"Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.","description_kind":"markdown","optional":true},"http_headers":{"type":["map","string"],"description":"Optional. HTTP headers mapping keys to values used for accessing the Grafana and Grafana Cloud APIs. May alternatively be set via the `GRAFANA_HTTP_HEADERS` environment variable in JSON format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Skip TLS certificate verification. May alternatively be set via the `GRAFANA_INSECURE_SKIP_VERIFY` environment variable.","description_kind":"markdown","optional":true},"oncall_access_token":{"type":"string","description":"A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"oncall_url":{"type":"string","description":"An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.","description_kind":"markdown","optional":true},"org_id":{"type":"number","description":"Deprecated: Use the `org_id` attributes on resources instead.","description_kind":"markdown","deprecated":true,"optional":true},"retries":{"type":"number","description":"The amount of retries to use for Grafana API and Grafana Cloud API calls. May alternatively be set via the `GRAFANA_RETRIES` environment variable.","description_kind":"markdown","optional":true},"retry_status_codes":{"type":["set","string"],"description":"The status codes to retry on for Grafana API and Grafana Cloud API calls. Use `x` as a digit wildcard. Defaults to 429 and 5xx. May alternatively be set via the `GRAFANA_RETRY_STATUS_CODES` environment variable.","description_kind":"markdown","optional":true},"retry_wait":{"type":"number","description":"The amount of time in seconds to wait between retries for Grafana API and Grafana Cloud API calls. May alternatively be set via the `GRAFANA_RETRY_WAIT` environment variable.","description_kind":"markdown","optional":true},"sm_access_token":{"type":"string","description":"A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"sm_url":{"type":"string","description":"Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The correct value for each service region is cited in the [Synthetic Monitoring documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/#probe-api-server-url). Note the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for each provider ensures all providers interact with the same SM API.","description_kind":"markdown","optional":true},"store_dashboard_sha256":{"type":"bool","description":"Set to true if you want to save only the sha256sum instead of complete dashboard model JSON in the tfstate.","description_kind":"markdown","optional":true},"tls_cert":{"type":"string","description":"Client TLS certificate (file path or literal value) to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_CERT` environment variable.","description_kind":"markdown","optional":true},"tls_key":{"type":"string","description":"Client TLS key (file path or literal value) to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY` environment variable.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.","description_kind":"markdown","optional":true}},"description_kind":"plain"}},"resource_schemas":{"grafana_annotation":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"The ID of the dashboard on which to create the annotation. Deprecated: Use dashboard_uid instead.","description_kind":"markdown","deprecated":true,"optional":true},"dashboard_uid":{"type":"string","description":"The ID of the dashboard on which to create the annotation.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The ID of the dashboard panel on which to create the annotation.","description_kind":"markdown","optional":true},"tags":{"type":["set","string"],"description":"The tags to associate with the annotation.","description_kind":"markdown","optional":true},"text":{"type":"string","description":"The text to associate with the annotation.","description_kind":"markdown","required":true},"time":{"type":"string","description":"The RFC 3339-formatted time string indicating the annotation's time.","description_kind":"markdown","optional":true,"computed":true},"time_end":{"type":"string","description":"The RFC 3339-formatted time string indicating the annotation's end time.","description_kind":"markdown","optional":true,"computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/annotate-visualizations/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/annotations/)\n","description_kind":"markdown"}},"grafana_api_key":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"role":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true}},"description":"\nManages Grafana API Keys.\n\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/auth/)\n\n!\u003e Deprecated: please use `grafana_service_account` and `grafana_service_account_token` instead, see [Migrate API keys to Grafana service accounts using Terraform](https://grafana.com/docs/grafana/latest/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-terraform) for more information.\n","description_kind":"markdown","deprecated":true}},"grafana_cloud_access_policy":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description":"Creation date of the access policy.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the access policy. Defaults to the name.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the access policy.","description_kind":"markdown","required":true},"policy_id":{"type":"string","description":"ID of the access policy.","description_kind":"markdown","computed":true},"region":{"type":"string","description":"Region where the API is deployed. Generally where the stack is deployed. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","required":true},"scopes":{"type":["set","string"],"description":"Scopes of the access policy. See https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/#scopes for possible values.","description_kind":"markdown","required":true},"updated_at":{"type":"string","description":"Last update date of the access policy.","description_kind":"markdown","computed":true}},"block_types":{"realm":{"nesting_mode":"set","block":{"attributes":{"identifier":{"type":"string","description":"The identifier of the org or stack. For orgs, this is the slug, for stacks, this is the stack ID.","description_kind":"markdown","required":true},"type":{"type":"string","description":"Whether a policy applies to a Cloud org or a specific stack. Should be one of `org` or `stack`.","description_kind":"markdown","required":true}},"block_types":{"label_policy":{"nesting_mode":"set","block":{"attributes":{"selector":{"type":"string","description":"The label selector to match in metrics or logs query. Should be in PromQL or LogQL format.","description_kind":"markdown","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#create-an-access-policy)\n","description_kind":"markdown"}},"grafana_cloud_access_policy_token":{"version":0,"block":{"attributes":{"access_policy_id":{"type":"string","description":"ID of the access policy for which to create a token.","description_kind":"markdown","required":true},"created_at":{"type":"string","description":"Creation date of the access policy token.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the access policy token. Defaults to the name.","description_kind":"markdown","optional":true},"expires_at":{"type":"string","description":"Expiration date of the access policy token. Does not expire by default.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the access policy token.","description_kind":"markdown","required":true},"region":{"type":"string","description":"Region of the access policy. Should be set to the same region as the access policy. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","required":true},"token":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"updated_at":{"type":"string","description":"Last update date of the access policy token.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#create-a-token)\n","description_kind":"markdown"}},"grafana_cloud_api_key":{"version":0,"block":{"attributes":{"cloud_org_slug":{"type":"string","description":"The slug of the organization to create the API key in. This is the same slug as the organization name in the URL.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description":"The generated API key.","description_kind":"markdown","computed":true,"sensitive":true},"name":{"type":"string","description":"Name of the API key.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Role of the API key. Should be one of [Viewer Editor Admin MetricsPublisher PluginPublisher]. See https://grafana.com/docs/grafana-cloud/api/#create-api-key for details.","description_kind":"markdown","required":true}},"description":"Manages a single API key on the Grafana Cloud portal (on the organization level)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#api-keys)\n","description_kind":"markdown"}},"grafana_cloud_plugin_installation":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slug":{"type":"string","description":"Slug of the plugin to be installed.","description_kind":"markdown","required":true},"stack_slug":{"type":"string","description":"The stack id to which the plugin should be installed.","description_kind":"markdown","required":true},"version":{"type":"string","description":"Version of the plugin to be installed.","description_kind":"markdown","required":true}},"description":"\nManages Grafana Cloud Plugin Installations.\n\n* [Plugin Catalog](https://grafana.com/grafana/plugins/)\n","description_kind":"markdown"}},"grafana_cloud_stack":{"version":0,"block":{"attributes":{"alertmanager_name":{"type":"string","description":"Name of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_status":{"type":"string","description":"Status of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_url":{"type":"string","description":"Base URL of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_user_id":{"type":"number","description":"User ID of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of stack.","description_kind":"markdown","optional":true},"graphite_name":{"type":"string","description_kind":"plain","computed":true},"graphite_status":{"type":"string","description_kind":"plain","computed":true},"graphite_url":{"type":"string","description_kind":"plain","computed":true},"graphite_user_id":{"type":"number","description_kind":"plain","computed":true},"id":{"type":"string","description":"The stack id assigned to this stack by Grafana.","description_kind":"markdown","computed":true},"logs_name":{"type":"string","description_kind":"plain","computed":true},"logs_status":{"type":"string","description_kind":"plain","computed":true},"logs_url":{"type":"string","description_kind":"plain","computed":true},"logs_user_id":{"type":"number","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of stack. Conventionally matches the url of the instance (e.g. “\u003cstack_slug\u003e.grafana.net”).","description_kind":"markdown","required":true},"org_id":{"type":"number","description":"Organization id to assign to this stack.","description_kind":"markdown","computed":true},"org_name":{"type":"string","description":"Organization name to assign to this stack.","description_kind":"markdown","computed":true},"org_slug":{"type":"string","description":"Organization slug to assign to this stack.","description_kind":"markdown","computed":true},"prometheus_name":{"type":"string","description":"Prometheus name for this instance.","description_kind":"markdown","computed":true},"prometheus_remote_endpoint":{"type":"string","description":"Use this URL to query hosted metrics data e.g. Prometheus data source in Grafana","description_kind":"markdown","computed":true},"prometheus_remote_write_endpoint":{"type":"string","description":"Use this URL to send prometheus metrics to Grafana cloud","description_kind":"markdown","computed":true},"prometheus_status":{"type":"string","description":"Prometheus status for this instance.","description_kind":"markdown","computed":true},"prometheus_url":{"type":"string","description":"Prometheus url for this instance.","description_kind":"markdown","computed":true},"prometheus_user_id":{"type":"number","description":"Prometheus user ID. Used for e.g. remote_write.","description_kind":"markdown","computed":true},"region_slug":{"type":"string","description":"Region slug to assign to this stack. Changing region will destroy the existing stack and create a new one in the desired region. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","optional":true},"slug":{"type":"string","description":"Subdomain that the Grafana instance will be available at (i.e. setting slug to “\u003cstack_slug\u003e” will make the instance\navailable at “https://\u003cstack_slug\u003e.grafana.net\".","description_kind":"markdown","required":true},"status":{"type":"string","description":"Status of the stack.","description_kind":"markdown","computed":true},"traces_name":{"type":"string","description_kind":"plain","computed":true},"traces_status":{"type":"string","description_kind":"plain","computed":true},"traces_url":{"type":"string","description":"Base URL of the Traces instance configured for this stack. To use this in the Tempo data source in Grafana, append `/tempo` to the URL.","description_kind":"markdown","computed":true},"traces_user_id":{"type":"number","description_kind":"plain","computed":true},"url":{"type":"string","description":"Custom URL for the Grafana instance. Must have a CNAME setup to point to `.grafana.net` before creating the stack","description_kind":"markdown","optional":true,"computed":true},"wait_for_readiness":{"type":"bool","description":"Whether to wait for readiness of the stack after creating it. The check is a HEAD request to the stack URL (Grafana instance). Defaults to `true`.","description_kind":"markdown","optional":true},"wait_for_readiness_timeout":{"type":"string","description":"How long to wait for readiness (if enabled). Defaults to `5m0s`.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#stacks/)\n","description_kind":"markdown"}},"grafana_cloud_stack_api_key":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"role":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\nManages API keys of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management API key for a new stack\n\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/auth/)\n\n!\u003e Deprecated: please use `grafana_cloud_stack_service_account` and `grafana_cloud_stack_service_account_token` instead, see https://grafana.com/docs/grafana/next/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-terraform.\n","description_kind":"markdown","deprecated":true}},"grafana_cloud_stack_service_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_disabled":{"type":"bool","description":"The disabled status for the service account. Defaults to `false`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the service account.","description_kind":"markdown","required":true},"role":{"type":"string","description":"The basic role of the service account in the organization.","description_kind":"markdown","optional":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\nManages service accounts of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management service account for a new stack\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_cloud_stack_service_account_token":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"has_expired":{"type":"bool","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"service_account_id":{"type":"string","description_kind":"plain","required":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\nManages service account tokens of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management service account token for a new stack\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_contact_point":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the contact point.","description_kind":"markdown","required":true}},"block_types":{"alertmanager":{"nesting_mode":"list","block":{"attributes":{"basic_auth_password":{"type":"string","description":"The password component of the basic auth credentials to use.","description_kind":"markdown","optional":true,"sensitive":true},"basic_auth_user":{"type":"string","description":"The username component of the basic auth credentials to use.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The URL of the Alertmanager instance.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to other Alertmanager instances.","description_kind":"markdown"}},"dingding":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"message_type":{"type":"string","description":"The format of message to send - either 'link' or 'actionCard'","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The DingDing webhook URL.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to DingDing.","description_kind":"markdown"}},"discord":{"nesting_mode":"list","block":{"attributes":{"avatar_url":{"type":"string","description":"The URL of a custom avatar image to use. Defaults to ``.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message. Defaults to ``.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The discord webhook URL.","description_kind":"markdown","required":true,"sensitive":true},"use_discord_username":{"type":"bool","description":"Whether to use the bot account's plain username instead of \"Grafana.\" Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"A contact point that sends notifications as Discord messages","description_kind":"markdown"}},"email":{"nesting_mode":"list","block":{"attributes":{"addresses":{"type":["list","string"],"description":"The addresses to send emails to.","description_kind":"markdown","required":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the email. Defaults to ``.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"single_email":{"type":"bool","description":"Whether to send a single email CC'ing all addresses, rather than a separate email to each address. Defaults to `false`.","description_kind":"markdown","optional":true},"subject":{"type":"string","description":"The templated subject line of the email. Defaults to ``.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to an email address.","description_kind":"markdown"}},"googlechat":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The Google Chat webhook URL.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Google Chat.","description_kind":"markdown"}},"kafka":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"rest_proxy_url":{"type":"string","description":"The URL of the Kafka REST proxy to send requests to.","description_kind":"markdown","required":true,"sensitive":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"topic":{"type":"string","description":"The name of the Kafka topic to publish to.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that publishes notifications to Apache Kafka topics.","description_kind":"markdown"}},"opsgenie":{"nesting_mode":"list","block":{"attributes":{"api_key":{"type":"string","description":"The OpsGenie API key to use.","description_kind":"markdown","required":true,"sensitive":true},"auto_close":{"type":"bool","description":"Whether to auto-close alerts in OpsGenie when they resolve in the Alertmanager.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A templated high-level description to use for the alert.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"override_priority":{"type":"bool","description":"Whether to allow the alert priority to be configured via the value of the `og_priority` annotation on the alert.","description_kind":"markdown","optional":true},"send_tags_as":{"type":"string","description":"Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are `tags`, `details`, `both`, or empty to use the default behavior of Tags.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"Allows customization of the OpsGenie API URL.","description_kind":"markdown","optional":true}},"description":"A contact point that sends notifications to OpsGenie.","description_kind":"markdown"}},"pagerduty":{"nesting_mode":"list","block":{"attributes":{"class":{"type":"string","description":"The class or type of event, for example `ping failure`.","description_kind":"markdown","optional":true},"client":{"type":"string","description":"The name of the monitoring client that is triggering this event.","description_kind":"markdown","optional":true},"client_url":{"type":"string","description":"The URL of the monitoring client that is triggering this event.","description_kind":"markdown","optional":true},"component":{"type":"string","description":"The component being affected by the event.","description_kind":"markdown","optional":true},"details":{"type":["map","string"],"description":"A set of arbitrary key/value pairs that provide further detail about the incident.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"group":{"type":"string","description":"The group to which the provided component belongs to.","description_kind":"markdown","optional":true},"integration_key":{"type":"string","description":"The PagerDuty API key.","description_kind":"markdown","required":true,"sensitive":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"severity":{"type":"string","description":"The PagerDuty event severity level. Default is `critical`.","description_kind":"markdown","optional":true},"source":{"type":"string","description":"The unique location of the affected system.","description_kind":"markdown","optional":true},"summary":{"type":"string","description":"The templated summary message of the event.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to PagerDuty.","description_kind":"markdown"}},"pushover":{"nesting_mode":"list","block":{"attributes":{"api_token":{"type":"string","description":"The Pushover API token.","description_kind":"markdown","required":true,"sensitive":true},"device":{"type":"string","description":"Comma-separated list of devices to which the event is associated.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"expire":{"type":"number","description":"How many seconds for which the notification will continue to be retried by Pushover.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated notification message content.","description_kind":"markdown","optional":true},"ok_priority":{"type":"number","description":"The priority level of the resolved event.","description_kind":"markdown","optional":true},"ok_sound":{"type":"string","description":"The sound associated with the resolved notification.","description_kind":"markdown","optional":true},"priority":{"type":"number","description":"The priority level of the event.","description_kind":"markdown","optional":true},"retry":{"type":"number","description":"How often, in seconds, the Pushover servers will send the same notification to the user.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"sound":{"type":"string","description":"The sound associated with the notification.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"user_key":{"type":"string","description":"The Pushover user key.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Pushover.","description_kind":"markdown"}},"sensugo":{"nesting_mode":"list","block":{"attributes":{"api_key":{"type":"string","description":"The SensuGo API key.","description_kind":"markdown","required":true,"sensitive":true},"check":{"type":"string","description":"The SensuGo check to which the event should be routed.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"entity":{"type":"string","description":"The entity being monitored.","description_kind":"markdown","optional":true},"handler":{"type":"string","description":"A custom handler to execute in addition to the check.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Templated message content describing the alert.","description_kind":"markdown","optional":true},"namespace":{"type":"string","description":"The namespace in which the check resides.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The SensuGo URL to send requests to.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to SensuGo.","description_kind":"markdown"}},"slack":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"endpoint_url":{"type":"string","description":"Use this to override the Slack API endpoint URL to send requests to.","description_kind":"markdown","optional":true},"icon_emoji":{"type":"string","description":"The name of a Slack workspace emoji to use as the bot icon.","description_kind":"markdown","optional":true},"icon_url":{"type":"string","description":"A URL of an image to use as the bot icon.","description_kind":"markdown","optional":true},"mention_channel":{"type":"string","description":"Describes how to ping the slack channel that messages are being sent to. Options are `here` for an @here ping, `channel` for @channel, or empty for no ping.","description_kind":"markdown","optional":true},"mention_groups":{"type":"string","description":"Comma-separated list of groups to mention in the message.","description_kind":"markdown","optional":true},"mention_users":{"type":"string","description":"Comma-separated list of users to mention in the message.","description_kind":"markdown","optional":true},"recipient":{"type":"string","description":"Channel, private group, or IM channel (can be an encoded ID or a name) to send messages to.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"text":{"type":"string","description":"Templated content of the message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Templated title of the message.","description_kind":"markdown","optional":true},"token":{"type":"string","description":"A Slack API token,for sending messages directly without the webhook method.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"A Slack webhook URL,for sending messages via the webhook method.","description_kind":"markdown","optional":true,"sensitive":true},"username":{"type":"string","description":"Username for the bot to use.","description_kind":"markdown","optional":true}},"description":"A contact point that sends notifications to Slack.","description_kind":"markdown"}},"teams":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated message content to send.","description_kind":"markdown","optional":true},"section_title":{"type":"string","description":"The templated subtitle for each message section.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"A Teams webhook URL.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Microsoft Teams.","description_kind":"markdown"}},"telegram":{"nesting_mode":"list","block":{"attributes":{"chat_id":{"type":"string","description":"The chat ID to send messages to.","description_kind":"markdown","required":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"token":{"type":"string","description":"The Telegram bot token.","description_kind":"markdown","required":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to Telegram.","description_kind":"markdown"}},"threema":{"nesting_mode":"list","block":{"attributes":{"api_secret":{"type":"string","description":"The Threema API key.","description_kind":"markdown","required":true,"sensitive":true},"description":{"type":"string","description":"The templated description of the message.","description_kind":"markdown","required":true,"sensitive":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"gateway_id":{"type":"string","description":"The Threema gateway ID.","description_kind":"markdown","required":true},"recipient_id":{"type":"string","description":"The ID of the recipient of the message.","description_kind":"markdown","required":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","required":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to Threema.","description_kind":"markdown"}},"victorops":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Templated description of the message.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message_type":{"type":"string","description":"The VictorOps alert state - typically either `CRITICAL` or `RECOVERY`.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"Templated title to display.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The VictorOps webhook URL.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to VictorOps (now known as Splunk OnCall).","description_kind":"markdown"}},"webhook":{"nesting_mode":"list","block":{"attributes":{"authorization_credentials":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this value. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true,"sensitive":true},"authorization_scheme":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true},"basic_auth_password":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true,"sensitive":true},"basic_auth_user":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"http_method":{"type":"string","description":"The HTTP method to use in the request. Defaults to `POST`.","description_kind":"markdown","optional":true},"max_alerts":{"type":"number","description":"The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Custom message. You can use template variables.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"Templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The URL to send webhook requests to.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config","description_kind":"markdown"}},"wecom":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message to send.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message to send.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The WeCom webhook URL.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to WeCom.","description_kind":"markdown"}}},"description":"\nManages Grafana Alerting contact points.\n\n* [Official documentation](https://grafana.com/docs/grafana/next/alerting/fundamentals/contact-points/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/#contact-points)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_dashboard":{"version":1,"block":{"attributes":{"config_json":{"type":"string","description":"The complete dashboard model JSON.","description_kind":"markdown","required":true},"dashboard_id":{"type":"number","description":"The numeric ID of the dashboard computed by Grafana.","description_kind":"markdown","computed":true},"folder":{"type":"string","description":"The id or UID of the folder to save the dashboard in.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"Set a commit message for the version history.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"overwrite":{"type":"bool","description":"Set to true if you want to overwrite existing dashboard with newer version, same dashboard title in folder or same dashboard uid.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The unique identifier of a dashboard. This is used to construct its URL. It's automatically generated if not provided when creating a dashboard. The uid allows having consistent URLs for accessing dashboards and when syncing dashboards between multiple Grafana installs.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The full URL of the dashboard.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Whenever you save a version of your dashboard, a copy of that version is saved so that previous versions of your dashboard are not lost.","description_kind":"markdown","computed":true}},"description":"\nManages Grafana dashboards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_dashboard_permission":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"ID of the dashboard to apply permissions to. Deprecated: use `dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"optional":true,"computed":true},"dashboard_uid":{"type":"string","description":"UID of the dashboard to apply permissions to.","description_kind":"markdown","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be one of `View`, `Edit`, or `Admin`.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Manage permissions for `Viewer` or `Editor` roles.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard_permissions/)\n","description_kind":"markdown"}},"grafana_data_source":{"version":1,"block":{"attributes":{"access_mode":{"type":"string","description":"The method by which Grafana will access the data source: `proxy` or `direct`. Defaults to `proxy`.","description_kind":"markdown","optional":true},"basic_auth_enabled":{"type":"bool","description":"Whether to enable basic auth for the data source. Defaults to `false`.","description_kind":"markdown","optional":true},"basic_auth_username":{"type":"string","description":"Basic auth username. Defaults to ``.","description_kind":"markdown","optional":true},"database_name":{"type":"string","description":"(Required by some data source types) The name of the database to use on the selected data source server. Defaults to ``.","description_kind":"markdown","optional":true},"http_headers":{"type":["map","string"],"description":"Custom HTTP headers","description_kind":"markdown","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Whether to set the data source as default. This should only be `true` to a single data source. Defaults to `false`.","description_kind":"markdown","optional":true},"json_data_encoded":{"type":"string","description":"Serialized JSON string containing the json data. This attribute can be used to pass configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"A unique name for the data source.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"secure_json_data_encoded":{"type":"string","description":"Serialized JSON string containing the secure json data. This attribute can be used to pass secure configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","optional":true,"sensitive":true},"type":{"type":"string","description":"The data source type. Must be one of the supported data source keywords.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"Unique identifier. If unset, this will be automatically generated.","description_kind":"markdown","optional":true,"computed":true},"url":{"type":"string","description":"The URL for the data source. The type of URL required varies depending on the chosen data source type.","description_kind":"markdown","optional":true},"username":{"type":"string","description":"(Required by some data source types) The username to use to authenticate to the data source. Defaults to ``.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/datasources/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/data_source/)\n\nThe required arguments for this resource vary depending on the type of data\nsource selected (via the 'type' argument).\n","description_kind":"markdown"}},"grafana_data_source_permission":{"version":0,"block":{"attributes":{"datasource_id":{"type":"string","description":"ID of the datasource to apply permissions to.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"built_in_role":{"type":"string","description":"Name of the basic role to manage permissions for. Options: `Viewer`, `Editor` or `Admin`. Can only be set from Grafana v9.2.3+. Defaults to ``.","description_kind":"markdown","optional":true},"permission":{"type":"string","description":"Permission to associate with item. Options: `Query` or `Edit` (`Edit` can only be used with Grafana v9.2.3+).","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"},"min_items":1}},"description":"\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/datasource_permissions/)\n","description_kind":"markdown"}},"grafana_folder":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"prevent_destroy_if_not_empty":{"type":"bool","description":"Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to `false`.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"The title of the folder.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"Unique identifier.","description_kind":"markdown","optional":true,"computed":true},"url":{"type":"string","description":"The full URL of the folder.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_folder_permission":{"version":0,"block":{"attributes":{"folder_uid":{"type":"string","description":"The UID of the folder.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be one of `View`, `Edit`, or `Admin`.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Manage permissions for `Viewer` or `Editor` roles.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_permissions/)\n","description_kind":"markdown"}},"grafana_library_panel":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"Timestamp when the library panel was created.","description_kind":"markdown","computed":true},"dashboard_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana dashboards containing the library panel.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of the library panel.","description_kind":"markdown","computed":true},"folder_id":{"type":"string","description":"ID of the folder where the library panel is stored.","description_kind":"markdown","optional":true},"folder_name":{"type":"string","description":"Name of the folder containing the library panel.","description_kind":"markdown","computed":true},"folder_uid":{"type":"string","description":"Unique ID (UID) of the folder containing the library panel.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"model_json":{"type":"string","description":"The JSON model for the library panel.","description_kind":"markdown","required":true},"name":{"type":"string","description":"Name of the library panel.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The numeric ID of the library panel computed by Grafana.","description_kind":"markdown","computed":true},"type":{"type":"string","description":"Type of the library panel (eg. text).","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The unique identifier (UID) of a library panel uniquely identifies library panels between multiple Grafana installs. It’s automatically generated unless you specify it during library panel creation.The UID provides consistent URLs for accessing library panels and when syncing library panels between multiple Grafana installs.","description_kind":"markdown","optional":true,"computed":true},"updated":{"type":"string","description":"Timestamp when the library panel was last modified.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the library panel.","description_kind":"markdown","computed":true}},"description":"\nManages Grafana library panels.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/manage-library-panels/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/library_element/)\n","description_kind":"markdown"}},"grafana_machine_learning_holiday":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of the holiday.","description_kind":"markdown","optional":true},"ical_timezone":{"type":"string","description":"The timezone to use for events in the iCal file pointed to by ical_url.","description_kind":"markdown","optional":true},"ical_url":{"type":"string","description":"A URL to an iCal file containing all occurrences of the holiday.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the holiday.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the holiday.","description_kind":"markdown","required":true}},"block_types":{"custom_periods":{"nesting_mode":"list","block":{"attributes":{"end_time":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the custom period.","description_kind":"markdown","optional":true},"start_time":{"type":"string","description_kind":"plain","required":true}},"description":"A list of custom periods for the holiday.","description_kind":"markdown"}}},"description":"\nA holiday describes time periods where a time series is expected to behave differently to normal.\n\nTo use a holiday in a job, use its id in the `holidays` attribute of a `grafana_machine_learning_job`:\n\n```terraform\nresource \"grafana_machine_learning_job\" \"test_job\" {\n ...\n holidays = [\n grafana_machine_learning_holiday.my_holiday.id\n ]\n}\n```","description_kind":"markdown"}},"grafana_machine_learning_job":{"version":0,"block":{"attributes":{"custom_labels":{"type":["map","string"],"description":"An object representing the custom labels added on the forecast.","description_kind":"markdown","optional":true},"datasource_id":{"type":"number","description":"The id of the datasource to query.","description_kind":"markdown","optional":true},"datasource_type":{"type":"string","description":"The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.","description_kind":"markdown","required":true},"datasource_uid":{"type":"string","description":"The uid of the datasource to query.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A description of the job.","description_kind":"markdown","optional":true},"holidays":{"type":["list","string"],"description":"A list of holiday IDs or names to take into account when training the model.","description_kind":"markdown","optional":true},"hyper_params":{"type":["map","string"],"description":"The hyperparameters used to fine tune the algorithm. See https://grafana.com/docs/grafana-cloud/machine-learning/models/ for the full list of available hyperparameters. Defaults to `map[]`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the job.","description_kind":"markdown","computed":true},"interval":{"type":"number","description":"The data interval in seconds to train the data on. Defaults to `300`.","description_kind":"markdown","optional":true},"metric":{"type":"string","description":"The metric used to query the job results.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the job.","description_kind":"markdown","required":true},"query_params":{"type":["map","string"],"description":"An object representing the query params to query Grafana with.","description_kind":"markdown","required":true},"training_window":{"type":"number","description":"The data interval in seconds to train the data on. Defaults to `7776000`.","description_kind":"markdown","optional":true}},"description":"\nA job defines the queries and model parameters for a machine learning task.\n","description_kind":"markdown"}},"grafana_machine_learning_outlier_detector":{"version":0,"block":{"attributes":{"datasource_id":{"type":"number","description":"The id of the datasource to query.","description_kind":"markdown","optional":true},"datasource_type":{"type":"string","description":"The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.","description_kind":"markdown","required":true},"datasource_uid":{"type":"string","description":"The uid of the datasource to query.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A description of the outlier detector.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the outlier detector.","description_kind":"markdown","computed":true},"interval":{"type":"number","description":"The data interval in seconds to monitor. Defaults to `300`.","description_kind":"markdown","optional":true},"metric":{"type":"string","description":"The metric used to query the outlier detector results.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the outlier detector.","description_kind":"markdown","required":true},"query_params":{"type":["map","string"],"description":"An object representing the query params to query Grafana with.","description_kind":"markdown","required":true}},"block_types":{"algorithm":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"The name of the algorithm to use ('mad' or 'dbscan').","description_kind":"markdown","required":true},"sensitivity":{"type":"number","description":"Specify the sensitivity of the detector (in range [0,1]).","description_kind":"markdown","required":true}},"block_types":{"config":{"nesting_mode":"set","block":{"attributes":{"epsilon":{"type":"number","description":"Specify the epsilon parameter (positive float)","description_kind":"markdown","required":true}},"description":"For DBSCAN only, specify the configuration map","description_kind":"markdown"},"max_items":1}},"description":"The algorithm to use and its configuration. See https://grafana.com/docs/grafana-cloud/machine-learning/outlier-detection/ for details.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"\nAn outlier detector monitors the results of a query and reports when its values are outside normal bands.\n\nThe normal band is configured by choice of algorithm, its sensitivity and other configuration.\n\nVisit https://grafana.com/docs/grafana-cloud/machine-learning/outlier-detection/ for more details.\n","description_kind":"markdown"}},"grafana_message_template":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the message template.","description_kind":"markdown","required":true},"template":{"type":"string","description":"The content of the message template.","description_kind":"markdown","required":true}},"description":"\nManages Grafana Alerting message templates.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/template-notifications/create-notification-templates/)\n* [HTTP API](https://grafana.com/docs/grafana/next/developers/http_api/alerting_provisioning/#templates)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_mute_timing":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the mute timing.","description_kind":"markdown","required":true}},"block_types":{"intervals":{"nesting_mode":"list","block":{"attributes":{"days_of_month":{"type":["list","string"],"description":"An inclusive range of days, 1-31, within a month, e.g. \"1\" or \"14:16\". Negative values can be used to represent days counting from the end of a month, e.g. \"-1\".","description_kind":"markdown","optional":true},"months":{"type":["list","string"],"description":"An inclusive range of months, either numerical or full calendar month, e.g. \"1:3\", \"december\", or \"may:august\".","description_kind":"markdown","optional":true},"weekdays":{"type":["list","string"],"description":"An inclusive range of weekdays, e.g. \"monday\" or \"tuesday:thursday\".","description_kind":"markdown","optional":true},"years":{"type":["list","string"],"description":"A positive inclusive range of years, e.g. \"2030\" or \"2025:2026\".","description_kind":"markdown","optional":true}},"block_types":{"times":{"nesting_mode":"list","block":{"attributes":{"end":{"type":"string","description":"The time, in hh:mm format, of when the interval should end exclusively.","description_kind":"markdown","required":true},"start":{"type":"string","description":"The time, in hh:mm format, of when the interval should begin inclusively.","description_kind":"markdown","required":true}},"description":"The time ranges, represented in minutes, during which to mute in a given day.","description_kind":"markdown"}}},"description":"The time intervals at which to mute notifications.","description_kind":"markdown"}}},"description":"\nManages Grafana Alerting mute timings.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/mute-timings/)\n* [HTTP API](https://grafana.com/docs/grafana/next/developers/http_api/alerting_provisioning/#mute-timings)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_notification_policy":{"version":0,"block":{"attributes":{"contact_point":{"type":"string","description":"The default contact point to route all unmatched notifications to.","description_kind":"markdown","required":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"\nSets the global notification policy for Grafana.\n\n!\u003e This resource manages the entire notification policy tree, and will overwrite any existing policies.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_oncall_escalation":{"version":0,"block":{"attributes":{"action_to_trigger":{"type":"string","description":"The ID of an Action for trigger_action type step.","description_kind":"markdown","optional":true},"duration":{"type":"number","description":"The duration of delay for wait type step.","description_kind":"markdown","optional":true},"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","required":true},"group_to_notify":{"type":"string","description":"The ID of a User Group for notify_user_group type step.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"important":{"type":"bool","description":"Will activate \"important\" personal notification rules. Actual for steps: notify_persons, notify_on_call_from_schedule and notify_user_group","description_kind":"markdown","optional":true},"notify_if_time_from":{"type":"string","description":"The beginning of the time interval for notify_if_time_from_to type step in UTC (for example 08:00:00Z).","description_kind":"markdown","optional":true},"notify_if_time_to":{"type":"string","description":"The end of the time interval for notify_if_time_from_to type step in UTC (for example 18:00:00Z).","description_kind":"markdown","optional":true},"notify_on_call_from_schedule":{"type":"string","description":"ID of a Schedule for notify_on_call_from_schedule type step.","description_kind":"markdown","optional":true},"persons_to_notify":{"type":["set","string"],"description":"The list of ID's of users for notify_persons type step.","description_kind":"markdown","optional":true},"persons_to_notify_next_each_time":{"type":["set","string"],"description":"The list of ID's of users for notify_person_next_each_time type step.","description_kind":"markdown","optional":true},"position":{"type":"number","description":"The position of the escalation step (starts from 0).","description_kind":"markdown","required":true},"type":{"type":"string","description":"The type of escalation policy. Can be wait, notify_persons, notify_person_next_each_time, notify_on_call_from_schedule, trigger_action, notify_user_group, resolve, notify_whole_channel, notify_if_time_from_to, repeat_escalation","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n","description_kind":"markdown"}},"grafana_oncall_escalation_chain":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the escalation chain.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n","description_kind":"markdown"}},"grafana_oncall_integration":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"link":{"type":"string","description":"The link for using in an integrated tool.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the service integration.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging.","description_kind":"markdown","required":true}},"block_types":{"default_route":{"nesting_mode":"list","block":{"attributes":{"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"msteams":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in MS teams. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"MS teams channel id. Alerts will be directed to this channel in Microsoft teams.","description_kind":"markdown","optional":true}},"description":"MS teams-specific settings for a route.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Alerts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Enable notification in Slack. Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Slack-specific settings for a route.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in Telegram. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Telegram channel id. Alerts will be directed to this channel in Telegram.","description_kind":"markdown","optional":true}},"description":"Telegram-specific settings for a route.","description_kind":"markdown"},"max_items":1}},"description":"The Default route for all alerts from the given integration","description_kind":"markdown"},"min_items":1,"max_items":1},"templates":{"nesting_mode":"list","block":{"attributes":{"acknowledge_signal":{"type":"string","description":"Template for sending a signal to acknowledge the Incident.","description_kind":"markdown","optional":true},"grouping_key":{"type":"string","description":"Template for the key by which alerts are grouped.","description_kind":"markdown","optional":true},"resolve_signal":{"type":"string","description":"Template for sending a signal to resolve the Incident.","description_kind":"markdown","optional":true},"source_link":{"type":"string","description":"Template for a source link.","description_kind":"markdown","optional":true}},"block_types":{"email":{"nesting_mode":"list","block":{"attributes":{"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Email.","description_kind":"markdown"},"max_items":1},"microsoft_teams":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Microsoft Teams.","description_kind":"markdown"},"max_items":1},"phone_call":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Phone Call.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Slack.","description_kind":"markdown"},"max_items":1},"sms":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for SMS.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Telegram.","description_kind":"markdown"},"max_items":1},"web":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Web.","description_kind":"markdown"},"max_items":1}},"description":"Jinja2 templates for Alert payload.","description_kind":"markdown"},"max_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/integrations/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/)\n","description_kind":"markdown"}},"grafana_oncall_on_call_shift":{"version":0,"block":{"attributes":{"by_day":{"type":["set","string"],"description":"This parameter takes a list of days in iCal format. Can be MO, TU, WE, TH, FR, SA, SU","description_kind":"markdown","optional":true},"by_month":{"type":["set","number"],"description":"This parameter takes a list of months. Valid values are 1 to 12","description_kind":"markdown","optional":true},"by_monthday":{"type":["set","number"],"description":"This parameter takes a list of days of the month. Valid values are 1 to 31 or -31 to -1","description_kind":"markdown","optional":true},"duration":{"type":"number","description":"The duration of the event.","description_kind":"markdown","required":true},"frequency":{"type":"string","description":"The frequency of the event. Can be daily, weekly, monthly","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval":{"type":"number","description":"The positive integer representing at which intervals the recurrence rule repeats.","description_kind":"markdown","optional":true},"level":{"type":"number","description":"The priority level. The higher the value, the higher the priority.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The shift's name.","description_kind":"markdown","required":true},"rolling_users":{"type":["list",["set","string"]],"description":"The list of lists with on-call users (for rolling_users event type)","description_kind":"markdown","optional":true},"start":{"type":"string","description":"The start time of the on-call shift. This parameter takes a date format as yyyy-MM-dd'T'HH:mm:ss (for example \"2020-09-05T08:00:00\")","description_kind":"markdown","required":true},"start_rotation_from_user_index":{"type":"number","description":"The index of the list of users in rolling_users, from which on-call rotation starts.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"time_zone":{"type":"string","description":"The shift's timezone. Overrides schedule's timezone.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The shift's type. Can be rolling_users, recurrent_event, single_event","description_kind":"markdown","required":true},"users":{"type":["set","string"],"description":"The list of on-call users (for single_event and recurrent_event event type).","description_kind":"markdown","optional":true},"week_start":{"type":"string","description":"Start day of the week in iCal format. Can be MO, TU, WE, TH, FR, SA, SU","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/on_call_shifts/)\n","description_kind":"markdown"}},"grafana_oncall_outgoing_webhook":{"version":0,"block":{"attributes":{"authorization_header":{"type":"string","description":"The auth data of the webhook. Used in Authorization header instead of user/password auth.","description_kind":"markdown","optional":true,"sensitive":true},"data":{"type":"string","description":"The data of the webhook.","description_kind":"markdown","optional":true},"forward_whole_payload":{"type":"bool","description":"Forwards whole payload of the alert to the webhook's url as POST data.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the outgoing webhook.","description_kind":"markdown","required":true},"password":{"type":"string","description":"The auth data of the webhook. Used for Basic authentication","description_kind":"markdown","optional":true,"sensitive":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The webhook URL.","description_kind":"markdown","required":true},"user":{"type":"string","description":"The auth data of the webhook. Used for Basic authentication.","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n","description_kind":"markdown"}},"grafana_oncall_route":{"version":0,"block":{"attributes":{"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"integration_id":{"type":"string","description":"The ID of the integration.","description_kind":"markdown","required":true},"position":{"type":"number","description":"The position of the route (starts from 0).","description_kind":"markdown","required":true},"routing_regex":{"type":"string","description":"Python Regex query. Route is chosen for an alert if there is a match inside the alert payload.","description_kind":"markdown","required":true},"routing_type":{"type":"string","description":"The type of route. Can be jinja2, regex Defaults to `regex`.","description_kind":"markdown","optional":true}},"block_types":{"msteams":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in MS teams. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"MS teams channel id. Alerts will be directed to this channel in Microsoft teams.","description_kind":"markdown","optional":true}},"description":"MS teams-specific settings for a route.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Alerts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Enable notification in Slack. Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Slack-specific settings for a route.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in Telegram. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Telegram channel id. Alerts will be directed to this channel in Telegram.","description_kind":"markdown","optional":true}},"description":"Telegram-specific settings for a route.","description_kind":"markdown"},"max_items":1}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/routes/)\n","description_kind":"markdown"}},"grafana_oncall_schedule":{"version":0,"block":{"attributes":{"ical_url_overrides":{"type":"string","description":"The URL of external iCal calendar which override primary events.","description_kind":"markdown","optional":true},"ical_url_primary":{"type":"string","description":"The URL of the external calendar iCal file.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The schedule's name.","description_kind":"markdown","required":true},"shifts":{"type":["set","string"],"description":"The list of ID's of on-call shifts.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"time_zone":{"type":"string","description":"The schedule's time zone.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The schedule's type.","description_kind":"markdown","required":true}},"block_types":{"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Reminder about schedule shifts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"user_group_id":{"type":"string","description":"Slack user group id. Members of user group will be updated when on-call users change.","description_kind":"markdown","optional":true}},"description":"The Slack-specific settings for a schedule.","description_kind":"markdown"},"max_items":1}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/schedules/)\n","description_kind":"markdown"}},"grafana_organization":{"version":0,"block":{"attributes":{"admin_user":{"type":"string","description":"The login name of the configured default admin user for the Grafana\ninstallation. If unset, this value defaults to admin, the Grafana default.\nGrafana adds the default admin user to all organizations automatically upon\ncreation, and this parameter keeps Terraform from removing it from\norganizations.\n Defaults to `admin`.","description_kind":"markdown","optional":true},"admins":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given admin\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true},"create_users":{"type":"bool","description":"Whether or not to create Grafana users specified in the organization's\nmembership if they don't already exist in Grafana. If unspecified, this\nparameter defaults to true, creating placeholder users with the name, login,\nand email set to the email of the user, and a random password. Setting this\noption to false will cause an error to be thrown for any users that do not\nalready exist in Grafana.\n Defaults to `true`.","description_kind":"markdown","optional":true},"editors":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given editor\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The display name for the Grafana organization created.","description_kind":"markdown","required":true},"org_id":{"type":"number","description":"The organization id assigned to this organization by Grafana.","description_kind":"markdown","computed":true},"viewers":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given viewer\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/org/)\n\nThis resource represents an instance-scoped resource and uses Grafana's admin APIs.\nIt does not work with API tokens or service accounts which are org-scoped. \nYou must use basic auth.\n","description_kind":"markdown"}},"grafana_organization_preferences":{"version":0,"block":{"attributes":{"home_dashboard_id":{"type":"number","description":"The Organization home dashboard ID.","description_kind":"markdown","optional":true},"home_dashboard_uid":{"type":"string","description":"The Organization home dashboard UID. This is only available in Grafana 9.0+.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"theme":{"type":"string","description":"The Organization theme. Available values are `light`, `dark`, or an empty string for the default.","description_kind":"markdown","optional":true},"timezone":{"type":"string","description":"The Organization timezone. Available values are `utc`, `browser`, or an empty string for the default.","description_kind":"markdown","optional":true},"week_start":{"type":"string","description":"The Organization week start.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/preferences/#get-current-org-prefs)\n","description_kind":"markdown"}},"grafana_playlist":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the playlist.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"item":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description_kind":"plain","computed":true},"order":{"type":"number","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/create-manage-playlists/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/playlist/)\n","description_kind":"markdown"}},"grafana_report":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"Dashboard to be sent in the report. This field is deprecated, use `dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"optional":true,"computed":true},"dashboard_uid":{"type":"string","description":"Dashboard to be sent in the report.","description_kind":"markdown","optional":true,"computed":true},"formats":{"type":["set","string"],"description":"Specifies what kind of attachment to generate for the report. Allowed values: `pdf`, `csv`, `image`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Generated identifier of the report.","description_kind":"markdown","computed":true},"include_dashboard_link":{"type":"bool","description":"Whether to include a link to the dashboard in the report. Defaults to `true`.","description_kind":"markdown","optional":true},"include_table_csv":{"type":"bool","description":"Whether to include a CSV file of table panel data. Defaults to `false`.","description_kind":"markdown","optional":true},"layout":{"type":"string","description":"Layout of the report. Allowed values: `simple`, `grid`. Defaults to `grid`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Message to be sent in the report.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"Name of the report.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"orientation":{"type":"string","description":"Orientation of the report. Allowed values: `landscape`, `portrait`. Defaults to `landscape`.","description_kind":"markdown","optional":true},"recipients":{"type":["list","string"],"description":"List of recipients of the report.","description_kind":"markdown","required":true},"reply_to":{"type":"string","description":"Reply-to email address of the report.","description_kind":"markdown","optional":true}},"block_types":{"schedule":{"nesting_mode":"list","block":{"attributes":{"custom_interval":{"type":"string","description":"Custom interval of the report.\n**Note:** This field is only available when frequency is set to `custom`.","description_kind":"markdown","optional":true},"end_time":{"type":"string","description":"End time of the report. If empty, the report will be sent indefinitely (according to frequency). Note that times will be saved as UTC in Grafana.","description_kind":"markdown","optional":true},"frequency":{"type":"string","description":"Frequency of the report. Allowed values: `never`, `once`, `hourly`, `daily`, `weekly`, `monthly`, `custom`.","description_kind":"markdown","required":true},"last_day_of_month":{"type":"bool","description":"Send the report on the last day of the month Defaults to `false`.","description_kind":"markdown","optional":true},"start_time":{"type":"string","description":"Start time of the report. If empty, the start date will be set to the creation time. Note that times will be saved as UTC in Grafana.","description_kind":"markdown","optional":true},"workdays_only":{"type":"bool","description":"Whether to send the report only on work days. Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"Schedule of the report.","description_kind":"markdown"},"min_items":1,"max_items":1},"time_range":{"nesting_mode":"list","block":{"attributes":{"from":{"type":"string","description":"Start of the time range.","description_kind":"markdown","optional":true},"to":{"type":"string","description":"End of the time range.","description_kind":"markdown","optional":true}},"description":"Time range of the report.","description_kind":"markdown"},"max_items":1}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 7.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/create-reports/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/reporting/)\n","description_kind":"markdown"}},"grafana_role":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the role.","description_kind":"markdown","optional":true},"display_name":{"type":"string","description":"Display name of the role. Available with Grafana 8.5+.","description_kind":"markdown","optional":true},"global":{"type":"bool","description":"Boolean to state whether the role is available across all organizations or not. Defaults to `false`.","description_kind":"markdown","optional":true},"group":{"type":"string","description":"Group of the role. Available with Grafana 8.5+.","description_kind":"markdown","optional":true},"hidden":{"type":"bool","description":"Boolean to state whether the role should be visible in the Grafana UI or not. Available with Grafana 8.5+. Defaults to `false`.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role","description_kind":"markdown","required":true},"uid":{"type":"string","description":"Unique identifier of the role. Used for assignments.","description_kind":"markdown","optional":true,"computed":true},"version":{"type":"number","description":"Version of the role. A role is updated only on version increase.","description_kind":"markdown","required":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"action":{"type":"string","description":"Specific action users granted with the role will be allowed to perform (for example: `users:read`)","description_kind":"markdown","required":true},"scope":{"type":"string","description":"Scope to restrict the action to a set of resources (for example: `users:*` or `roles:customrole1`) Defaults to ``.","description_kind":"markdown","optional":true}},"description":"Specific set of actions granted by the role.","description_kind":"markdown"}}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 8.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_role_assignment":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role_uid":{"type":"string","description":"Grafana RBAC role UID.","description_kind":"markdown","required":true},"service_accounts":{"type":["set","string"],"description":"IDs of service accounts that the role should be assigned to.","description_kind":"markdown","optional":true},"teams":{"type":["set","string"],"description":"IDs of teams that the role should be assigned to.","description_kind":"markdown","optional":true},"users":{"type":["set","number"],"description":"IDs of users that the role should be assigned to.","description_kind":"markdown","optional":true}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 9.2+.\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_rule_group":{"version":0,"block":{"attributes":{"folder_uid":{"type":"string","description":"The UID of the folder that the group belongs to.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval_seconds":{"type":"number","description":"The interval, in seconds, at which all rules in the group are evaluated. If a group contains many rules, the rules are evaluated sequentially.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the rule group.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The ID of the org to which the group belongs.","description_kind":"markdown","required":true}},"block_types":{"rule":{"nesting_mode":"list","block":{"attributes":{"annotations":{"type":["map","string"],"description":"Key-value pairs of metadata to attach to the alert rule that may add user-defined context, but cannot be used for matching, grouping, or routing. Defaults to `map[]`.","description_kind":"markdown","optional":true},"condition":{"type":"string","description":"The `ref_id` of the query node in the `data` field to use as the alert condition.","description_kind":"markdown","required":true},"exec_err_state":{"type":"string","description":"Describes what state to enter when the rule's query is invalid and the rule cannot be executed. Options are OK, Error, and Alerting. Defaults to `Alerting`.","description_kind":"markdown","optional":true},"for":{"type":"string","description":"The amount of time for which the rule must be breached for the rule to be considered to be Firing. Before this time has elapsed, the rule is only considered to be Pending. Defaults to `0`.","description_kind":"markdown","optional":true},"is_paused":{"type":"bool","description":"Sets whether the alert should be paused or not. Defaults to `false`.","description_kind":"markdown","optional":true},"labels":{"type":["map","string"],"description":"Key-value pairs to attach to the alert rule that can be used in matching, grouping, and routing. Defaults to `map[]`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the alert rule.","description_kind":"markdown","required":true},"no_data_state":{"type":"string","description":"Describes what state to enter when the rule's query returns No Data. Options are OK, NoData, and Alerting. Defaults to `NoData`.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The unique identifier of the alert rule.","description_kind":"markdown","computed":true}},"block_types":{"data":{"nesting_mode":"list","block":{"attributes":{"datasource_uid":{"type":"string","description":"The UID of the datasource being queried, or \"-100\" if this stage is an expression stage.","description_kind":"markdown","required":true},"model":{"type":"string","description":"Custom JSON data to send to the specified datasource when querying.","description_kind":"markdown","required":true},"query_type":{"type":"string","description":"An optional identifier for the type of query being executed. Defaults to ``.","description_kind":"markdown","optional":true},"ref_id":{"type":"string","description":"A unique string to identify this query stage within a rule.","description_kind":"markdown","required":true}},"block_types":{"relative_time_range":{"nesting_mode":"list","block":{"attributes":{"from":{"type":"number","description":"The number of seconds in the past, relative to when the rule is evaluated, at which the time range begins.","description_kind":"markdown","required":true},"to":{"type":"number","description":"The number of seconds in the past, relative to when the rule is evaluated, at which the time range ends.","description_kind":"markdown","required":true}},"description":"The time range, relative to when the query is executed, across which to query.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"A sequence of stages that describe the contents of the rule.","description_kind":"markdown"},"min_items":1}},"description":"The rules within the group.","description_kind":"markdown"},"min_items":1}},"description":"\nManages Grafana Alerting rule groups.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/alerting-rules/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/#alert-rules)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_service_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_disabled":{"type":"bool","description":"The disabled status for the service account. Defaults to `false`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the service account.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"role":{"type":"string","description":"The basic role of the service account in the organization.","description_kind":"markdown","optional":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_service_account_permission":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"service_account_id":{"type":"string","description":"The id of the service account.","description_kind":"markdown","required":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be `Edit` or `Admin`.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Specify either this or `user_id`. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Specify either this or `team_id`. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"},"min_items":1}},"description":"\n**Note:** This resource is available from Grafana 9.2.4 onwards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana)","description_kind":"markdown"}},"grafana_service_account_token":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"has_expired":{"type":"bool","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"service_account_id":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_slo":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description is a free-text field that can provide more context to an SLO.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name should be a short description of your indicator. Consider names like \"API Availability\"","description_kind":"markdown","required":true}},"block_types":{"alerting":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations will be attached to all alerts generated by any of these rules.","description_kind":"markdown"}},"fastburn":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations to attach only to Fast Burn alerts.","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels to attach only to Fast Burn alerts.","description_kind":"markdown"}}},"description":"Alerting Rules generated for Fast Burn alerts","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels will be attached to all alerts generated by any of these rules.","description_kind":"markdown"}},"slowburn":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations to attach only to Slow Burn alerts.","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels to attach only to Slow Burn alerts.","description_kind":"markdown"}}},"description":"Alerting Rules generated for Slow Burn alerts","description_kind":"markdown"}}},"description":"Configures the alerting rules that will be generated for each\n\t\t\t\ttime window associated with the SLO. Grafana SLOs can generate\n\t\t\t\talerts when the short-term error budget burn is very high, the\n\t\t\t\tlong-term error budget burn rate is high, or when the remaining\n\t\t\t\terror budget is below a certain threshold. Annotations and Labels support templating.","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - \"^[a-zA-Z_][a-zA-Z0-9_]*$\"","description_kind":"markdown"}},"objectives":{"nesting_mode":"list","block":{"attributes":{"value":{"type":"number","description":"Value between 0 and 1. If the value of the query is above the objective, the SLO is met.","description_kind":"markdown","required":true},"window":{"type":"string","description":"A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.","description_kind":"markdown","required":true}},"description":"Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.","description_kind":"markdown"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Query type must be one of: \"freeform\", \"query\", \"ratio\", or \"threshold\"","description_kind":"markdown","required":true}},"block_types":{"freeform":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Freeform Query Field","description_kind":"markdown","required":true}},"description_kind":"plain"},"max_items":1},"ratio":{"nesting_mode":"list","block":{"attributes":{"group_by_labels":{"type":["list","string"],"description":"Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - \"^[a-zA-Z_][a-zA-Z0-9_]*$\"","description_kind":"markdown","optional":true},"success_metric":{"type":"string","description":"Counter metric for success events (numerator)","description_kind":"markdown","required":true},"total_metric":{"type":"string","description":"Metric for total events (denominator)","description_kind":"markdown","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.","description_kind":"markdown"},"min_items":1}},"description":"\nResource manages Grafana SLOs. \n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/api/)\n* [Additional Information On Alerting Rule Annotations and Labels](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#templating/)\n\t\t","description_kind":"markdown"}},"grafana_synthetic_monitoring_check":{"version":0,"block":{"attributes":{"alert_sensitivity":{"type":"string","description":"Can be set to `none`, `low`, `medium`, or `high` to correspond to the check [alert levels](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/synthetic-monitoring-alerting/). Defaults to `none`.","description_kind":"markdown","optional":true},"basic_metrics_only":{"type":"bool","description":"Metrics are reduced by default. Set this to `false` if you'd like to publish all metrics. We maintain a [full list of metrics](https://github.com/grafana/synthetic-monitoring-agent/tree/main/internal/scraper/testdata) collected for each. Defaults to `true`.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Whether to enable the check. Defaults to `true`.","description_kind":"markdown","optional":true},"frequency":{"type":"number","description":"How often the check runs in milliseconds (the value is not truly a \"frequency\" but a \"period\"). The minimum acceptable value is 1 second (1000 ms), and the maximum is 120 seconds (120000 ms). Defaults to `60000`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the check.","description_kind":"markdown","computed":true},"job":{"type":"string","description":"Name used for job label.","description_kind":"markdown","required":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs. The maximum number of labels that can be specified per check is 5. These are applied, along with the probe-specific labels, to the outgoing metrics. The names and values of the labels cannot be empty, and the maximum length is 32 bytes.","description_kind":"markdown","optional":true},"probes":{"type":["set","number"],"description":"List of probe location IDs where this target will be checked from.","description_kind":"markdown","required":true},"target":{"type":"string","description":"Hostname to ping.","description_kind":"markdown","required":true},"tenant_id":{"type":"number","description":"The tenant ID of the check.","description_kind":"markdown","computed":true},"timeout":{"type":"number","description":"Specifies the maximum running time for the check in milliseconds. The minimum acceptable value is 1 second (1000 ms), and the maximum 10 seconds (10000 ms). Defaults to `3000`.","description_kind":"markdown","optional":true}},"block_types":{"settings":{"nesting_mode":"set","block":{"block_types":{"dns":{"nesting_mode":"set","block":{"attributes":{"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"port":{"type":"number","description":"Port to target. Defaults to `53`.","description_kind":"markdown","optional":true},"protocol":{"type":"string","description":"`TCP` or `UDP`. Defaults to `UDP`.","description_kind":"markdown","optional":true},"record_type":{"type":"string","description":"One of `ANY`, `A`, `AAAA`, `CNAME`, `MX`, `NS`, `PTR`, `SOA`, `SRV`, `TXT`. Defaults to `A`.","description_kind":"markdown","optional":true},"server":{"type":"string","description":"DNS server address to target. Defaults to `8.8.8.8`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true},"valid_r_codes":{"type":["set","string"],"description":"List of valid response codes. Options include `NOERROR`, `BADALG`, `BADMODE`, `BADKEY`, `BADCOOKIE`, `BADNAME`, `BADSIG`, `BADTIME`, `BADTRUNC`, `BADVERS`, `FORMERR`, `NOTIMP`, `NOTAUTH`, `NOTZONE`, `NXDOMAIN`, `NXRRSET`, `REFUSED`, `SERVFAIL`, `YXDOMAIN`, `YXRRSET`.","description_kind":"markdown","optional":true}},"block_types":{"validate_additional_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate additional matches.","description_kind":"markdown"}},"validate_answer_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate response answer.","description_kind":"markdown"},"max_items":1},"validate_authority_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate response authority.","description_kind":"markdown"},"max_items":1}},"description":"Settings for DNS check. The target must be a valid hostname (or IP address for `PTR` records).","description_kind":"markdown"},"max_items":1},"http":{"nesting_mode":"set","block":{"attributes":{"bearer_token":{"type":"string","description":"Token for use with bearer authorization header.","description_kind":"markdown","optional":true},"body":{"type":"string","description":"The body of the HTTP request used in probe.","description_kind":"markdown","optional":true},"cache_busting_query_param_name":{"type":"string","description":"The name of the query parameter used to prevent the server from using a cached response. Each probe will assign a random value to this parameter each time a request is made.","description_kind":"markdown","optional":true},"fail_if_body_matches_regexp":{"type":["set","string"],"description":"List of regexes. If any match the response body, the check will fail.","description_kind":"markdown","optional":true},"fail_if_body_not_matches_regexp":{"type":["set","string"],"description":"List of regexes. If any do not match the response body, the check will fail.","description_kind":"markdown","optional":true},"fail_if_not_ssl":{"type":"bool","description":"Fail if SSL is not present. Defaults to `false`.","description_kind":"markdown","optional":true},"fail_if_ssl":{"type":"bool","description":"Fail if SSL is present. Defaults to `false`.","description_kind":"markdown","optional":true},"headers":{"type":["set","string"],"description":"The HTTP headers set for the probe.","description_kind":"markdown","optional":true},"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"method":{"type":"string","description":"Request method. One of `GET`, `CONNECT`, `DELETE`, `HEAD`, `OPTIONS`, `POST`, `PUT`, `TRACE` Defaults to `GET`.","description_kind":"markdown","optional":true},"no_follow_redirects":{"type":"bool","description":"Do not follow redirects. Defaults to `false`.","description_kind":"markdown","optional":true},"proxy_url":{"type":"string","description":"Proxy URL.","description_kind":"markdown","optional":true},"valid_http_versions":{"type":["set","string"],"description":"List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2`","description_kind":"markdown","optional":true},"valid_status_codes":{"type":["set","number"],"description":"Accepted status codes. If unset, defaults to 2xx.","description_kind":"markdown","optional":true}},"block_types":{"basic_auth":{"nesting_mode":"set","block":{"attributes":{"password":{"type":"string","description":"Basic auth password.","description_kind":"markdown","required":true},"username":{"type":"string","description":"Basic auth username.","description_kind":"markdown","required":true}},"description":"Basic auth settings.","description_kind":"markdown"},"max_items":1},"fail_if_header_matches_regexp":{"nesting_mode":"set","block":{"attributes":{"allow_missing":{"type":"bool","description":"Allow header to be missing from responses. Defaults to `false`.","description_kind":"markdown","optional":true},"header":{"type":"string","description":"Header name.","description_kind":"markdown","required":true},"regexp":{"type":"string","description":"Regex that header value should match.","description_kind":"markdown","required":true}},"description":"Check fails if headers match.","description_kind":"markdown"}},"fail_if_header_not_matches_regexp":{"nesting_mode":"set","block":{"attributes":{"allow_missing":{"type":"bool","description":"Allow header to be missing from responses. Defaults to `false`.","description_kind":"markdown","optional":true},"header":{"type":"string","description":"Header name.","description_kind":"markdown","required":true},"regexp":{"type":"string","description":"Regex that header value should match.","description_kind":"markdown","required":true}},"description":"Check fails if headers do not match.","description_kind":"markdown"}},"tls_config":{"nesting_mode":"set","block":{"attributes":{"ca_cert":{"type":"string","description":"CA certificate in PEM format.","description_kind":"markdown","optional":true},"client_cert":{"type":"string","description":"Client certificate in PEM format.","description_kind":"markdown","optional":true},"client_key":{"type":"string","description":"Client key in PEM format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Disable target certificate validation. Defaults to `false`.","description_kind":"markdown","optional":true},"server_name":{"type":"string","description":"Used to verify the hostname for the targets.","description_kind":"markdown","optional":true}},"description":"TLS config.","description_kind":"markdown"},"max_items":1}},"description":"Settings for HTTP check. The target must be a URL (http or https).","description_kind":"markdown"},"max_items":1},"ping":{"nesting_mode":"set","block":{"attributes":{"dont_fragment":{"type":"bool","description":"Set the DF-bit in the IP-header. Only works with ipV4. Defaults to `false`.","description_kind":"markdown","optional":true},"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"payload_size":{"type":"number","description":"Payload size. Defaults to `0`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true}},"description":"Settings for ping (ICMP) check. The target must be a valid hostname or IP address.","description_kind":"markdown"},"max_items":1},"tcp":{"nesting_mode":"set","block":{"attributes":{"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true},"tls":{"type":"bool","description":"Whether or not TLS is used when the connection is initiated. Defaults to `false`.","description_kind":"markdown","optional":true}},"block_types":{"query_response":{"nesting_mode":"set","block":{"attributes":{"expect":{"type":"string","description":"Response to expect.","description_kind":"markdown","required":true},"send":{"type":"string","description":"Data to send.","description_kind":"markdown","required":true},"start_tls":{"type":"bool","description":"Upgrade TCP connection to TLS. Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"The query sent in the TCP probe and the expected associated response.","description_kind":"markdown"}},"tls_config":{"nesting_mode":"set","block":{"attributes":{"ca_cert":{"type":"string","description":"CA certificate in PEM format.","description_kind":"markdown","optional":true},"client_cert":{"type":"string","description":"Client certificate in PEM format.","description_kind":"markdown","optional":true},"client_key":{"type":"string","description":"Client key in PEM format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Disable target certificate validation. Defaults to `false`.","description_kind":"markdown","optional":true},"server_name":{"type":"string","description":"Used to verify the hostname for the targets.","description_kind":"markdown","optional":true}},"description":"TLS config.","description_kind":"markdown"},"max_items":1}},"description":"Settings for TCP check. The target must be of the form `\u003chost\u003e:\u003cport\u003e`, where the host portion must be a valid hostname or IP address.","description_kind":"markdown"},"max_items":1},"traceroute":{"nesting_mode":"set","block":{"attributes":{"max_hops":{"type":"number","description":"Maximum TTL for the trace Defaults to `64`.","description_kind":"markdown","optional":true},"max_unknown_hops":{"type":"number","description":"Maximum number of hosts to travers that give no response Defaults to `15`.","description_kind":"markdown","optional":true},"ptr_lookup":{"type":"bool","description":"Reverse lookup hostnames from IP addresses Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Settings for traceroute check. The target must be a valid hostname or IP address","description_kind":"markdown"},"max_items":1}},"description":"Check settings. Should contain exactly one nested block.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"\nSynthetic Monitoring checks are tests that run on selected probes at defined\nintervals and report metrics and logs back to your Grafana Cloud account. The\ntarget for checks can be a domain name, a server, or a website, depending on\nwhat information you would like to gather about your endpoint. You can define\nmultiple checks for a single endpoint to check different capabilities.\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/checks/)\n","description_kind":"markdown"}},"grafana_synthetic_monitoring_installation":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metrics_publisher_key":{"type":"string","description":"The Cloud API Key with the `MetricsPublisher` role used to publish metrics to the SM API","description_kind":"markdown","required":true,"sensitive":true},"sm_access_token":{"type":"string","description":"Generated token to access the SM API.","description_kind":"markdown","computed":true},"stack_id":{"type":"string","description":"The ID or slug of the stack to install SM on.","description_kind":"markdown","required":true},"stack_sm_api_url":{"type":"string","description":"The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here: https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/#probe-api-server-url. A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region, this field is computed automatically and readable.","description_kind":"markdown","optional":true,"computed":true}},"description":"\nSets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/installation/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n","description_kind":"markdown"}},"grafana_synthetic_monitoring_probe":{"version":0,"block":{"attributes":{"auth_token":{"type":"string","description":"The probe authentication token. Your probe must use this to authenticate with Grafana Cloud.","description_kind":"markdown","computed":true,"sensitive":true},"id":{"type":"string","description":"The ID of the probe.","description_kind":"markdown","computed":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs.","description_kind":"markdown","optional":true},"latitude":{"type":"number","description":"Latitude coordinates.","description_kind":"markdown","required":true},"longitude":{"type":"number","description":"Longitude coordinates.","description_kind":"markdown","required":true},"name":{"type":"string","description":"Name of the probe.","description_kind":"markdown","required":true},"public":{"type":"bool","description":"Public probes are run by Grafana Labs and can be used by all users. Only Grafana Labs managed public probes will be set to `true`. Defaults to `false`.","description_kind":"markdown","optional":true},"region":{"type":"string","description":"Region of the probe.","description_kind":"markdown","required":true},"tenant_id":{"type":"number","description":"The tenant ID of the probe.","description_kind":"markdown","computed":true}},"description":"\nBesides the public probes run by Grafana Labs, you can also install your\nown private probes. These are only accessible to you and only write data to\nyour Grafana Cloud account. Private probes are instances of the open source\nGrafana Synthetic Monitoring Agent.\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/)\n","description_kind":"markdown"}},"grafana_team":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"An email address for the team.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ignore_externally_synced_members":{"type":"bool","description":"Ignores team members that have been added to team by [Team Sync](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/).\nTeam Sync can be provisioned using [grafana_team_external_group resource](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/team_external_group).\n Defaults to `true`.","description_kind":"markdown","optional":true},"members":{"type":["set","string"],"description":"A set of email addresses corresponding to users who should be given membership\nto the team. Note: users specified here must already exist in Grafana.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana team created.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"team_id":{"type":"number","description":"The team id assigned to this team by Grafana.","description_kind":"markdown","computed":true}},"block_types":{"preferences":{"nesting_mode":"list","block":{"attributes":{"home_dashboard_uid":{"type":"string","description":"The UID of the dashboard to display when a team member logs in. Defaults to ``.","description_kind":"markdown","optional":true},"theme":{"type":"string","description":"The default theme for this team. Available themes are `light`, `dark`, or an empty string for the default theme. Defaults to ``.","description_kind":"markdown","optional":true},"timezone":{"type":"string","description":"The default timezone for this team. Available values are `utc`, `browser`, or an empty string for the default. Defaults to ``.","description_kind":"markdown","optional":true}},"description_kind":"plain"},"max_items":1},"team_sync":{"nesting_mode":"list","block":{"attributes":{"groups":{"type":["set","string"],"description_kind":"plain","optional":true}},"description":"Sync external auth provider groups with this Grafana team. Only available in Grafana Enterprise.\n\t* [Official documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/)\n\t* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team_sync/)","description_kind":"markdown"},"max_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/team-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team/)\n","description_kind":"markdown"}},"grafana_team_external_group":{"version":0,"block":{"attributes":{"groups":{"type":["set","string"],"description":"The team external groups list","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"team_id":{"type":"string","description":"The Team ID","description_kind":"markdown","required":true}},"description":"Use the `team_sync` attribute of the `grafana_team` resource instead.","description_kind":"markdown","deprecated":true}},"grafana_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email address of the Grafana user.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_admin":{"type":"bool","description":"Whether to make user an admin. Defaults to `false`.","description_kind":"markdown","optional":true},"login":{"type":"string","description":"The username for the Grafana user.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana user.","description_kind":"markdown","optional":true},"password":{"type":"string","description":"The password for the Grafana user.","description_kind":"markdown","required":true,"sensitive":true},"user_id":{"type":"number","description":"The numerical ID of the Grafana user.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis resource represents an instance-scoped resource and uses Grafana's admin APIs.\nIt does not work with API tokens or service accounts which are org-scoped. \nYou must use basic auth.\n","description_kind":"markdown"}}},"data_source_schemas":{"grafana_cloud_ips":{"version":0,"block":{"attributes":{"hosted_alerts":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted alerts.","description_kind":"markdown","computed":true},"hosted_grafana":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted Grafana.","description_kind":"markdown","computed":true},"hosted_logs":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted logs.","description_kind":"markdown","computed":true},"hosted_metrics":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted metrics.","description_kind":"markdown","computed":true},"hosted_traces":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted traces.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Data source for retrieving sets of cloud IPs. See https://grafana.com/docs/grafana-cloud/reference/allow-list/ for more info","description_kind":"markdown"}},"grafana_cloud_organization":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","computed":true},"slug":{"type":"string","description_kind":"plain","optional":true,"computed":true},"updated_at":{"type":"string","description_kind":"plain","computed":true},"url":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"grafana_cloud_stack":{"version":0,"block":{"attributes":{"alertmanager_name":{"type":"string","description":"Name of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_status":{"type":"string","description":"Status of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_url":{"type":"string","description":"Base URL of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_user_id":{"type":"number","description":"User ID of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of stack.","description_kind":"markdown","computed":true},"graphite_name":{"type":"string","description_kind":"plain","computed":true},"graphite_status":{"type":"string","description_kind":"plain","computed":true},"graphite_url":{"type":"string","description_kind":"plain","computed":true},"graphite_user_id":{"type":"number","description_kind":"plain","computed":true},"id":{"type":"string","description":"The stack id assigned to this stack by Grafana.","description_kind":"markdown","computed":true},"logs_name":{"type":"string","description_kind":"plain","computed":true},"logs_status":{"type":"string","description_kind":"plain","computed":true},"logs_url":{"type":"string","description_kind":"plain","computed":true},"logs_user_id":{"type":"number","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of stack. Conventionally matches the url of the instance (e.g. “\u003cstack_slug\u003e.grafana.net”).","description_kind":"markdown","computed":true},"org_id":{"type":"number","description":"Organization id to assign to this stack.","description_kind":"markdown","computed":true},"org_name":{"type":"string","description":"Organization name to assign to this stack.","description_kind":"markdown","computed":true},"org_slug":{"type":"string","description":"Organization slug to assign to this stack.","description_kind":"markdown","computed":true},"prometheus_name":{"type":"string","description":"Prometheus name for this instance.","description_kind":"markdown","computed":true},"prometheus_remote_endpoint":{"type":"string","description":"Use this URL to query hosted metrics data e.g. Prometheus data source in Grafana","description_kind":"markdown","computed":true},"prometheus_remote_write_endpoint":{"type":"string","description":"Use this URL to send prometheus metrics to Grafana cloud","description_kind":"markdown","computed":true},"prometheus_status":{"type":"string","description":"Prometheus status for this instance.","description_kind":"markdown","computed":true},"prometheus_url":{"type":"string","description":"Prometheus url for this instance.","description_kind":"markdown","computed":true},"prometheus_user_id":{"type":"number","description":"Prometheus user ID. Used for e.g. remote_write.","description_kind":"markdown","computed":true},"region_slug":{"type":"string","description":"The region this stack is deployed to.","description_kind":"markdown","computed":true},"slug":{"type":"string","description":"Subdomain that the Grafana instance will be available at (i.e. setting slug to “\u003cstack_slug\u003e” will make the instance\navailable at “https://\u003cstack_slug\u003e.grafana.net\".","description_kind":"markdown","required":true},"status":{"type":"string","description":"Status of the stack.","description_kind":"markdown","computed":true},"traces_name":{"type":"string","description_kind":"plain","computed":true},"traces_status":{"type":"string","description_kind":"plain","computed":true},"traces_url":{"type":"string","description":"Base URL of the Traces instance configured for this stack. To use this in the Tempo data source in Grafana, append `/tempo` to the URL.","description_kind":"markdown","computed":true},"traces_user_id":{"type":"number","description_kind":"plain","computed":true},"url":{"type":"string","description":"Custom URL for the Grafana instance. Must have a CNAME setup to point to `.grafana.net` before creating the stack","description_kind":"markdown","computed":true}},"description":"Data source for Grafana Stack","description_kind":"markdown"}},"grafana_dashboard":{"version":1,"block":{"attributes":{"config_json":{"type":"string","description":"The complete dashboard model JSON.","description_kind":"markdown","computed":true},"dashboard_id":{"type":"number","description":"The numerical ID of the Grafana dashboard. Specify either this or `uid`. Defaults to `-1`.","description_kind":"markdown","optional":true},"folder":{"type":"number","description":"The numerical ID of the folder where the Grafana dashboard is found.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_starred":{"type":"bool","description":"Whether or not the Grafana dashboard is starred. Starred Dashboards will show up on your own Home Dashboard by default, and are a convenient way to mark Dashboards that you’re interested in.","description_kind":"markdown","computed":true},"slug":{"type":"string","description":"URL slug of the dashboard (deprecated).","description_kind":"markdown","computed":true},"title":{"type":"string","description":"The title of the Grafana dashboard.","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The uid of the Grafana dashboard. Specify either this or `dashboard_id`. Defaults to ``.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The full URL of the dashboard.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"The numerical version of the Grafana dashboard.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [Folder/Dashboard Search HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_dashboard_search/)\n* [Dashboard HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_dashboards":{"version":0,"block":{"attributes":{"dashboards":{"type":["list",["object",{"folder_title":"string","title":"string","uid":"string"}]],"description_kind":"plain","computed":true},"folder_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana folders containing dashboards. Specify to filter for dashboards by folder (eg. `[0]` for General folder), or leave blank to get all dashboards in all folders.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"limit":{"type":"number","description":"Maximum number of dashboard search results to return. Defaults to `5000`.","description_kind":"markdown","optional":true},"tags":{"type":["list","string"],"description":"List of string Grafana dashboard tags to search for, eg. `[\"prod\"]`. Used only as search input, i.e., attribute value will remain unchanged.","description_kind":"markdown","optional":true}},"description":"\nDatasource for retrieving all dashboards. Specify list of folder IDs to search in for dashboards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [Folder/Dashboard Search HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_dashboard_search/)\n* [Dashboard HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_data_source":{"version":1,"block":{"attributes":{"access_mode":{"type":"string","description":"The method by which Grafana will access the data source: `proxy` or `direct`.","description_kind":"markdown","computed":true},"basic_auth_enabled":{"type":"bool","description":"Whether to enable basic auth for the data source.","description_kind":"markdown","computed":true},"basic_auth_username":{"type":"string","description":"Basic auth username.","description_kind":"markdown","computed":true},"database_name":{"type":"string","description":"(Required by some data source types) The name of the database to use on the selected data source server.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Whether to set the data source as default. This should only be `true` to a single data source.","description_kind":"markdown","computed":true},"json_data_encoded":{"type":"string","description":"Serialized JSON string containing the json data. This attribute can be used to pass configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The data source type. Must be one of the supported data source keywords.","description_kind":"markdown","computed":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL for the data source. The type of URL required varies depending on the chosen data source type.","description_kind":"markdown","computed":true},"username":{"type":"string","description":"(Required by some data source types) The username to use to authenticate to the data source.","description_kind":"markdown","computed":true}},"description":"Get details about a Grafana Datasource querying by either name, uid or ID","description_kind":"markdown"}},"grafana_folder":{"version":0,"block":{"attributes":{"id":{"type":"number","description":"The numerical ID of the Grafana folder.","description_kind":"markdown","computed":true},"title":{"type":"string","description":"The name of the Grafana folder.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"The uid of the Grafana folder.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The full URL of the folder.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_folders":{"version":0,"block":{"attributes":{"folders":{"type":["set",["object",{"id":"number","title":"string","uid":"string","url":"string"}]],"description":"The Grafana instance's folders.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_library_panel":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"Timestamp when the library panel was created.","description_kind":"markdown","computed":true},"dashboard_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana dashboards containing the library panel.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of the library panel.","description_kind":"markdown","computed":true},"folder_id":{"type":"string","description":"ID of the folder where the library panel is stored.","description_kind":"markdown","computed":true},"folder_name":{"type":"string","description":"Name of the folder containing the library panel.","description_kind":"markdown","computed":true},"folder_uid":{"type":"string","description":"Unique ID (UID) of the folder containing the library panel.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"model_json":{"type":"string","description":"The JSON model for the library panel.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"Name of the library panel.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The numeric ID of the library panel computed by Grafana.","description_kind":"markdown","computed":true},"type":{"type":"string","description":"Type of the library panel (eg. text).","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The unique identifier (UID) of the library panel.","description_kind":"markdown","optional":true},"updated":{"type":"string","description":"Timestamp when the library panel was last modified.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the library panel.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving a single library panel by name or uid.","description_kind":"markdown"}},"grafana_oncall_action":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The action name.","description_kind":"markdown","required":true}},"description":"\n**Note:** This data source is going to be deprecated, please use outgoing webhook data source instead.\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n!\u003e Deprecated: Use the `grafana_oncall_outgoing_webhook` data source instead.\n","description_kind":"markdown","deprecated":true}},"grafana_oncall_escalation_chain":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The escalation chain name.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n","description_kind":"markdown"}},"grafana_oncall_outgoing_webhook":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The outgoing webhook name.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n","description_kind":"markdown"}},"grafana_oncall_schedule":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The schedule name.","description_kind":"markdown","required":true},"type":{"type":"string","description":"The schedule type.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/on-call-schedules/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/schedules/)\n","description_kind":"markdown"}},"grafana_oncall_slack_channel":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The Slack channel name.","description_kind":"markdown","required":true},"slack_id":{"type":"string","description":"The Slack ID of the channel.","description_kind":"markdown","computed":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/slack_channels/)\n","description_kind":"markdown"}},"grafana_oncall_team":{"version":0,"block":{"attributes":{"avatar_url":{"type":"string","description_kind":"plain","computed":true},"email":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The team name.","description_kind":"markdown","required":true}},"description_kind":"plain"}},"grafana_oncall_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email of the user.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description":"The role of the user.","description_kind":"markdown","computed":true},"username":{"type":"string","description":"The username of the user.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/users/)\n","description_kind":"markdown"}},"grafana_oncall_user_group":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slack_handle":{"type":"string","description_kind":"plain","required":true},"slack_id":{"type":"string","description_kind":"plain","computed":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/user_groups/)\n","description_kind":"markdown"}},"grafana_organization":{"version":0,"block":{"attributes":{"admins":{"type":["set","string"],"description":"A list of email addresses corresponding to users given admin access to the organization.","description_kind":"markdown","computed":true},"editors":{"type":["set","string"],"description":"A list of email addresses corresponding to users given editor access to the organization.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the Organization.","description_kind":"markdown","required":true},"viewers":{"type":["set","string"],"description":"A list of email addresses corresponding to users given viewer access to the organization.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/org/)\n","description_kind":"markdown"}},"grafana_organization_preferences":{"version":0,"block":{"attributes":{"home_dashboard_id":{"type":"number","description":"The Organization home dashboard ID.","description_kind":"markdown","computed":true},"home_dashboard_uid":{"type":"string","description":"The Organization home dashboard UID. This is only available in Grafana 9.0+.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","computed":true},"theme":{"type":"string","description":"The Organization theme. Available values are `light`, `dark`, or an empty string for the default.","description_kind":"markdown","computed":true},"timezone":{"type":"string","description":"The Organization timezone. Available values are `utc`, `browser`, or an empty string for the default.","description_kind":"markdown","computed":true},"week_start":{"type":"string","description":"The Organization week start.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/preferences/#get-current-org-prefs)\n","description_kind":"markdown"}},"grafana_role":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the role.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the role. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"global":{"type":"bool","description":"Boolean to state whether the role is available across all organizations or not.","description_kind":"markdown","computed":true},"group":{"type":"string","description":"Group of the role. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"hidden":{"type":"bool","description":"Boolean to state whether the role should be visible in the Grafana UI or not. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role","description_kind":"markdown","required":true},"permissions":{"type":["set",["object",{"action":"string","scope":"string"}]],"description":"Specific set of actions granted by the role.","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"Unique identifier of the role. Used for assignments.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the role. A role is updated only on version increase.","description_kind":"markdown","computed":true}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 8.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_slos":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slos":{"type":["list",["object",{"alerting":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"fastburn":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"label":["list",["object",{"key":"string","value":"string"}]]}]],"label":["list",["object",{"key":"string","value":"string"}]],"slowburn":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"label":["list",["object",{"key":"string","value":"string"}]]}]]}]],"description":"string","label":["list",["object",{"key":"string","value":"string"}]],"name":"string","objectives":["list",["object",{"value":"number","window":"string"}]],"query":["list",["object",{"freeform":["list",["object",{"query":"string"}]],"ratio":["list",["object",{"group_by_labels":["list","string"],"success_metric":"string","total_metric":"string"}]],"type":"string"}]],"uuid":"string"}]],"description":"Returns a list of all SLOs\"","description_kind":"markdown","computed":true}},"description":"\nDatasource for retrieving all SLOs.\n\t\t\n* [Official documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/api/)\n* [Additional Information On Alerting Rule Annotations and Labels](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#templating/)\n\t\t\t\t","description_kind":"markdown"}},"grafana_synthetic_monitoring_probe":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of the probe.","description_kind":"markdown","computed":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs.","description_kind":"markdown","computed":true},"latitude":{"type":"number","description":"Latitude coordinates.","description_kind":"markdown","computed":true},"longitude":{"type":"number","description":"Longitude coordinates.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"Name of the probe.","description_kind":"markdown","required":true},"public":{"type":"bool","description":"Public probes are run by Grafana Labs and can be used by all users. Only Grafana Labs managed public probes will be set to `true`.","description_kind":"markdown","computed":true},"region":{"type":"string","description":"Region of the probe.","description_kind":"markdown","computed":true},"tenant_id":{"type":"number","description":"The tenant ID of the probe.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving a single probe by name.","description_kind":"markdown"}},"grafana_synthetic_monitoring_probes":{"version":0,"block":{"attributes":{"filter_deprecated":{"type":"bool","description":"If true, only probes that are not deprecated will be returned. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"probes":{"type":["map","number"],"description":"Map of probes with their names as keys and IDs as values.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving all probes.","description_kind":"markdown"}},"grafana_team":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"An email address for the team.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description":"A set of email addresses corresponding to users who should be given membership\nto the team. Note: users specified here must already exist in Grafana.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the Grafana team","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"preferences":{"type":["list",["object",{"home_dashboard_uid":"string","theme":"string","timezone":"string"}]],"description_kind":"plain","computed":true},"read_team_sync":{"type":"bool","description":"Whether to read the team sync settings. This is only available in Grafana Enterprise. Defaults to `false`.","description_kind":"markdown","optional":true},"team_id":{"type":"number","description":"The team id assigned to this team by Grafana.","description_kind":"markdown","computed":true},"team_sync":{"type":["list",["object",{"groups":["set","string"]}]],"description":"Sync external auth provider groups with this Grafana team. Only available in Grafana Enterprise.\n\t* [Official documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/)\n\t* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team_sync/)","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/team-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team/)\n","description_kind":"markdown"}},"grafana_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email address of the Grafana user. Defaults to ``.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_admin":{"type":"bool","description":"Whether the user is an admin.","description_kind":"markdown","computed":true},"login":{"type":"string","description":"The username for the Grafana user. Defaults to ``.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana user.","description_kind":"markdown","computed":true},"user_id":{"type":"number","description":"The numerical ID of the Grafana user. Defaults to `-1`.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n","description_kind":"markdown"}},"grafana_users":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"users":{"type":["set",["object",{"email":"string","id":"number","is_admin":"bool","login":"string","name":"string"}]],"description":"The Grafana instance's users.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\t\t\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\t\t","description_kind":"markdown"}}}}}} +{"format_version":"1.0","provider_schemas":{"registry.terraform.io/grafana/grafana":{"provider":{"version":0,"block":{"attributes":{"auth":{"type":"string","description":"API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via the `GRAFANA_AUTH` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"ca_cert":{"type":"string","description":"Certificate CA bundle (file path or literal value) to use to verify the Grafana server's certificate. May alternatively be set via the `GRAFANA_CA_CERT` environment variable.","description_kind":"markdown","optional":true},"cloud_api_key":{"type":"string","description":"Access Policy Token (or API key) for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"cloud_api_url":{"type":"string","description":"Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.","description_kind":"markdown","optional":true},"http_headers":{"type":["map","string"],"description":"Optional. HTTP headers mapping keys to values used for accessing the Grafana and Grafana Cloud APIs. May alternatively be set via the `GRAFANA_HTTP_HEADERS` environment variable in JSON format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Skip TLS certificate verification. May alternatively be set via the `GRAFANA_INSECURE_SKIP_VERIFY` environment variable.","description_kind":"markdown","optional":true},"oncall_access_token":{"type":"string","description":"A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"oncall_url":{"type":"string","description":"An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.","description_kind":"markdown","optional":true},"org_id":{"type":"number","description":"Deprecated: Use the `org_id` attributes on resources instead.","description_kind":"markdown","deprecated":true,"optional":true},"retries":{"type":"number","description":"The amount of retries to use for Grafana API and Grafana Cloud API calls. May alternatively be set via the `GRAFANA_RETRIES` environment variable.","description_kind":"markdown","optional":true},"retry_status_codes":{"type":["set","string"],"description":"The status codes to retry on for Grafana API and Grafana Cloud API calls. Use `x` as a digit wildcard. Defaults to 429 and 5xx. May alternatively be set via the `GRAFANA_RETRY_STATUS_CODES` environment variable.","description_kind":"markdown","optional":true},"retry_wait":{"type":"number","description":"The amount of time in seconds to wait between retries for Grafana API and Grafana Cloud API calls. May alternatively be set via the `GRAFANA_RETRY_WAIT` environment variable.","description_kind":"markdown","optional":true},"sm_access_token":{"type":"string","description":"A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.","description_kind":"markdown","optional":true,"sensitive":true},"sm_url":{"type":"string","description":"Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The correct value for each service region is cited in the [Synthetic Monitoring documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/#probe-api-server-url). Note the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for each provider ensures all providers interact with the same SM API.","description_kind":"markdown","optional":true},"store_dashboard_sha256":{"type":"bool","description":"Set to true if you want to save only the sha256sum instead of complete dashboard model JSON in the tfstate.","description_kind":"markdown","optional":true},"tls_cert":{"type":"string","description":"Client TLS certificate (file path or literal value) to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_CERT` environment variable.","description_kind":"markdown","optional":true},"tls_key":{"type":"string","description":"Client TLS key (file path or literal value) to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY` environment variable.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.","description_kind":"markdown","optional":true}},"description_kind":"plain"}},"resource_schemas":{"grafana_annotation":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"The ID of the dashboard on which to create the annotation. Deprecated: Use dashboard_uid instead.","description_kind":"markdown","deprecated":true,"optional":true},"dashboard_uid":{"type":"string","description":"The ID of the dashboard on which to create the annotation.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The ID of the dashboard panel on which to create the annotation.","description_kind":"markdown","optional":true},"tags":{"type":["set","string"],"description":"The tags to associate with the annotation.","description_kind":"markdown","optional":true},"text":{"type":"string","description":"The text to associate with the annotation.","description_kind":"markdown","required":true},"time":{"type":"string","description":"The RFC 3339-formatted time string indicating the annotation's time.","description_kind":"markdown","optional":true,"computed":true},"time_end":{"type":"string","description":"The RFC 3339-formatted time string indicating the annotation's end time.","description_kind":"markdown","optional":true,"computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/annotate-visualizations/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/annotations/)\n","description_kind":"markdown"}},"grafana_api_key":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"role":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true}},"description":"\nManages Grafana API Keys.\n\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/auth/)\n\n!\u003e Deprecated: please use `grafana_service_account` and `grafana_service_account_token` instead, see [Migrate API keys to Grafana service accounts using Terraform](https://grafana.com/docs/grafana/latest/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-terraform) for more information.\n","description_kind":"markdown","deprecated":true}},"grafana_cloud_access_policy":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description":"Creation date of the access policy.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the access policy. Defaults to the name.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the access policy.","description_kind":"markdown","required":true},"policy_id":{"type":"string","description":"ID of the access policy.","description_kind":"markdown","computed":true},"region":{"type":"string","description":"Region where the API is deployed. Generally where the stack is deployed. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","required":true},"scopes":{"type":["set","string"],"description":"Scopes of the access policy. See https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/#scopes for possible values.","description_kind":"markdown","required":true},"updated_at":{"type":"string","description":"Last update date of the access policy.","description_kind":"markdown","computed":true}},"block_types":{"realm":{"nesting_mode":"set","block":{"attributes":{"identifier":{"type":"string","description":"The identifier of the org or stack. For orgs, this is the slug, for stacks, this is the stack ID.","description_kind":"markdown","required":true},"type":{"type":"string","description":"Whether a policy applies to a Cloud org or a specific stack. Should be one of `org` or `stack`.","description_kind":"markdown","required":true}},"block_types":{"label_policy":{"nesting_mode":"set","block":{"attributes":{"selector":{"type":"string","description":"The label selector to match in metrics or logs query. Should be in PromQL or LogQL format.","description_kind":"markdown","required":true}},"description_kind":"plain"}}},"description_kind":"plain"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#create-an-access-policy)\n","description_kind":"markdown"}},"grafana_cloud_access_policy_token":{"version":0,"block":{"attributes":{"access_policy_id":{"type":"string","description":"ID of the access policy for which to create a token.","description_kind":"markdown","required":true},"created_at":{"type":"string","description":"Creation date of the access policy token.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the access policy token. Defaults to the name.","description_kind":"markdown","optional":true},"expires_at":{"type":"string","description":"Expiration date of the access policy token. Does not expire by default.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the access policy token.","description_kind":"markdown","required":true},"region":{"type":"string","description":"Region of the access policy. Should be set to the same region as the access policy. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","required":true},"token":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"updated_at":{"type":"string","description":"Last update date of the access policy token.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/access-policies/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#create-a-token)\n","description_kind":"markdown"}},"grafana_cloud_api_key":{"version":0,"block":{"attributes":{"cloud_org_slug":{"type":"string","description":"The slug of the organization to create the API key in. This is the same slug as the organization name in the URL.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description":"The generated API key.","description_kind":"markdown","computed":true,"sensitive":true},"name":{"type":"string","description":"Name of the API key.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Role of the API key. Should be one of [Viewer Editor Admin MetricsPublisher PluginPublisher]. See https://grafana.com/docs/grafana-cloud/api/#create-api-key for details.","description_kind":"markdown","required":true}},"description":"Manages a single API key on the Grafana Cloud portal (on the organization level)\n* [API documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#api-keys)\n","description_kind":"markdown"}},"grafana_cloud_plugin_installation":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slug":{"type":"string","description":"Slug of the plugin to be installed.","description_kind":"markdown","required":true},"stack_slug":{"type":"string","description":"The stack id to which the plugin should be installed.","description_kind":"markdown","required":true},"version":{"type":"string","description":"Version of the plugin to be installed.","description_kind":"markdown","required":true}},"description":"\nManages Grafana Cloud Plugin Installations.\n\n* [Plugin Catalog](https://grafana.com/grafana/plugins/)\n","description_kind":"markdown"}},"grafana_cloud_stack":{"version":0,"block":{"attributes":{"alertmanager_name":{"type":"string","description":"Name of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_status":{"type":"string","description":"Status of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_url":{"type":"string","description":"Base URL of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_user_id":{"type":"number","description":"User ID of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of stack.","description_kind":"markdown","optional":true},"graphite_name":{"type":"string","description_kind":"plain","computed":true},"graphite_status":{"type":"string","description_kind":"plain","computed":true},"graphite_url":{"type":"string","description_kind":"plain","computed":true},"graphite_user_id":{"type":"number","description_kind":"plain","computed":true},"id":{"type":"string","description":"The stack id assigned to this stack by Grafana.","description_kind":"markdown","computed":true},"logs_name":{"type":"string","description_kind":"plain","computed":true},"logs_status":{"type":"string","description_kind":"plain","computed":true},"logs_url":{"type":"string","description_kind":"plain","computed":true},"logs_user_id":{"type":"number","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of stack. Conventionally matches the url of the instance (e.g. “\u003cstack_slug\u003e.grafana.net”).","description_kind":"markdown","required":true},"org_id":{"type":"number","description":"Organization id to assign to this stack.","description_kind":"markdown","computed":true},"org_name":{"type":"string","description":"Organization name to assign to this stack.","description_kind":"markdown","computed":true},"org_slug":{"type":"string","description":"Organization slug to assign to this stack.","description_kind":"markdown","computed":true},"prometheus_name":{"type":"string","description":"Prometheus name for this instance.","description_kind":"markdown","computed":true},"prometheus_remote_endpoint":{"type":"string","description":"Use this URL to query hosted metrics data e.g. Prometheus data source in Grafana","description_kind":"markdown","computed":true},"prometheus_remote_write_endpoint":{"type":"string","description":"Use this URL to send prometheus metrics to Grafana cloud","description_kind":"markdown","computed":true},"prometheus_status":{"type":"string","description":"Prometheus status for this instance.","description_kind":"markdown","computed":true},"prometheus_url":{"type":"string","description":"Prometheus url for this instance.","description_kind":"markdown","computed":true},"prometheus_user_id":{"type":"number","description":"Prometheus user ID. Used for e.g. remote_write.","description_kind":"markdown","computed":true},"region_slug":{"type":"string","description":"Region slug to assign to this stack. Changing region will destroy the existing stack and create a new one in the desired region. Use the region list API to get the list of available regions: https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#list-regions.","description_kind":"markdown","optional":true},"slug":{"type":"string","description":"Subdomain that the Grafana instance will be available at (i.e. setting slug to “\u003cstack_slug\u003e” will make the instance\navailable at “https://\u003cstack_slug\u003e.grafana.net\".","description_kind":"markdown","required":true},"status":{"type":"string","description":"Status of the stack.","description_kind":"markdown","computed":true},"traces_name":{"type":"string","description_kind":"plain","computed":true},"traces_status":{"type":"string","description_kind":"plain","computed":true},"traces_url":{"type":"string","description":"Base URL of the Traces instance configured for this stack. To use this in the Tempo data source in Grafana, append `/tempo` to the URL.","description_kind":"markdown","computed":true},"traces_user_id":{"type":"number","description_kind":"plain","computed":true},"url":{"type":"string","description":"Custom URL for the Grafana instance. Must have a CNAME setup to point to `.grafana.net` before creating the stack","description_kind":"markdown","optional":true,"computed":true},"wait_for_readiness":{"type":"bool","description":"Whether to wait for readiness of the stack after creating it. The check is a HEAD request to the stack URL (Grafana instance). Defaults to `true`.","description_kind":"markdown","optional":true},"wait_for_readiness_timeout":{"type":"string","description":"How long to wait for readiness (if enabled). Defaults to `5m0s`.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana-cloud/developer-resources/api-reference/cloud-api/#stacks/)\n","description_kind":"markdown"}},"grafana_cloud_stack_api_key":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"role":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\nManages API keys of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management API key for a new stack\n\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/auth/)\n\n!\u003e Deprecated: please use `grafana_cloud_stack_service_account` and `grafana_cloud_stack_service_account_token` instead, see https://grafana.com/docs/grafana/next/administration/api-keys/#migrate-api-keys-to-grafana-service-accounts-using-terraform.\n","description_kind":"markdown","deprecated":true}},"grafana_cloud_stack_service_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_disabled":{"type":"bool","description":"The disabled status for the service account. Defaults to `false`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the service account.","description_kind":"markdown","required":true},"role":{"type":"string","description":"The basic role of the service account in the organization.","description_kind":"markdown","optional":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\nManages service accounts of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management service account for a new stack\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_cloud_stack_service_account_token":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"has_expired":{"type":"bool","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"service_account_id":{"type":"string","description_kind":"plain","required":true},"stack_slug":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\nManages service account tokens of a Grafana Cloud stack using the Cloud API\nThis can be used to bootstrap a management service account token for a new stack\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_contact_point":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the contact point.","description_kind":"markdown","required":true}},"block_types":{"alertmanager":{"nesting_mode":"list","block":{"attributes":{"basic_auth_password":{"type":"string","description":"The password component of the basic auth credentials to use.","description_kind":"markdown","optional":true,"sensitive":true},"basic_auth_user":{"type":"string","description":"The username component of the basic auth credentials to use.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The URL of the Alertmanager instance.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to other Alertmanager instances.","description_kind":"markdown"}},"dingding":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"message_type":{"type":"string","description":"The format of message to send - either 'link' or 'actionCard'","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The DingDing webhook URL.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to DingDing.","description_kind":"markdown"}},"discord":{"nesting_mode":"list","block":{"attributes":{"avatar_url":{"type":"string","description":"The URL of a custom avatar image to use. Defaults to ``.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message. Defaults to ``.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated content of the title.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The discord webhook URL.","description_kind":"markdown","required":true,"sensitive":true},"use_discord_username":{"type":"bool","description":"Whether to use the bot account's plain username instead of \"Grafana.\" Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"A contact point that sends notifications as Discord messages","description_kind":"markdown"}},"email":{"nesting_mode":"list","block":{"attributes":{"addresses":{"type":["list","string"],"description":"The addresses to send emails to.","description_kind":"markdown","required":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the email. Defaults to ``.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"single_email":{"type":"bool","description":"Whether to send a single email CC'ing all addresses, rather than a separate email to each address. Defaults to `false`.","description_kind":"markdown","optional":true},"subject":{"type":"string","description":"The templated subject line of the email. Defaults to ``.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to an email address.","description_kind":"markdown"}},"googlechat":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated content of the title.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The Google Chat webhook URL.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Google Chat.","description_kind":"markdown"}},"kafka":{"nesting_mode":"list","block":{"attributes":{"api_version":{"type":"string","description":"The API version to use when contacting the Kafka REST Server. Supported: v2 (default) and v3. Defaults to `v2`.","description_kind":"markdown","optional":true},"cluster_id":{"type":"string","description":"The Id of cluster to use when contacting the Kafka REST Server. Required api_version to be 'v3'","description_kind":"markdown","optional":true},"description":{"type":"string","description":"The templated description of the Kafka message.","description_kind":"markdown","optional":true},"details":{"type":"string","description":"The templated details to include with the message.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"password":{"type":"string","description":"The password to use when making a call to the Kafka REST Proxy","description_kind":"markdown","optional":true,"sensitive":true},"rest_proxy_url":{"type":"string","description":"The URL of the Kafka REST proxy to send requests to.","description_kind":"markdown","required":true,"sensitive":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"topic":{"type":"string","description":"The name of the Kafka topic to publish to.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"username":{"type":"string","description":"The user name to use when making a call to the Kafka REST Proxy","description_kind":"markdown","optional":true}},"description":"A contact point that publishes notifications to Apache Kafka topics.","description_kind":"markdown"}},"line":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"The templated description of the message.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"token":{"type":"string","description":"The bearer token used to authorize the client.","description_kind":"markdown","required":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to LINE.me.","description_kind":"markdown"}},"oncall":{"nesting_mode":"list","block":{"attributes":{"authorization_credentials":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this value. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true,"sensitive":true},"authorization_scheme":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true},"basic_auth_password":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true,"sensitive":true},"basic_auth_user":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"http_method":{"type":"string","description":"The HTTP method to use in the request. Defaults to `POST`.","description_kind":"markdown","optional":true},"max_alerts":{"type":"number","description":"The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Custom message. You can use template variables.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"Templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The URL to send webhook requests to.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to Grafana On-Call.","description_kind":"markdown"}},"opsgenie":{"nesting_mode":"list","block":{"attributes":{"api_key":{"type":"string","description":"The OpsGenie API key to use.","description_kind":"markdown","required":true,"sensitive":true},"auto_close":{"type":"bool","description":"Whether to auto-close alerts in OpsGenie when they resolve in the Alertmanager.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A templated high-level description to use for the alert.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"override_priority":{"type":"bool","description":"Whether to allow the alert priority to be configured via the value of the `og_priority` annotation on the alert.","description_kind":"markdown","optional":true},"send_tags_as":{"type":"string","description":"Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are `tags`, `details`, `both`, or empty to use the default behavior of Tags.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"Allows customization of the OpsGenie API URL.","description_kind":"markdown","optional":true}},"block_types":{"responders":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"ID of the responder. Must be specified if name and username are empty.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"Name of the responder. Must be specified if username and id are empty.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"Type of the responder. Supported: team, teams, user, escalation, schedule or a template that is expanded to one of these values.","description_kind":"markdown","required":true},"username":{"type":"string","description":"User name of the responder. Must be specified if name and id are empty.","description_kind":"markdown","optional":true}},"description":"Teams, users, escalations and schedules that the alert will be routed to send notifications. If the API Key belongs to a team integration, this field will be overwritten with the owner team. This feature is available from Grafana 10.3+.","description_kind":"markdown"}}},"description":"A contact point that sends notifications to OpsGenie.","description_kind":"markdown"}},"pagerduty":{"nesting_mode":"list","block":{"attributes":{"class":{"type":"string","description":"The class or type of event, for example `ping failure`.","description_kind":"markdown","optional":true},"client":{"type":"string","description":"The name of the monitoring client that is triggering this event.","description_kind":"markdown","optional":true},"client_url":{"type":"string","description":"The URL of the monitoring client that is triggering this event.","description_kind":"markdown","optional":true},"component":{"type":"string","description":"The component being affected by the event.","description_kind":"markdown","optional":true},"details":{"type":["map","string"],"description":"A set of arbitrary key/value pairs that provide further detail about the incident.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"group":{"type":"string","description":"The group to which the provided component belongs to.","description_kind":"markdown","optional":true},"integration_key":{"type":"string","description":"The PagerDuty API key.","description_kind":"markdown","required":true,"sensitive":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"severity":{"type":"string","description":"The PagerDuty event severity level. Default is `critical`.","description_kind":"markdown","optional":true},"source":{"type":"string","description":"The unique location of the affected system.","description_kind":"markdown","optional":true},"summary":{"type":"string","description":"The templated summary message of the event.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to PagerDuty.","description_kind":"markdown"}},"pushover":{"nesting_mode":"list","block":{"attributes":{"api_token":{"type":"string","description":"The Pushover API token.","description_kind":"markdown","required":true,"sensitive":true},"device":{"type":"string","description":"Comma-separated list of devices to which the event is associated.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"expire":{"type":"number","description":"How many seconds for which the notification will continue to be retried by Pushover.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated notification message content.","description_kind":"markdown","optional":true},"ok_priority":{"type":"number","description":"The priority level of the resolved event.","description_kind":"markdown","optional":true},"ok_sound":{"type":"string","description":"The sound associated with the resolved notification.","description_kind":"markdown","optional":true},"priority":{"type":"number","description":"The priority level of the event.","description_kind":"markdown","optional":true},"retry":{"type":"number","description":"How often, in seconds, the Pushover servers will send the same notification to the user.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"sound":{"type":"string","description":"The sound associated with the notification.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"upload_image":{"type":"bool","description":"Whether to send images in the notification or not. Default is true. Requires Grafana to be configured to send images in notifications.","description_kind":"markdown","optional":true},"user_key":{"type":"string","description":"The Pushover user key.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Pushover.","description_kind":"markdown"}},"sensugo":{"nesting_mode":"list","block":{"attributes":{"api_key":{"type":"string","description":"The SensuGo API key.","description_kind":"markdown","required":true,"sensitive":true},"check":{"type":"string","description":"The SensuGo check to which the event should be routed.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"entity":{"type":"string","description":"The entity being monitored.","description_kind":"markdown","optional":true},"handler":{"type":"string","description":"A custom handler to execute in addition to the check.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Templated message content describing the alert.","description_kind":"markdown","optional":true},"namespace":{"type":"string","description":"The namespace in which the check resides.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The SensuGo URL to send requests to.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to SensuGo.","description_kind":"markdown"}},"slack":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"endpoint_url":{"type":"string","description":"Use this to override the Slack API endpoint URL to send requests to.","description_kind":"markdown","optional":true},"icon_emoji":{"type":"string","description":"The name of a Slack workspace emoji to use as the bot icon.","description_kind":"markdown","optional":true},"icon_url":{"type":"string","description":"A URL of an image to use as the bot icon.","description_kind":"markdown","optional":true},"mention_channel":{"type":"string","description":"Describes how to ping the slack channel that messages are being sent to. Options are `here` for an @here ping, `channel` for @channel, or empty for no ping.","description_kind":"markdown","optional":true},"mention_groups":{"type":"string","description":"Comma-separated list of groups to mention in the message.","description_kind":"markdown","optional":true},"mention_users":{"type":"string","description":"Comma-separated list of users to mention in the message.","description_kind":"markdown","optional":true},"recipient":{"type":"string","description":"Channel, private group, or IM channel (can be an encoded ID or a name) to send messages to.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"text":{"type":"string","description":"Templated content of the message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Templated title of the message.","description_kind":"markdown","optional":true},"token":{"type":"string","description":"A Slack API token,for sending messages directly without the webhook method.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"A Slack webhook URL,for sending messages via the webhook method.","description_kind":"markdown","optional":true,"sensitive":true},"username":{"type":"string","description":"Username for the bot to use.","description_kind":"markdown","optional":true}},"description":"A contact point that sends notifications to Slack.","description_kind":"markdown"}},"teams":{"nesting_mode":"list","block":{"attributes":{"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated message content to send.","description_kind":"markdown","optional":true},"section_title":{"type":"string","description":"The templated subtitle for each message section.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"A Teams webhook URL.","description_kind":"markdown","required":true,"sensitive":true}},"description":"A contact point that sends notifications to Microsoft Teams.","description_kind":"markdown"}},"telegram":{"nesting_mode":"list","block":{"attributes":{"chat_id":{"type":"string","description":"The chat ID to send messages to.","description_kind":"markdown","required":true},"disable_notifications":{"type":"bool","description":"When set users will receive a notification with no sound.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"disable_web_page_preview":{"type":"bool","description":"When set it disables link previews for links in the message.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message.","description_kind":"markdown","optional":true},"parse_mode":{"type":"string","description":"Mode for parsing entities in the message text. Supported: None, Markdown, MarkdownV2, and HTML. HTML is the default.","description_kind":"markdown","optional":true},"protect_content":{"type":"bool","description":"When set it protects the contents of the message from forwarding and saving.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"token":{"type":"string","description":"The Telegram bot token.","description_kind":"markdown","required":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to Telegram.","description_kind":"markdown"}},"threema":{"nesting_mode":"list","block":{"attributes":{"api_secret":{"type":"string","description":"The Threema API key.","description_kind":"markdown","required":true,"sensitive":true},"description":{"type":"string","description":"The templated description of the message.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"gateway_id":{"type":"string","description":"The Threema gateway ID.","description_kind":"markdown","required":true},"recipient_id":{"type":"string","description":"The ID of the recipient of the message.","description_kind":"markdown","required":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to Threema.","description_kind":"markdown"}},"victorops":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Templated description of the message.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message_type":{"type":"string","description":"The VictorOps alert state - typically either `CRITICAL` or `RECOVERY`.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"Templated title to display.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The VictorOps webhook URL.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to VictorOps (now known as Splunk OnCall).","description_kind":"markdown"}},"webex":{"nesting_mode":"list","block":{"attributes":{"api_url":{"type":"string","description":"The URL to send webhook requests to.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated title of the message to send.","description_kind":"markdown","optional":true},"room_id":{"type":"string","description":"ID of the Webex Teams room where to send the messages.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"token":{"type":"string","description":"The bearer token used to authorize the client.","description_kind":"markdown","optional":true,"sensitive":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true}},"description":"A contact point that sends notifications to Cisco Webex.","description_kind":"markdown"}},"webhook":{"nesting_mode":"list","block":{"attributes":{"authorization_credentials":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this value. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true,"sensitive":true},"authorization_scheme":{"type":"string","description":"Allows a custom authorization scheme - attaches an auth header with this name. Do not use in conjunction with basic auth parameters.","description_kind":"markdown","optional":true},"basic_auth_password":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true,"sensitive":true},"basic_auth_user":{"type":"string","description":"The username to use in basic auth headers attached to the request. If omitted, basic auth will not be used.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"http_method":{"type":"string","description":"The HTTP method to use in the request. Defaults to `POST`.","description_kind":"markdown","optional":true},"max_alerts":{"type":"number","description":"The maximum number of alerts to send in a single request. This can be helpful in limiting the size of the request body. The default is 0, which indicates no limit.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Custom message. You can use template variables.","description_kind":"markdown","optional":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"Templated title of the message.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The URL to send webhook requests to.","description_kind":"markdown","required":true}},"description":"A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format defined here: https://prometheus.io/docs/alerting/latest/configuration/#webhook_config","description_kind":"markdown"}},"wecom":{"nesting_mode":"list","block":{"attributes":{"agent_id":{"type":"string","description":"Agent ID added to the request payload when using APIAPP.","description_kind":"markdown","optional":true},"corp_id":{"type":"string","description":"Corp ID used to get token when using APIAPP.","description_kind":"markdown","optional":true},"disable_resolve_message":{"type":"bool","description":"Whether to disable sending resolve messages. Defaults to `false`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"The templated content of the message to send.","description_kind":"markdown","optional":true},"msg_type":{"type":"string","description":"The type of them message. Supported: markdown, text. Default: text.","description_kind":"markdown","optional":true},"secret":{"type":"string","description":"The secret key required to obtain access token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps to create APIAPP.","description_kind":"markdown","optional":true,"sensitive":true},"settings":{"type":["map","string"],"description":"Additional custom properties to attach to the notifier. Defaults to `map[]`.","description_kind":"markdown","optional":true,"sensitive":true},"title":{"type":"string","description":"The templated title of the message to send.","description_kind":"markdown","optional":true},"to_user":{"type":"string","description":"The ID of user that should receive the message. Multiple entries should be separated by '|'. Default: @all.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The UID of the contact point.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The WeCom webhook URL. Required if using GroupRobot.","description_kind":"markdown","optional":true,"sensitive":true}},"description":"A contact point that sends notifications to WeCom.","description_kind":"markdown"}}},"description":"\nManages Grafana Alerting contact points.\n\n* [Official documentation](https://grafana.com/docs/grafana/next/alerting/fundamentals/contact-points/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/#contact-points)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_dashboard":{"version":1,"block":{"attributes":{"config_json":{"type":"string","description":"The complete dashboard model JSON.","description_kind":"markdown","required":true},"dashboard_id":{"type":"number","description":"The numeric ID of the dashboard computed by Grafana.","description_kind":"markdown","computed":true},"folder":{"type":"string","description":"The id or UID of the folder to save the dashboard in.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"message":{"type":"string","description":"Set a commit message for the version history.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"overwrite":{"type":"bool","description":"Set to true if you want to overwrite existing dashboard with newer version, same dashboard title in folder or same dashboard uid.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The unique identifier of a dashboard. This is used to construct its URL. It's automatically generated if not provided when creating a dashboard. The uid allows having consistent URLs for accessing dashboards and when syncing dashboards between multiple Grafana installs.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The full URL of the dashboard.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Whenever you save a version of your dashboard, a copy of that version is saved so that previous versions of your dashboard are not lost.","description_kind":"markdown","computed":true}},"description":"\nManages Grafana dashboards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_dashboard_permission":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"ID of the dashboard to apply permissions to. Deprecated: use `dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"optional":true,"computed":true},"dashboard_uid":{"type":"string","description":"UID of the dashboard to apply permissions to.","description_kind":"markdown","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be one of `View`, `Edit`, or `Admin`.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Manage permissions for `Viewer` or `Editor` roles.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"}}},"description":"\nManages the entire set of permissions for a dashboard. Permissions that aren't specified when applying this resource will be removed.\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard_permissions/)\n","description_kind":"markdown"}},"grafana_dashboard_public":{"version":0,"block":{"attributes":{"access_token":{"type":"string","description":"A public unique identifier of a public dashboard. This is used to construct its URL. It's automatically generated if not provided when creating a public dashboard.","description_kind":"markdown","optional":true,"computed":true},"annotations_enabled":{"type":"bool","description":"Set to `true` to show annotations. The default value is `false`.","description_kind":"markdown","optional":true},"dashboard_uid":{"type":"string","description":"The unique identifier of the original dashboard.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_enabled":{"type":"bool","description":"Set to `true` to enable the public dashboard. The default value is `false`.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"share":{"type":"string","description":"Set the share mode. The default value is `public`.","description_kind":"markdown","optional":true},"time_selection_enabled":{"type":"bool","description":"Set to `true` to enable the time picker in the public dashboard. The default value is `false`.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The unique identifier of a public dashboard. It's automatically generated if not provided when creating a public dashboard.","description_kind":"markdown","optional":true,"computed":true}},"description":"\nManages Grafana public dashboards.\n\n**Note:** This resource is available only with Grafana 10.2+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/dashboard-public/)\n* [HTTP API](https://grafana.com/docs/grafana/next/developers/http_api/dashboard_public/)\n","description_kind":"markdown"}},"grafana_data_source":{"version":1,"block":{"attributes":{"access_mode":{"type":"string","description":"The method by which Grafana will access the data source: `proxy` or `direct`. Defaults to `proxy`.","description_kind":"markdown","optional":true},"basic_auth_enabled":{"type":"bool","description":"Whether to enable basic auth for the data source. Defaults to `false`.","description_kind":"markdown","optional":true},"basic_auth_username":{"type":"string","description":"Basic auth username. Defaults to ``.","description_kind":"markdown","optional":true},"database_name":{"type":"string","description":"(Required by some data source types) The name of the database to use on the selected data source server. Defaults to ``.","description_kind":"markdown","optional":true},"http_headers":{"type":["map","string"],"description":"Custom HTTP headers","description_kind":"markdown","optional":true,"sensitive":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Whether to set the data source as default. This should only be `true` to a single data source. Defaults to `false`.","description_kind":"markdown","optional":true},"json_data_encoded":{"type":"string","description":"Serialized JSON string containing the json data. This attribute can be used to pass configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"A unique name for the data source.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"secure_json_data_encoded":{"type":"string","description":"Serialized JSON string containing the secure json data. This attribute can be used to pass secure configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","optional":true,"sensitive":true},"type":{"type":"string","description":"The data source type. Must be one of the supported data source keywords.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"Unique identifier. If unset, this will be automatically generated.","description_kind":"markdown","optional":true,"computed":true},"url":{"type":"string","description":"The URL for the data source. The type of URL required varies depending on the chosen data source type.","description_kind":"markdown","optional":true},"username":{"type":"string","description":"(Required by some data source types) The username to use to authenticate to the data source. Defaults to ``.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/datasources/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/data_source/)\n\nThe required arguments for this resource vary depending on the type of data\nsource selected (via the 'type' argument).\n","description_kind":"markdown"}},"grafana_data_source_permission":{"version":0,"block":{"attributes":{"datasource_id":{"type":"string","description":"ID of the datasource to apply permissions to.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"built_in_role":{"type":"string","description":"Name of the basic role to manage permissions for. Options: `Viewer`, `Editor` or `Admin`. Can only be set from Grafana v9.2.3+. Defaults to ``.","description_kind":"markdown","optional":true},"permission":{"type":"string","description":"Permission to associate with item. Options: `Query`, `Edit` or `Admin` (`Admin` can only be used with Grafana v10.3.0+).","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"}}},"description":"\nManages the entire set of permissions for a datasource. Permissions that aren't specified when applying this resource will be removed.\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/datasource_permissions/)\n","description_kind":"markdown"}},"grafana_folder":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"parent_folder_uid":{"type":"string","description":"The uid of the parent folder. If set, the folder will be nested. If not set, the folder will be created in the root folder. Note: This requires the nestedFolders feature flag to be enabled on your Grafana instance.","description_kind":"markdown","optional":true},"prevent_destroy_if_not_empty":{"type":"bool","description":"Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to `false`.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"The title of the folder.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"Unique identifier.","description_kind":"markdown","optional":true,"computed":true},"url":{"type":"string","description":"The full URL of the folder.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_folder_permission":{"version":0,"block":{"attributes":{"folder_uid":{"type":"string","description":"The UID of the folder.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be one of `View`, `Edit`, or `Admin`.","description_kind":"markdown","required":true},"role":{"type":"string","description":"Manage permissions for `Viewer` or `Editor` roles.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"}}},"description":"\nManages the entire set of permissions for a folder. Permissions that aren't specified when applying this resource will be removed.\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_permissions/)\n","description_kind":"markdown"}},"grafana_library_panel":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"Timestamp when the library panel was created.","description_kind":"markdown","computed":true},"dashboard_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana dashboards containing the library panel.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of the library panel.","description_kind":"markdown","computed":true},"folder_id":{"type":"string","description":"ID of the folder where the library panel is stored.","description_kind":"markdown","optional":true},"folder_name":{"type":"string","description":"Name of the folder containing the library panel.","description_kind":"markdown","computed":true},"folder_uid":{"type":"string","description":"Unique ID (UID) of the folder containing the library panel.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"model_json":{"type":"string","description":"The JSON model for the library panel.","description_kind":"markdown","required":true},"name":{"type":"string","description":"Name of the library panel.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The numeric ID of the library panel computed by Grafana.","description_kind":"markdown","computed":true},"type":{"type":"string","description":"Type of the library panel (eg. text).","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The unique identifier (UID) of a library panel uniquely identifies library panels between multiple Grafana installs. It’s automatically generated unless you specify it during library panel creation.The UID provides consistent URLs for accessing library panels and when syncing library panels between multiple Grafana installs.","description_kind":"markdown","optional":true,"computed":true},"updated":{"type":"string","description":"Timestamp when the library panel was last modified.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the library panel.","description_kind":"markdown","computed":true}},"description":"\nManages Grafana library panels.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/manage-library-panels/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/library_element/)\n","description_kind":"markdown"}},"grafana_machine_learning_holiday":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description of the holiday.","description_kind":"markdown","optional":true},"ical_timezone":{"type":"string","description":"The timezone to use for events in the iCal file pointed to by ical_url.","description_kind":"markdown","optional":true},"ical_url":{"type":"string","description":"A URL to an iCal file containing all occurrences of the holiday.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the holiday.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the holiday.","description_kind":"markdown","required":true}},"block_types":{"custom_periods":{"nesting_mode":"list","block":{"attributes":{"end_time":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the custom period.","description_kind":"markdown","optional":true},"start_time":{"type":"string","description_kind":"plain","required":true}},"description":"A list of custom periods for the holiday.","description_kind":"markdown"}}},"description":"\nA holiday describes time periods where a time series is expected to behave differently to normal.\n\nTo use a holiday in a job, use its id in the `holidays` attribute of a `grafana_machine_learning_job`:\n\n```terraform\nresource \"grafana_machine_learning_job\" \"test_job\" {\n ...\n holidays = [\n grafana_machine_learning_holiday.my_holiday.id\n ]\n}\n```","description_kind":"markdown"}},"grafana_machine_learning_job":{"version":0,"block":{"attributes":{"custom_labels":{"type":["map","string"],"description":"An object representing the custom labels added on the forecast.","description_kind":"markdown","optional":true},"datasource_id":{"type":"number","description":"The id of the datasource to query.","description_kind":"markdown","optional":true},"datasource_type":{"type":"string","description":"The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.","description_kind":"markdown","required":true},"datasource_uid":{"type":"string","description":"The uid of the datasource to query.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A description of the job.","description_kind":"markdown","optional":true},"holidays":{"type":["list","string"],"description":"A list of holiday IDs or names to take into account when training the model.","description_kind":"markdown","optional":true},"hyper_params":{"type":["map","string"],"description":"The hyperparameters used to fine tune the algorithm. See https://grafana.com/docs/grafana-cloud/machine-learning/models/ for the full list of available hyperparameters. Defaults to `map[]`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the job.","description_kind":"markdown","computed":true},"interval":{"type":"number","description":"The data interval in seconds to train the data on. Defaults to `300`.","description_kind":"markdown","optional":true},"metric":{"type":"string","description":"The metric used to query the job results.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the job.","description_kind":"markdown","required":true},"query_params":{"type":["map","string"],"description":"An object representing the query params to query Grafana with.","description_kind":"markdown","required":true},"training_window":{"type":"number","description":"The data interval in seconds to train the data on. Defaults to `7776000`.","description_kind":"markdown","optional":true}},"description":"\nA job defines the queries and model parameters for a machine learning task.\n","description_kind":"markdown"}},"grafana_machine_learning_outlier_detector":{"version":0,"block":{"attributes":{"datasource_id":{"type":"number","description":"The id of the datasource to query.","description_kind":"markdown","optional":true},"datasource_type":{"type":"string","description":"The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.","description_kind":"markdown","required":true},"datasource_uid":{"type":"string","description":"The uid of the datasource to query.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"A description of the outlier detector.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the outlier detector.","description_kind":"markdown","computed":true},"interval":{"type":"number","description":"The data interval in seconds to monitor. Defaults to `300`.","description_kind":"markdown","optional":true},"metric":{"type":"string","description":"The metric used to query the outlier detector results.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the outlier detector.","description_kind":"markdown","required":true},"query_params":{"type":["map","string"],"description":"An object representing the query params to query Grafana with.","description_kind":"markdown","required":true}},"block_types":{"algorithm":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"The name of the algorithm to use ('mad' or 'dbscan').","description_kind":"markdown","required":true},"sensitivity":{"type":"number","description":"Specify the sensitivity of the detector (in range [0,1]).","description_kind":"markdown","required":true}},"block_types":{"config":{"nesting_mode":"set","block":{"attributes":{"epsilon":{"type":"number","description":"Specify the epsilon parameter (positive float)","description_kind":"markdown","required":true}},"description":"For DBSCAN only, specify the configuration map","description_kind":"markdown"},"max_items":1}},"description":"The algorithm to use and its configuration. See https://grafana.com/docs/grafana-cloud/machine-learning/outlier-detection/ for details.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"\nAn outlier detector monitors the results of a query and reports when its values are outside normal bands.\n\nThe normal band is configured by choice of algorithm, its sensitivity and other configuration.\n\nVisit https://grafana.com/docs/grafana-cloud/machine-learning/outlier-detection/ for more details.\n","description_kind":"markdown"}},"grafana_message_template":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the message template.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"template":{"type":"string","description":"The content of the message template.","description_kind":"markdown","required":true}},"description":"\nManages Grafana Alerting message templates.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/template-notifications/create-notification-templates/)\n* [HTTP API](https://grafana.com/docs/grafana/next/developers/http_api/alerting_provisioning/#templates)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_mute_timing":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the mute timing.","description_kind":"markdown","required":true}},"block_types":{"intervals":{"nesting_mode":"list","block":{"attributes":{"days_of_month":{"type":["list","string"],"description":"An inclusive range of days, 1-31, within a month, e.g. \"1\" or \"14:16\". Negative values can be used to represent days counting from the end of a month, e.g. \"-1\".","description_kind":"markdown","optional":true},"location":{"type":"string","description":"Provides the time zone for the time interval. Must be a location in the IANA time zone database, e.g \"America/New_York\"","description_kind":"markdown","optional":true},"months":{"type":["list","string"],"description":"An inclusive range of months, either numerical or full calendar month, e.g. \"1:3\", \"december\", or \"may:august\".","description_kind":"markdown","optional":true},"weekdays":{"type":["list","string"],"description":"An inclusive range of weekdays, e.g. \"monday\" or \"tuesday:thursday\".","description_kind":"markdown","optional":true},"years":{"type":["list","string"],"description":"A positive inclusive range of years, e.g. \"2030\" or \"2025:2026\".","description_kind":"markdown","optional":true}},"block_types":{"times":{"nesting_mode":"list","block":{"attributes":{"end":{"type":"string","description":"The time, in hh:mm format, of when the interval should end exclusively.","description_kind":"markdown","required":true},"start":{"type":"string","description":"The time, in hh:mm format, of when the interval should begin inclusively.","description_kind":"markdown","required":true}},"description":"The time ranges, represented in minutes, during which to mute in a given day.","description_kind":"markdown"}}},"description":"The time intervals at which to mute notifications.","description_kind":"markdown"}}},"description":"\nManages Grafana Alerting mute timings.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/mute-timings/)\n* [HTTP API](https://grafana.com/docs/grafana/next/developers/http_api/alerting_provisioning/#mute-timings)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_notification_policy":{"version":0,"block":{"attributes":{"contact_point":{"type":"string","description":"The default contact point to route all unmatched notifications to.","description_kind":"markdown","required":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used.","description_kind":"markdown","optional":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"set","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used.","description_kind":"markdown","optional":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"set","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used.","description_kind":"markdown","optional":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"set","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}},"policy":{"nesting_mode":"list","block":{"attributes":{"contact_point":{"type":"string","description":"The contact point to route notifications that match this rule to.","description_kind":"markdown","required":true},"continue":{"type":"bool","description":"Whether to continue matching subsequent rules if an alert matches the current rule. Otherwise, the rule will be 'consumed' by the first policy to match it.","description_kind":"markdown","optional":true},"group_by":{"type":["list","string"],"description":"A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. Required for root policy only. If empty, the parent grouping is used.","description_kind":"markdown","required":true},"group_interval":{"type":"string","description":"Minimum time interval between two notifications for the same group. Default is 5 minutes.","description_kind":"markdown","optional":true},"group_wait":{"type":"string","description":"Time to wait to buffer alerts of the same group before sending a notification. Default is 30 seconds.","description_kind":"markdown","optional":true},"mute_timings":{"type":["list","string"],"description":"A list of mute timing names to apply to alerts that match this policy.","description_kind":"markdown","optional":true},"repeat_interval":{"type":"string","description":"Minimum time interval for re-sending a notification if an alert is still firing. Default is 4 hours.","description_kind":"markdown","optional":true}},"block_types":{"matcher":{"nesting_mode":"set","block":{"attributes":{"label":{"type":"string","description":"The name of the label to match against.","description_kind":"markdown","required":true},"match":{"type":"string","description":"The operator to apply when matching values of the given label. Allowed operators are `=` for equality, `!=` for negated equality, `=~` for regex equality, and `!~` for negated regex equality.","description_kind":"markdown","required":true},"value":{"type":"string","description":"The label value to match against.","description_kind":"markdown","required":true}},"description":"Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all alert instances.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"Routing rules for specific label sets.","description_kind":"markdown"}}},"description":"\nSets the global notification policy for Grafana.\n\n!\u003e This resource manages the entire notification policy tree, and will overwrite any existing policies.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/manage-notifications/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_oncall_escalation":{"version":0,"block":{"attributes":{"action_to_trigger":{"type":"string","description":"The ID of an Action for trigger_action type step.","description_kind":"markdown","optional":true},"duration":{"type":"number","description":"The duration of delay for wait type step.","description_kind":"markdown","optional":true},"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","required":true},"group_to_notify":{"type":"string","description":"The ID of a User Group for notify_user_group type step.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"important":{"type":"bool","description":"Will activate \"important\" personal notification rules. Actual for steps: notify_persons, notify_on_call_from_schedule and notify_user_group","description_kind":"markdown","optional":true},"notify_if_time_from":{"type":"string","description":"The beginning of the time interval for notify_if_time_from_to type step in UTC (for example 08:00:00Z).","description_kind":"markdown","optional":true},"notify_if_time_to":{"type":"string","description":"The end of the time interval for notify_if_time_from_to type step in UTC (for example 18:00:00Z).","description_kind":"markdown","optional":true},"notify_on_call_from_schedule":{"type":"string","description":"ID of a Schedule for notify_on_call_from_schedule type step.","description_kind":"markdown","optional":true},"persons_to_notify":{"type":["set","string"],"description":"The list of ID's of users for notify_persons type step.","description_kind":"markdown","optional":true},"persons_to_notify_next_each_time":{"type":["set","string"],"description":"The list of ID's of users for notify_person_next_each_time type step.","description_kind":"markdown","optional":true},"position":{"type":"number","description":"The position of the escalation step (starts from 0).","description_kind":"markdown","required":true},"type":{"type":"string","description":"The type of escalation policy. Can be wait, notify_persons, notify_person_next_each_time, notify_on_call_from_schedule, trigger_action, notify_user_group, resolve, notify_whole_channel, notify_if_time_from_to, repeat_escalation","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n","description_kind":"markdown"}},"grafana_oncall_escalation_chain":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the escalation chain.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n","description_kind":"markdown"}},"grafana_oncall_integration":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"link":{"type":"string","description":"The link for using in an integrated tool.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the service integration.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The type of integration. Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, inbound_email, direct_paging, jira.","description_kind":"markdown","required":true}},"block_types":{"default_route":{"nesting_mode":"list","block":{"attributes":{"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"msteams":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in MS teams. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"MS teams channel id. Alerts will be directed to this channel in Microsoft teams.","description_kind":"markdown","optional":true}},"description":"MS teams-specific settings for a route.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Alerts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Enable notification in Slack. Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Slack-specific settings for a route.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in Telegram. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Telegram channel id. Alerts will be directed to this channel in Telegram.","description_kind":"markdown","optional":true}},"description":"Telegram-specific settings for a route.","description_kind":"markdown"},"max_items":1}},"description":"The Default route for all alerts from the given integration","description_kind":"markdown"},"min_items":1,"max_items":1},"templates":{"nesting_mode":"list","block":{"attributes":{"acknowledge_signal":{"type":"string","description":"Template for sending a signal to acknowledge the Incident.","description_kind":"markdown","optional":true},"grouping_key":{"type":"string","description":"Template for the key by which alerts are grouped.","description_kind":"markdown","optional":true},"resolve_signal":{"type":"string","description":"Template for sending a signal to resolve the Incident.","description_kind":"markdown","optional":true},"source_link":{"type":"string","description":"Template for a source link.","description_kind":"markdown","optional":true}},"block_types":{"email":{"nesting_mode":"list","block":{"attributes":{"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Email.","description_kind":"markdown"},"max_items":1},"microsoft_teams":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Microsoft Teams.","description_kind":"markdown"},"max_items":1},"phone_call":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Phone Call.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Slack.","description_kind":"markdown"},"max_items":1},"sms":{"nesting_mode":"list","block":{"attributes":{"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for SMS.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Telegram.","description_kind":"markdown"},"max_items":1},"web":{"nesting_mode":"list","block":{"attributes":{"image_url":{"type":"string","description":"Template for Alert image url.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Template for Alert message.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"Template for Alert title.","description_kind":"markdown","optional":true}},"description":"Templates for Web.","description_kind":"markdown"},"max_items":1}},"description":"Jinja2 templates for Alert payload. An empty templates block will be ignored.","description_kind":"markdown"},"max_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/integrations/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/)\n","description_kind":"markdown"}},"grafana_oncall_on_call_shift":{"version":0,"block":{"attributes":{"by_day":{"type":["set","string"],"description":"This parameter takes a list of days in iCal format. Can be MO, TU, WE, TH, FR, SA, SU","description_kind":"markdown","optional":true},"by_month":{"type":["set","number"],"description":"This parameter takes a list of months. Valid values are 1 to 12","description_kind":"markdown","optional":true},"by_monthday":{"type":["set","number"],"description":"This parameter takes a list of days of the month. Valid values are 1 to 31 or -31 to -1","description_kind":"markdown","optional":true},"duration":{"type":"number","description":"The duration of the event.","description_kind":"markdown","required":true},"frequency":{"type":"string","description":"The frequency of the event. Can be daily, weekly, monthly","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval":{"type":"number","description":"The positive integer representing at which intervals the recurrence rule repeats.","description_kind":"markdown","optional":true},"level":{"type":"number","description":"The priority level. The higher the value, the higher the priority.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The shift's name.","description_kind":"markdown","required":true},"rolling_users":{"type":["list",["set","string"]],"description":"The list of lists with on-call users (for rolling_users event type)","description_kind":"markdown","optional":true},"start":{"type":"string","description":"The start time of the on-call shift. This parameter takes a date format as yyyy-MM-dd'T'HH:mm:ss (for example \"2020-09-05T08:00:00\")","description_kind":"markdown","required":true},"start_rotation_from_user_index":{"type":"number","description":"The index of the list of users in rolling_users, from which on-call rotation starts.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"time_zone":{"type":"string","description":"The shift's timezone. Overrides schedule's timezone.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The shift's type. Can be rolling_users, recurrent_event, single_event","description_kind":"markdown","required":true},"users":{"type":["set","string"],"description":"The list of on-call users (for single_event and recurrent_event event type).","description_kind":"markdown","optional":true},"week_start":{"type":"string","description":"Start day of the week in iCal format. Can be MO, TU, WE, TH, FR, SA, SU","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/on_call_shifts/)\n","description_kind":"markdown"}},"grafana_oncall_outgoing_webhook":{"version":0,"block":{"attributes":{"authorization_header":{"type":"string","description":"The auth data of the webhook. Used in Authorization header instead of user/password auth.","description_kind":"markdown","optional":true,"sensitive":true},"data":{"type":"string","description":"The data of the webhook.","description_kind":"markdown","optional":true},"forward_whole_payload":{"type":"bool","description":"Toggle to send the entire webhook payload instead of using the values in the Data field.","description_kind":"markdown","optional":true},"headers":{"type":"string","description":"Headers to add to the outgoing webhook request.","description_kind":"markdown","optional":true},"http_method":{"type":"string","description":"The HTTP method used in the request made by the outgoing webhook. Defaults to `POST`.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"integration_filter":{"type":["list","string"],"description":"Restricts the outgoing webhook to only trigger if the event came from a selected integration. If no integrations are selected the outgoing webhook will trigger for any integration.","description_kind":"markdown","optional":true},"is_webhook_enabled":{"type":"bool","description":"Controls whether the outgoing webhook will trigger or is ignored. The default is `true`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the outgoing webhook.","description_kind":"markdown","required":true},"password":{"type":"string","description":"The auth data of the webhook. Used for Basic authentication","description_kind":"markdown","optional":true,"sensitive":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"trigger_template":{"type":"string","description":"A template used to dynamically determine whether the webhook should execute based on the content of the payload.","description_kind":"markdown","optional":true},"trigger_type":{"type":"string","description":"The type of event that will cause this outgoing webhook to execute. The types of triggers are: `escalation`, `alert group created`, `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, `unacknowledge`. Defaults to `escalation`.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The webhook URL.","description_kind":"markdown","required":true},"user":{"type":"string","description":"Username to use when making the outgoing webhook request.","description_kind":"markdown","optional":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n","description_kind":"markdown"}},"grafana_oncall_route":{"version":0,"block":{"attributes":{"escalation_chain_id":{"type":"string","description":"The ID of the escalation chain.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"integration_id":{"type":"string","description":"The ID of the integration.","description_kind":"markdown","required":true},"position":{"type":"number","description":"The position of the route (starts from 0).","description_kind":"markdown","required":true},"routing_regex":{"type":"string","description":"Python Regex query. Route is chosen for an alert if there is a match inside the alert payload.","description_kind":"markdown","required":true},"routing_type":{"type":"string","description":"The type of route. Can be jinja2, regex Defaults to `regex`.","description_kind":"markdown","optional":true}},"block_types":{"msteams":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in MS teams. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"MS teams channel id. Alerts will be directed to this channel in Microsoft teams.","description_kind":"markdown","optional":true}},"description":"MS teams-specific settings for a route.","description_kind":"markdown"},"max_items":1},"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Alerts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Enable notification in Slack. Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Slack-specific settings for a route.","description_kind":"markdown"},"max_items":1},"telegram":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Enable notification in Telegram. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Telegram channel id. Alerts will be directed to this channel in Telegram.","description_kind":"markdown","optional":true}},"description":"Telegram-specific settings for a route.","description_kind":"markdown"},"max_items":1}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/routes/)\n","description_kind":"markdown"}},"grafana_oncall_schedule":{"version":0,"block":{"attributes":{"enable_web_overrides":{"type":"bool","description":"Enable overrides via web UI (it will ignore ical_url_overrides).","description_kind":"markdown","optional":true},"ical_url_overrides":{"type":"string","description":"The URL of external iCal calendar which override primary events.","description_kind":"markdown","optional":true},"ical_url_primary":{"type":"string","description":"The URL of the external calendar iCal file.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The schedule's name.","description_kind":"markdown","required":true},"shifts":{"type":["set","string"],"description":"The list of ID's of on-call shifts.","description_kind":"markdown","optional":true},"team_id":{"type":"string","description":"The ID of the OnCall team. To get one, create a team in Grafana, and navigate to the OnCall plugin (to sync the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource.","description_kind":"markdown","optional":true},"time_zone":{"type":"string","description":"The schedule's time zone.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The schedule's type.","description_kind":"markdown","required":true}},"block_types":{"slack":{"nesting_mode":"list","block":{"attributes":{"channel_id":{"type":"string","description":"Slack channel id. Reminder about schedule shifts will be directed to this channel in Slack.","description_kind":"markdown","optional":true},"user_group_id":{"type":"string","description":"Slack user group id. Members of user group will be updated when on-call users change.","description_kind":"markdown","optional":true}},"description":"The Slack-specific settings for a schedule.","description_kind":"markdown"},"max_items":1}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/schedules/)\n","description_kind":"markdown"}},"grafana_organization":{"version":0,"block":{"attributes":{"admin_user":{"type":"string","description":"The login name of the configured default admin user for the Grafana\ninstallation. If unset, this value defaults to admin, the Grafana default.\nGrafana adds the default admin user to all organizations automatically upon\ncreation, and this parameter keeps Terraform from removing it from\norganizations.\n Defaults to `admin`.","description_kind":"markdown","optional":true},"admins":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given admin\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true},"create_users":{"type":"bool","description":"Whether or not to create Grafana users specified in the organization's\nmembership if they don't already exist in Grafana. If unspecified, this\nparameter defaults to true, creating placeholder users with the name, login,\nand email set to the email of the user, and a random password. Setting this\noption to false will cause an error to be thrown for any users that do not\nalready exist in Grafana.\n Defaults to `true`.","description_kind":"markdown","optional":true},"editors":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given editor\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The display name for the Grafana organization created.","description_kind":"markdown","required":true},"org_id":{"type":"number","description":"The organization id assigned to this organization by Grafana.","description_kind":"markdown","computed":true},"users_without_access":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given none access to the organization.\nNote: users specified here must already exist in Grafana, unless 'create_users' is\nset to true. This feature is only available in Grafana 10.2+.","description_kind":"markdown","optional":true},"viewers":{"type":["set","string"],"description":"A list of email addresses corresponding to users who should be given viewer\naccess to the organization. Note: users specified here must already exist in\nGrafana unless 'create_users' is set to true.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/org/)\n\nThis resource represents an instance-scoped resource and uses Grafana's admin APIs.\nIt does not work with API tokens or service accounts which are org-scoped.\nYou must use basic auth.\n","description_kind":"markdown"}},"grafana_organization_preferences":{"version":0,"block":{"attributes":{"home_dashboard_id":{"type":"number","description":"The Organization home dashboard ID. Deprecated: Use `home_dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"optional":true},"home_dashboard_uid":{"type":"string","description":"The Organization home dashboard UID. This is only available in Grafana 9.0+.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"theme":{"type":"string","description":"The Organization theme. Available values are `light`, `dark`, `system`, or an empty string for the default.","description_kind":"markdown","optional":true},"timezone":{"type":"string","description":"The Organization timezone. Available values are `utc`, `browser`, or an empty string for the default.","description_kind":"markdown","optional":true},"week_start":{"type":"string","description":"The Organization week start.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/preferences/#get-current-org-prefs)\n","description_kind":"markdown"}},"grafana_playlist":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the playlist.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"item":{"nesting_mode":"set","block":{"attributes":{"id":{"type":"string","description_kind":"plain","computed":true},"order":{"type":"number","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true},"type":{"type":"string","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"min_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/create-manage-playlists/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/playlist/)\n","description_kind":"markdown"}},"grafana_report":{"version":0,"block":{"attributes":{"dashboard_id":{"type":"number","description":"Dashboard to be sent in the report. This field is deprecated, use `dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"optional":true,"computed":true},"dashboard_uid":{"type":"string","description":"Dashboard to be sent in the report.","description_kind":"markdown","optional":true,"computed":true},"formats":{"type":["set","string"],"description":"Specifies what kind of attachment to generate for the report. Allowed values: `pdf`, `csv`, `image`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"Generated identifier of the report.","description_kind":"markdown","computed":true},"include_dashboard_link":{"type":"bool","description":"Whether to include a link to the dashboard in the report. Defaults to `true`.","description_kind":"markdown","optional":true},"include_table_csv":{"type":"bool","description":"Whether to include a CSV file of table panel data. Defaults to `false`.","description_kind":"markdown","optional":true},"layout":{"type":"string","description":"Layout of the report. Allowed values: `simple`, `grid`. Defaults to `grid`.","description_kind":"markdown","optional":true},"message":{"type":"string","description":"Message to be sent in the report.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"Name of the report.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"orientation":{"type":"string","description":"Orientation of the report. Allowed values: `landscape`, `portrait`. Defaults to `landscape`.","description_kind":"markdown","optional":true},"recipients":{"type":["list","string"],"description":"List of recipients of the report.","description_kind":"markdown","required":true},"reply_to":{"type":"string","description":"Reply-to email address of the report.","description_kind":"markdown","optional":true}},"block_types":{"schedule":{"nesting_mode":"list","block":{"attributes":{"custom_interval":{"type":"string","description":"Custom interval of the report.\n**Note:** This field is only available when frequency is set to `custom`.","description_kind":"markdown","optional":true},"end_time":{"type":"string","description":"End time of the report. If empty, the report will be sent indefinitely (according to frequency). Note that times will be saved as UTC in Grafana.","description_kind":"markdown","optional":true},"frequency":{"type":"string","description":"Frequency of the report. Allowed values: `never`, `once`, `hourly`, `daily`, `weekly`, `monthly`, `custom`.","description_kind":"markdown","required":true},"last_day_of_month":{"type":"bool","description":"Send the report on the last day of the month Defaults to `false`.","description_kind":"markdown","optional":true},"start_time":{"type":"string","description":"Start time of the report. If empty, the start date will be set to the creation time. Note that times will be saved as UTC in Grafana.","description_kind":"markdown","optional":true},"workdays_only":{"type":"bool","description":"Whether to send the report only on work days. Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"Schedule of the report.","description_kind":"markdown"},"min_items":1,"max_items":1},"time_range":{"nesting_mode":"list","block":{"attributes":{"from":{"type":"string","description":"Start of the time range.","description_kind":"markdown","optional":true},"to":{"type":"string","description":"End of the time range.","description_kind":"markdown","optional":true}},"description":"Time range of the report.","description_kind":"markdown"},"max_items":1}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 7.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/create-reports/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/reporting/)\n","description_kind":"markdown"}},"grafana_role":{"version":0,"block":{"attributes":{"auto_increment_version":{"type":"bool","description":"Whether the role version should be incremented automatically on updates (and set to 1 on creation). This field or `version` should be set.","description_kind":"markdown","optional":true},"description":{"type":"string","description":"Description of the role.","description_kind":"markdown","optional":true},"display_name":{"type":"string","description":"Display name of the role. Available with Grafana 8.5+.","description_kind":"markdown","optional":true},"global":{"type":"bool","description":"Boolean to state whether the role is available across all organizations or not. Defaults to `false`.","description_kind":"markdown","optional":true},"group":{"type":"string","description":"Group of the role. Available with Grafana 8.5+.","description_kind":"markdown","optional":true},"hidden":{"type":"bool","description":"Boolean to state whether the role should be visible in the Grafana UI or not. Available with Grafana 8.5+. Defaults to `false`.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"Unique identifier of the role. Used for assignments.","description_kind":"markdown","optional":true,"computed":true},"version":{"type":"number","description":"Version of the role. A role is updated only on version increase. This field or `auto_increment_version` should be set.","description_kind":"markdown","optional":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"action":{"type":"string","description":"Specific action users granted with the role will be allowed to perform (for example: `users:read`)","description_kind":"markdown","required":true},"scope":{"type":"string","description":"Scope to restrict the action to a set of resources (for example: `users:*` or `roles:customrole1`) Defaults to ``.","description_kind":"markdown","optional":true}},"description":"Specific set of actions granted by the role.","description_kind":"markdown"}}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 8.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_role_assignment":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"role_uid":{"type":"string","description":"Grafana RBAC role UID.","description_kind":"markdown","required":true},"service_accounts":{"type":["set","string"],"description":"IDs of service accounts that the role should be assigned to.","description_kind":"markdown","optional":true},"teams":{"type":["set","string"],"description":"IDs of teams that the role should be assigned to.","description_kind":"markdown","optional":true},"users":{"type":["set","number"],"description":"IDs of users that the role should be assigned to.","description_kind":"markdown","optional":true}},"description":"\nManages the entire set of assignments for a role. Assignments that aren't specified when applying this resource will be removed.\n**Note:** This resource is available only with Grafana Enterprise 9.2+.\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_rule_group":{"version":0,"block":{"attributes":{"disable_provenance":{"type":"bool","description":"Allow modifying the rule group from other sources than Terraform or the Grafana API. Defaults to `false`.","description_kind":"markdown","optional":true},"folder_uid":{"type":"string","description":"The UID of the folder that the group belongs to.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interval_seconds":{"type":"number","description":"The interval, in seconds, at which all rules in the group are evaluated. If a group contains many rules, the rules are evaluated sequentially.","description_kind":"markdown","required":true},"name":{"type":"string","description":"The name of the rule group.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"block_types":{"rule":{"nesting_mode":"list","block":{"attributes":{"annotations":{"type":["map","string"],"description":"Key-value pairs of metadata to attach to the alert rule that may add user-defined context, but cannot be used for matching, grouping, or routing. Defaults to `map[]`.","description_kind":"markdown","optional":true},"condition":{"type":"string","description":"The `ref_id` of the query node in the `data` field to use as the alert condition.","description_kind":"markdown","required":true},"exec_err_state":{"type":"string","description":"Describes what state to enter when the rule's query is invalid and the rule cannot be executed. Options are OK, Error, and Alerting. Defaults to `Alerting`.","description_kind":"markdown","optional":true},"for":{"type":"string","description":"The amount of time for which the rule must be breached for the rule to be considered to be Firing. Before this time has elapsed, the rule is only considered to be Pending. Defaults to `0`.","description_kind":"markdown","optional":true},"is_paused":{"type":"bool","description":"Sets whether the alert should be paused or not. Defaults to `false`.","description_kind":"markdown","optional":true},"labels":{"type":["map","string"],"description":"Key-value pairs to attach to the alert rule that can be used in matching, grouping, and routing. Defaults to `map[]`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the alert rule.","description_kind":"markdown","required":true},"no_data_state":{"type":"string","description":"Describes what state to enter when the rule's query returns No Data. Options are OK, NoData, and Alerting. Defaults to `NoData`.","description_kind":"markdown","optional":true},"uid":{"type":"string","description":"The unique identifier of the alert rule.","description_kind":"markdown","computed":true}},"block_types":{"data":{"nesting_mode":"list","block":{"attributes":{"datasource_uid":{"type":"string","description":"The UID of the datasource being queried, or \"-100\" if this stage is an expression stage.","description_kind":"markdown","required":true},"model":{"type":"string","description":"Custom JSON data to send to the specified datasource when querying.","description_kind":"markdown","required":true},"query_type":{"type":"string","description":"An optional identifier for the type of query being executed. Defaults to ``.","description_kind":"markdown","optional":true},"ref_id":{"type":"string","description":"A unique string to identify this query stage within a rule.","description_kind":"markdown","required":true}},"block_types":{"relative_time_range":{"nesting_mode":"list","block":{"attributes":{"from":{"type":"number","description":"The number of seconds in the past, relative to when the rule is evaluated, at which the time range begins.","description_kind":"markdown","required":true},"to":{"type":"number","description":"The number of seconds in the past, relative to when the rule is evaluated, at which the time range ends.","description_kind":"markdown","required":true}},"description":"The time range, relative to when the query is executed, across which to query.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"A sequence of stages that describe the contents of the rule.","description_kind":"markdown"},"min_items":1}},"description":"The rules within the group.","description_kind":"markdown"},"min_items":1}},"description":"\nManages Grafana Alerting rule groups.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/alerting/alerting-rules/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/alerting_provisioning/#alert-rules)\n\nThis resource requires Grafana 9.1.0 or later.\n","description_kind":"markdown"}},"grafana_service_account":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_disabled":{"type":"bool","description":"The disabled status for the service account. Defaults to `false`.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the service account.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"role":{"type":"string","description":"The basic role of the service account in the organization.","description_kind":"markdown","optional":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_service_account_permission":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"service_account_id":{"type":"string","description":"The id of the service account.","description_kind":"markdown","required":true}},"block_types":{"permissions":{"nesting_mode":"set","block":{"attributes":{"permission":{"type":"string","description":"Permission to associate with item. Must be `Edit` or `Admin`.","description_kind":"markdown","required":true},"team_id":{"type":"string","description":"ID of the team to manage permissions for. Specify either this or `user_id`. Defaults to `0`.","description_kind":"markdown","optional":true},"user_id":{"type":"string","description":"ID of the user or service account to manage permissions for. Specify either this or `team_id`. Defaults to `0`.","description_kind":"markdown","optional":true}},"description":"The permission items to add/update. Items that are omitted from the list will be removed.","description_kind":"markdown"}}},"description":"\nManages the entire set of permissions for a service account. Permissions that aren't specified when applying this resource will be removed.\n\n**Note:** This resource is available from Grafana 9.2.4 onwards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana)","description_kind":"markdown"}},"grafana_service_account_token":{"version":0,"block":{"attributes":{"expiration":{"type":"string","description_kind":"plain","computed":true},"has_expired":{"type":"bool","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description_kind":"plain","computed":true,"sensitive":true},"name":{"type":"string","description_kind":"plain","required":true},"seconds_to_live":{"type":"number","description_kind":"plain","optional":true},"service_account_id":{"type":"string","description_kind":"plain","required":true}},"description":"\n**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)","description_kind":"markdown"}},"grafana_slo":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description is a free-text field that can provide more context to an SLO.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name should be a short description of your indicator. Consider names like \"API Availability\"","description_kind":"markdown","required":true}},"block_types":{"alerting":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations will be attached to all alerts generated by any of these rules.","description_kind":"markdown"}},"fastburn":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations to attach only to Fast Burn alerts.","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels to attach only to Fast Burn alerts.","description_kind":"markdown"}}},"description":"Alerting Rules generated for Fast Burn alerts","description_kind":"markdown"},"max_items":1},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels will be attached to all alerts generated by any of these rules.","description_kind":"markdown"}},"slowburn":{"nesting_mode":"list","block":{"block_types":{"annotation":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Annotations to attach only to Slow Burn alerts.","description_kind":"markdown"}},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Labels to attach only to Slow Burn alerts.","description_kind":"markdown"}}},"description":"Alerting Rules generated for Slow Burn alerts","description_kind":"markdown"},"max_items":1}},"description":"Configures the alerting rules that will be generated for each\n\t\t\t\ttime window associated with the SLO. Grafana SLOs can generate\n\t\t\t\talerts when the short-term error budget burn is very high, the\n\t\t\t\tlong-term error budget burn rate is high, or when the remaining\n\t\t\t\terror budget is below a certain threshold. Annotations and Labels support templating.","description_kind":"markdown"},"max_items":1},"destination_datasource":{"nesting_mode":"list","block":{"attributes":{"uid":{"type":"string","description":"UID for the Mimir Datasource","description_kind":"markdown","optional":true}},"description":"Destination Datasource sets the datasource defined for an SLO","description_kind":"markdown"},"max_items":1},"label":{"nesting_mode":"list","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"value":{"type":"string","description_kind":"plain","required":true}},"description":"Additional labels that will be attached to all metrics generated from the query. These labels are useful for grouping SLOs in dashboard views that you create by hand. Labels must adhere to Prometheus label name schema - \"^[a-zA-Z_][a-zA-Z0-9_]*$\"","description_kind":"markdown"}},"objectives":{"nesting_mode":"list","block":{"attributes":{"value":{"type":"number","description":"Value between 0 and 1. If the value of the query is above the objective, the SLO is met.","description_kind":"markdown","required":true},"window":{"type":"string","description":"A Prometheus-parsable time duration string like 24h, 60m. This is the time window the objective is measured over.","description_kind":"markdown","required":true}},"description":"Over each rolling time window, the remaining error budget will be calculated, and separate alerts can be generated for each time window based on the SLO burn rate or remaining error budget.","description_kind":"markdown"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Query type must be one of: \"freeform\", \"query\", \"ratio\", or \"threshold\"","description_kind":"markdown","required":true}},"block_types":{"freeform":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"Freeform Query Field","description_kind":"markdown","required":true}},"description_kind":"plain"},"max_items":1},"ratio":{"nesting_mode":"list","block":{"attributes":{"group_by_labels":{"type":["list","string"],"description":"Defines Group By Labels used for per-label alerting. These appear as variables on SLO dashboards to enable filtering and aggregation. Labels must adhere to Prometheus label name schema - \"^[a-zA-Z_][a-zA-Z0-9_]*$\"","description_kind":"markdown","optional":true},"success_metric":{"type":"string","description":"Counter metric for success events (numerator)","description_kind":"markdown","required":true},"total_metric":{"type":"string","description":"Metric for total events (denominator)","description_kind":"markdown","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Query describes the indicator that will be measured against the objective. Freeform Query types are currently supported.","description_kind":"markdown"},"min_items":1}},"description":"\nResource manages Grafana SLOs. \n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/api/)\n* [Additional Information On Alerting Rule Annotations and Labels](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#templating/)\n\t\t","description_kind":"markdown"}},"grafana_synthetic_monitoring_check":{"version":0,"block":{"attributes":{"alert_sensitivity":{"type":"string","description":"Can be set to `none`, `low`, `medium`, or `high` to correspond to the check [alert levels](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/synthetic-monitoring-alerting/). Defaults to `none`.","description_kind":"markdown","optional":true},"basic_metrics_only":{"type":"bool","description":"Metrics are reduced by default. Set this to `false` if you'd like to publish all metrics. We maintain a [full list of metrics](https://github.com/grafana/synthetic-monitoring-agent/tree/main/internal/scraper/testdata) collected for each. Defaults to `true`.","description_kind":"markdown","optional":true},"enabled":{"type":"bool","description":"Whether to enable the check. Defaults to `true`.","description_kind":"markdown","optional":true},"frequency":{"type":"number","description":"How often the check runs in milliseconds (the value is not truly a \"frequency\" but a \"period\"). The minimum acceptable value is 1 second (1000 ms), and the maximum is 120 seconds (120000 ms). Defaults to `60000`.","description_kind":"markdown","optional":true},"id":{"type":"string","description":"The ID of the check.","description_kind":"markdown","computed":true},"job":{"type":"string","description":"Name used for job label.","description_kind":"markdown","required":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs. The maximum number of labels that can be specified per check is 5. These are applied, along with the probe-specific labels, to the outgoing metrics. The names and values of the labels cannot be empty, and the maximum length is 32 bytes.","description_kind":"markdown","optional":true},"probes":{"type":["set","number"],"description":"List of probe location IDs where this target will be checked from.","description_kind":"markdown","required":true},"target":{"type":"string","description":"Hostname to ping.","description_kind":"markdown","required":true},"tenant_id":{"type":"number","description":"The tenant ID of the check.","description_kind":"markdown","computed":true},"timeout":{"type":"number","description":"Specifies the maximum running time for the check in milliseconds. The minimum acceptable value is 1 second (1000 ms), and the maximum 10 seconds (10000 ms). Defaults to `3000`.","description_kind":"markdown","optional":true}},"block_types":{"settings":{"nesting_mode":"set","block":{"block_types":{"dns":{"nesting_mode":"set","block":{"attributes":{"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"port":{"type":"number","description":"Port to target. Defaults to `53`.","description_kind":"markdown","optional":true},"protocol":{"type":"string","description":"`TCP` or `UDP`. Defaults to `UDP`.","description_kind":"markdown","optional":true},"record_type":{"type":"string","description":"One of `ANY`, `A`, `AAAA`, `CNAME`, `MX`, `NS`, `PTR`, `SOA`, `SRV`, `TXT`. Defaults to `A`.","description_kind":"markdown","optional":true},"server":{"type":"string","description":"DNS server address to target. Defaults to `8.8.8.8`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true},"valid_r_codes":{"type":["set","string"],"description":"List of valid response codes. Options include `NOERROR`, `BADALG`, `BADMODE`, `BADKEY`, `BADCOOKIE`, `BADNAME`, `BADSIG`, `BADTIME`, `BADTRUNC`, `BADVERS`, `FORMERR`, `NOTIMP`, `NOTAUTH`, `NOTZONE`, `NXDOMAIN`, `NXRRSET`, `REFUSED`, `SERVFAIL`, `YXDOMAIN`, `YXRRSET`.","description_kind":"markdown","optional":true}},"block_types":{"validate_additional_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate additional matches.","description_kind":"markdown"}},"validate_answer_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate response answer.","description_kind":"markdown"},"max_items":1},"validate_authority_rrs":{"nesting_mode":"set","block":{"attributes":{"fail_if_matches_regexp":{"type":["set","string"],"description":"Fail if value matches regex.","description_kind":"markdown","optional":true},"fail_if_not_matches_regexp":{"type":["set","string"],"description":"Fail if value does not match regex.","description_kind":"markdown","optional":true}},"description":"Validate response authority.","description_kind":"markdown"},"max_items":1}},"description":"Settings for DNS check. The target must be a valid hostname (or IP address for `PTR` records).","description_kind":"markdown"},"max_items":1},"http":{"nesting_mode":"set","block":{"attributes":{"bearer_token":{"type":"string","description":"Token for use with bearer authorization header.","description_kind":"markdown","optional":true},"body":{"type":"string","description":"The body of the HTTP request used in probe.","description_kind":"markdown","optional":true},"cache_busting_query_param_name":{"type":"string","description":"The name of the query parameter used to prevent the server from using a cached response. Each probe will assign a random value to this parameter each time a request is made.","description_kind":"markdown","optional":true},"fail_if_body_matches_regexp":{"type":["set","string"],"description":"List of regexes. If any match the response body, the check will fail.","description_kind":"markdown","optional":true},"fail_if_body_not_matches_regexp":{"type":["set","string"],"description":"List of regexes. If any do not match the response body, the check will fail.","description_kind":"markdown","optional":true},"fail_if_not_ssl":{"type":"bool","description":"Fail if SSL is not present. Defaults to `false`.","description_kind":"markdown","optional":true},"fail_if_ssl":{"type":"bool","description":"Fail if SSL is present. Defaults to `false`.","description_kind":"markdown","optional":true},"headers":{"type":["set","string"],"description":"The HTTP headers set for the probe.","description_kind":"markdown","optional":true},"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"method":{"type":"string","description":"Request method. One of `GET`, `CONNECT`, `DELETE`, `HEAD`, `OPTIONS`, `POST`, `PUT`, `TRACE` Defaults to `GET`.","description_kind":"markdown","optional":true},"no_follow_redirects":{"type":"bool","description":"Do not follow redirects. Defaults to `false`.","description_kind":"markdown","optional":true},"proxy_connect_headers":{"type":["set","string"],"description":"The HTTP headers sent to the proxy URL","description_kind":"markdown","optional":true},"proxy_url":{"type":"string","description":"Proxy URL.","description_kind":"markdown","optional":true},"valid_http_versions":{"type":["set","string"],"description":"List of valid HTTP versions. Options include `HTTP/1.0`, `HTTP/1.1`, `HTTP/2.0`","description_kind":"markdown","optional":true},"valid_status_codes":{"type":["set","number"],"description":"Accepted status codes. If unset, defaults to 2xx.","description_kind":"markdown","optional":true}},"block_types":{"basic_auth":{"nesting_mode":"set","block":{"attributes":{"password":{"type":"string","description":"Basic auth password.","description_kind":"markdown","required":true},"username":{"type":"string","description":"Basic auth username.","description_kind":"markdown","required":true}},"description":"Basic auth settings.","description_kind":"markdown"},"max_items":1},"fail_if_header_matches_regexp":{"nesting_mode":"set","block":{"attributes":{"allow_missing":{"type":"bool","description":"Allow header to be missing from responses. Defaults to `false`.","description_kind":"markdown","optional":true},"header":{"type":"string","description":"Header name.","description_kind":"markdown","required":true},"regexp":{"type":"string","description":"Regex that header value should match.","description_kind":"markdown","required":true}},"description":"Check fails if headers match.","description_kind":"markdown"}},"fail_if_header_not_matches_regexp":{"nesting_mode":"set","block":{"attributes":{"allow_missing":{"type":"bool","description":"Allow header to be missing from responses. Defaults to `false`.","description_kind":"markdown","optional":true},"header":{"type":"string","description":"Header name.","description_kind":"markdown","required":true},"regexp":{"type":"string","description":"Regex that header value should match.","description_kind":"markdown","required":true}},"description":"Check fails if headers do not match.","description_kind":"markdown"}},"tls_config":{"nesting_mode":"set","block":{"attributes":{"ca_cert":{"type":"string","description":"CA certificate in PEM format.","description_kind":"markdown","optional":true},"client_cert":{"type":"string","description":"Client certificate in PEM format.","description_kind":"markdown","optional":true},"client_key":{"type":"string","description":"Client key in PEM format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Disable target certificate validation. Defaults to `false`.","description_kind":"markdown","optional":true},"server_name":{"type":"string","description":"Used to verify the hostname for the targets.","description_kind":"markdown","optional":true}},"description":"TLS config.","description_kind":"markdown"},"max_items":1}},"description":"Settings for HTTP check. The target must be a URL (http or https).","description_kind":"markdown"},"max_items":1},"multihttp":{"nesting_mode":"set","block":{"block_types":{"entries":{"nesting_mode":"list","block":{"block_types":{"assertions":{"nesting_mode":"list","block":{"attributes":{"condition":{"type":"string","description":"The condition of the assertion: NOT_CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS","description_kind":"markdown","optional":true},"expression":{"type":"string","description":"The expression of the assertion. Should start with $.","description_kind":"markdown","optional":true},"subject":{"type":"string","description":"The subject of the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, RESPONSE_BODY","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The type of assertion to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, REGEX_ASSERTION","description_kind":"markdown","required":true},"value":{"type":"string","description":"The value of the assertion","description_kind":"markdown","optional":true}},"description":"Assertions to make on the request response","description_kind":"markdown"}},"request":{"nesting_mode":"set","block":{"attributes":{"method":{"type":"string","description":"The HTTP method to use","description_kind":"markdown","required":true},"url":{"type":"string","description":"The URL for the request","description_kind":"markdown","required":true}},"block_types":{"body":{"nesting_mode":"set","block":{"attributes":{"content_encoding":{"type":"string","description":"The content encoding of the body","description_kind":"markdown","optional":true},"content_type":{"type":"string","description":"The content type of the body","description_kind":"markdown","optional":true},"payload":{"type":"string","description":"The body payload","description_kind":"markdown","optional":true}},"description":"The body of the HTTP request used in probe.","description_kind":"markdown"}},"headers":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Name of the header to send","description_kind":"markdown","required":true},"value":{"type":"string","description":"Value of the header to send","description_kind":"markdown","required":true}},"description":"The headers to send with the request","description_kind":"markdown"}},"query_fields":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Name of the query field to send","description_kind":"markdown","required":true},"value":{"type":"string","description":"Value of the query field to send","description_kind":"markdown","required":true}},"description":"Query fields to send with the request","description_kind":"markdown"}}},"description":"An individual MultiHTTP request","description_kind":"markdown"},"max_items":1},"variables":{"nesting_mode":"list","block":{"attributes":{"attribute":{"type":"string","description":"The attribute to use when finding the variable value. Only used when type is CSS_SELECTOR","description_kind":"markdown","optional":true},"expression":{"type":"string","description":"The expression to when finding the variable. Should start with $. Only use when type is JSON_PATH or REGEX","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The name of the variable to extract","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The method of finding the variable value to extract. JSON_PATH, REGEX, CSS_SELECTOR","description_kind":"markdown","required":true}},"description":"Variables to extract from the request response","description_kind":"markdown"}}},"description_kind":"plain"}}},"description":"Settings for MultiHTTP check. The target must be a URL (http or https)","description_kind":"markdown"},"max_items":1},"ping":{"nesting_mode":"set","block":{"attributes":{"dont_fragment":{"type":"bool","description":"Set the DF-bit in the IP-header. Only works with ipV4. Defaults to `false`.","description_kind":"markdown","optional":true},"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"payload_size":{"type":"number","description":"Payload size. Defaults to `0`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true}},"description":"Settings for ping (ICMP) check. The target must be a valid hostname or IP address.","description_kind":"markdown"},"max_items":1},"tcp":{"nesting_mode":"set","block":{"attributes":{"ip_version":{"type":"string","description":"Options are `V4`, `V6`, `Any`. Specifies whether the corresponding check will be performed using IPv4 or IPv6. The `Any` value indicates that IPv6 should be used, falling back to IPv4 if that's not available. Defaults to `V4`.","description_kind":"markdown","optional":true},"source_ip_address":{"type":"string","description":"Source IP address.","description_kind":"markdown","optional":true},"tls":{"type":"bool","description":"Whether or not TLS is used when the connection is initiated. Defaults to `false`.","description_kind":"markdown","optional":true}},"block_types":{"query_response":{"nesting_mode":"set","block":{"attributes":{"expect":{"type":"string","description":"Response to expect.","description_kind":"markdown","required":true},"send":{"type":"string","description":"Data to send.","description_kind":"markdown","required":true},"start_tls":{"type":"bool","description":"Upgrade TCP connection to TLS. Defaults to `false`.","description_kind":"markdown","optional":true}},"description":"The query sent in the TCP probe and the expected associated response.","description_kind":"markdown"}},"tls_config":{"nesting_mode":"set","block":{"attributes":{"ca_cert":{"type":"string","description":"CA certificate in PEM format.","description_kind":"markdown","optional":true},"client_cert":{"type":"string","description":"Client certificate in PEM format.","description_kind":"markdown","optional":true},"client_key":{"type":"string","description":"Client key in PEM format.","description_kind":"markdown","optional":true,"sensitive":true},"insecure_skip_verify":{"type":"bool","description":"Disable target certificate validation. Defaults to `false`.","description_kind":"markdown","optional":true},"server_name":{"type":"string","description":"Used to verify the hostname for the targets.","description_kind":"markdown","optional":true}},"description":"TLS config.","description_kind":"markdown"},"max_items":1}},"description":"Settings for TCP check. The target must be of the form `\u003chost\u003e:\u003cport\u003e`, where the host portion must be a valid hostname or IP address.","description_kind":"markdown"},"max_items":1},"traceroute":{"nesting_mode":"set","block":{"attributes":{"max_hops":{"type":"number","description":"Maximum TTL for the trace Defaults to `64`.","description_kind":"markdown","optional":true},"max_unknown_hops":{"type":"number","description":"Maximum number of hosts to travers that give no response Defaults to `15`.","description_kind":"markdown","optional":true},"ptr_lookup":{"type":"bool","description":"Reverse lookup hostnames from IP addresses Defaults to `true`.","description_kind":"markdown","optional":true}},"description":"Settings for traceroute check. The target must be a valid hostname or IP address","description_kind":"markdown"},"max_items":1}},"description":"Check settings. Should contain exactly one nested block.","description_kind":"markdown"},"min_items":1,"max_items":1}},"description":"\nSynthetic Monitoring checks are tests that run on selected probes at defined\nintervals and report metrics and logs back to your Grafana Cloud account. The\ntarget for checks can be a domain name, a server, or a website, depending on\nwhat information you would like to gather about your endpoint. You can define\nmultiple checks for a single endpoint to check different capabilities.\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/checks/)\n","description_kind":"markdown"}},"grafana_synthetic_monitoring_installation":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metrics_publisher_key":{"type":"string","description":"The Cloud API Key with the `MetricsPublisher` role used to publish metrics to the SM API","description_kind":"markdown","required":true,"sensitive":true},"sm_access_token":{"type":"string","description":"Generated token to access the SM API.","description_kind":"markdown","computed":true},"stack_id":{"type":"string","description":"The ID or slug of the stack to install SM on.","description_kind":"markdown","required":true},"stack_sm_api_url":{"type":"string","description":"The URL of the SM API to install SM on. This depends on the stack region, find the list of API URLs here: https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/#probe-api-server-url. A static mapping exists in the provider but it may not contain all the regions. If it does contain the stack's region, this field is computed automatically and readable.","description_kind":"markdown","optional":true,"computed":true}},"description":"\nSets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/installation/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n","description_kind":"markdown"}},"grafana_synthetic_monitoring_probe":{"version":0,"block":{"attributes":{"auth_token":{"type":"string","description":"The probe authentication token. Your probe must use this to authenticate with Grafana Cloud.","description_kind":"markdown","computed":true,"sensitive":true},"id":{"type":"string","description":"The ID of the probe.","description_kind":"markdown","computed":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs.","description_kind":"markdown","optional":true},"latitude":{"type":"number","description":"Latitude coordinates.","description_kind":"markdown","required":true},"longitude":{"type":"number","description":"Longitude coordinates.","description_kind":"markdown","required":true},"name":{"type":"string","description":"Name of the probe.","description_kind":"markdown","required":true},"public":{"type":"bool","description":"Public probes are run by Grafana Labs and can be used by all users. Only Grafana Labs managed public probes will be set to `true`. Defaults to `false`.","description_kind":"markdown","optional":true},"region":{"type":"string","description":"Region of the probe.","description_kind":"markdown","required":true},"tenant_id":{"type":"number","description":"The tenant ID of the probe.","description_kind":"markdown","computed":true}},"description":"\nBesides the public probes run by Grafana Labs, you can also install your\nown private probes. These are only accessible to you and only write data to\nyour Grafana Cloud account. Private probes are instances of the open source\nGrafana Synthetic Monitoring Agent.\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/monitor-public-endpoints/private-probes/)\n","description_kind":"markdown"}},"grafana_team":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"An email address for the team.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ignore_externally_synced_members":{"type":"bool","description":"Ignores team members that have been added to team by [Team Sync](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/).\nTeam Sync can be provisioned using [grafana_team_external_group resource](https://registry.terraform.io/providers/grafana/grafana/latest/docs/resources/team_external_group).\n Defaults to `true`.","description_kind":"markdown","optional":true},"members":{"type":["set","string"],"description":"A set of email addresses corresponding to users who should be given membership\nto the team. Note: users specified here must already exist in Grafana.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana team created.","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"team_id":{"type":"number","description":"The team id assigned to this team by Grafana.","description_kind":"markdown","computed":true}},"block_types":{"preferences":{"nesting_mode":"list","block":{"attributes":{"home_dashboard_uid":{"type":"string","description":"The UID of the dashboard to display when a team member logs in. Defaults to ``.","description_kind":"markdown","optional":true},"theme":{"type":"string","description":"The default theme for this team. Available themes are `light`, `dark`, `system`, or an empty string for the default theme. Defaults to ``.","description_kind":"markdown","optional":true},"timezone":{"type":"string","description":"The default timezone for this team. Available values are `utc`, `browser`, or an empty string for the default. Defaults to ``.","description_kind":"markdown","optional":true}},"description_kind":"plain"},"max_items":1},"team_sync":{"nesting_mode":"list","block":{"attributes":{"groups":{"type":["set","string"],"description_kind":"plain","optional":true}},"description":"Sync external auth provider groups with this Grafana team. Only available in Grafana Enterprise.\n\t* [Official documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/)\n\t* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team_sync/)","description_kind":"markdown"},"max_items":1}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/team-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team/)\n","description_kind":"markdown"}},"grafana_team_external_group":{"version":0,"block":{"attributes":{"groups":{"type":["set","string"],"description":"The team external groups list","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"team_id":{"type":"string","description":"The Team ID","description_kind":"markdown","required":true}},"description":"Equivalent to the the `team_sync` attribute of the `grafana_team` resource. Use one or the other to configure a team's external groups syncing config.","description_kind":"markdown"}},"grafana_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email address of the Grafana user.","description_kind":"markdown","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_admin":{"type":"bool","description":"Whether to make user an admin. Defaults to `false`.","description_kind":"markdown","optional":true},"login":{"type":"string","description":"The username for the Grafana user.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana user.","description_kind":"markdown","optional":true},"password":{"type":"string","description":"The password for the Grafana user.","description_kind":"markdown","required":true,"sensitive":true},"user_id":{"type":"number","description":"The numerical ID of the Grafana user.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis resource represents an instance-scoped resource and uses Grafana's admin APIs.\nIt does not work with API tokens or service accounts which are org-scoped. \nYou must use basic auth.\n","description_kind":"markdown"}}},"data_source_schemas":{"grafana_cloud_ips":{"version":0,"block":{"attributes":{"hosted_alerts":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted alerts.","description_kind":"markdown","computed":true},"hosted_grafana":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted Grafana.","description_kind":"markdown","computed":true},"hosted_logs":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted logs.","description_kind":"markdown","computed":true},"hosted_metrics":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted metrics.","description_kind":"markdown","computed":true},"hosted_traces":{"type":["set","string"],"description":"Set of IP addresses that are used for hosted traces.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description":"Data source for retrieving sets of cloud IPs. See https://grafana.com/docs/grafana-cloud/reference/allow-list/ for more info","description_kind":"markdown"}},"grafana_cloud_organization":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","computed":true},"slug":{"type":"string","description_kind":"plain","optional":true,"computed":true},"updated_at":{"type":"string","description_kind":"plain","computed":true},"url":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}},"grafana_cloud_stack":{"version":0,"block":{"attributes":{"alertmanager_name":{"type":"string","description":"Name of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_status":{"type":"string","description":"Status of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_url":{"type":"string","description":"Base URL of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"alertmanager_user_id":{"type":"number","description":"User ID of the Alertmanager instance configured for this stack.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of stack.","description_kind":"markdown","computed":true},"graphite_name":{"type":"string","description_kind":"plain","computed":true},"graphite_status":{"type":"string","description_kind":"plain","computed":true},"graphite_url":{"type":"string","description_kind":"plain","computed":true},"graphite_user_id":{"type":"number","description_kind":"plain","computed":true},"id":{"type":"string","description":"The stack id assigned to this stack by Grafana.","description_kind":"markdown","computed":true},"logs_name":{"type":"string","description_kind":"plain","computed":true},"logs_status":{"type":"string","description_kind":"plain","computed":true},"logs_url":{"type":"string","description_kind":"plain","computed":true},"logs_user_id":{"type":"number","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of stack. Conventionally matches the url of the instance (e.g. “\u003cstack_slug\u003e.grafana.net”).","description_kind":"markdown","computed":true},"org_id":{"type":"number","description":"Organization id to assign to this stack.","description_kind":"markdown","computed":true},"org_name":{"type":"string","description":"Organization name to assign to this stack.","description_kind":"markdown","computed":true},"org_slug":{"type":"string","description":"Organization slug to assign to this stack.","description_kind":"markdown","computed":true},"prometheus_name":{"type":"string","description":"Prometheus name for this instance.","description_kind":"markdown","computed":true},"prometheus_remote_endpoint":{"type":"string","description":"Use this URL to query hosted metrics data e.g. Prometheus data source in Grafana","description_kind":"markdown","computed":true},"prometheus_remote_write_endpoint":{"type":"string","description":"Use this URL to send prometheus metrics to Grafana cloud","description_kind":"markdown","computed":true},"prometheus_status":{"type":"string","description":"Prometheus status for this instance.","description_kind":"markdown","computed":true},"prometheus_url":{"type":"string","description":"Prometheus url for this instance.","description_kind":"markdown","computed":true},"prometheus_user_id":{"type":"number","description":"Prometheus user ID. Used for e.g. remote_write.","description_kind":"markdown","computed":true},"region_slug":{"type":"string","description":"The region this stack is deployed to.","description_kind":"markdown","computed":true},"slug":{"type":"string","description":"Subdomain that the Grafana instance will be available at (i.e. setting slug to “\u003cstack_slug\u003e” will make the instance\navailable at “https://\u003cstack_slug\u003e.grafana.net\".","description_kind":"markdown","required":true},"status":{"type":"string","description":"Status of the stack.","description_kind":"markdown","computed":true},"traces_name":{"type":"string","description_kind":"plain","computed":true},"traces_status":{"type":"string","description_kind":"plain","computed":true},"traces_url":{"type":"string","description":"Base URL of the Traces instance configured for this stack. To use this in the Tempo data source in Grafana, append `/tempo` to the URL.","description_kind":"markdown","computed":true},"traces_user_id":{"type":"number","description_kind":"plain","computed":true},"url":{"type":"string","description":"Custom URL for the Grafana instance. Must have a CNAME setup to point to `.grafana.net` before creating the stack","description_kind":"markdown","computed":true}},"description":"Data source for Grafana Stack","description_kind":"markdown"}},"grafana_dashboard":{"version":1,"block":{"attributes":{"config_json":{"type":"string","description":"The complete dashboard model JSON.","description_kind":"markdown","computed":true},"dashboard_id":{"type":"number","description":"The numerical ID of the Grafana dashboard. Specify either this or `uid`. Defaults to `-1`.","description_kind":"markdown","optional":true},"folder":{"type":"number","description":"The numerical ID of the folder where the Grafana dashboard is found.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_starred":{"type":"bool","description":"Whether or not the Grafana dashboard is starred. Starred Dashboards will show up on your own Home Dashboard by default, and are a convenient way to mark Dashboards that you’re interested in.","description_kind":"markdown","computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"slug":{"type":"string","description":"URL slug of the dashboard (deprecated).","description_kind":"markdown","computed":true},"title":{"type":"string","description":"The title of the Grafana dashboard.","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The uid of the Grafana dashboard. Specify either this or `dashboard_id`. Defaults to ``.","description_kind":"markdown","optional":true},"url":{"type":"string","description":"The full URL of the dashboard.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"The numerical version of the Grafana dashboard.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [Folder/Dashboard Search HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_dashboard_search/)\n* [Dashboard HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_dashboards":{"version":0,"block":{"attributes":{"dashboards":{"type":["list",["object",{"folder_title":"string","title":"string","uid":"string"}]],"description_kind":"plain","computed":true},"folder_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana folders containing dashboards. Specify to filter for dashboards by folder (eg. `[0]` for General folder), or leave blank to get all dashboards in all folders.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"limit":{"type":"number","description":"Maximum number of dashboard search results to return. Defaults to `5000`.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"tags":{"type":["list","string"],"description":"List of string Grafana dashboard tags to search for, eg. `[\"prod\"]`. Used only as search input, i.e., attribute value will remain unchanged.","description_kind":"markdown","optional":true}},"description":"\nDatasource for retrieving all dashboards. Specify list of folder IDs to search in for dashboards.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/)\n* [Folder/Dashboard Search HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder_dashboard_search/)\n* [Dashboard HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/)\n","description_kind":"markdown"}},"grafana_data_source":{"version":1,"block":{"attributes":{"access_mode":{"type":"string","description":"The method by which Grafana will access the data source: `proxy` or `direct`.","description_kind":"markdown","computed":true},"basic_auth_enabled":{"type":"bool","description":"Whether to enable basic auth for the data source.","description_kind":"markdown","computed":true},"basic_auth_username":{"type":"string","description":"Basic auth username.","description_kind":"markdown","computed":true},"database_name":{"type":"string","description":"(Required by some data source types) The name of the database to use on the selected data source server.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_default":{"type":"bool","description":"Whether to set the data source as default. This should only be `true` to a single data source.","description_kind":"markdown","computed":true},"json_data_encoded":{"type":"string","description":"Serialized JSON string containing the json data. This attribute can be used to pass configuration options to the data source. To figure out what options a datasource has available, see its docs or inspect the network data when saving it from the Grafana UI. Note that keys in this map are usually camelCased.","description_kind":"markdown","computed":true},"name":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"type":{"type":"string","description":"The data source type. Must be one of the supported data source keywords.","description_kind":"markdown","computed":true},"uid":{"type":"string","description_kind":"plain","optional":true,"computed":true},"url":{"type":"string","description":"The URL for the data source. The type of URL required varies depending on the chosen data source type.","description_kind":"markdown","computed":true},"username":{"type":"string","description":"(Required by some data source types) The username to use to authenticate to the data source.","description_kind":"markdown","computed":true}},"description":"Get details about a Grafana Datasource querying by either name, uid or ID","description_kind":"markdown"}},"grafana_folder":{"version":0,"block":{"attributes":{"id":{"type":"number","description":"The numerical ID of the Grafana folder.","description_kind":"markdown","computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"title":{"type":"string","description":"The name of the Grafana folder.","description_kind":"markdown","required":true},"uid":{"type":"string","description":"The uid of the Grafana folder.","description_kind":"markdown","computed":true},"url":{"type":"string","description":"The full URL of the folder.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_folders":{"version":0,"block":{"attributes":{"folders":{"type":["set",["object",{"id":"number","title":"string","uid":"string","url":"string"}]],"description":"The Grafana instance's folders.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/folder/)\n","description_kind":"markdown"}},"grafana_library_panel":{"version":0,"block":{"attributes":{"created":{"type":"string","description":"Timestamp when the library panel was created.","description_kind":"markdown","computed":true},"dashboard_ids":{"type":["list","number"],"description":"Numerical IDs of Grafana dashboards containing the library panel.","description_kind":"markdown","computed":true},"description":{"type":"string","description":"Description of the library panel.","description_kind":"markdown","computed":true},"folder_id":{"type":"string","description":"ID of the folder where the library panel is stored.","description_kind":"markdown","computed":true},"folder_name":{"type":"string","description":"Name of the folder containing the library panel.","description_kind":"markdown","computed":true},"folder_uid":{"type":"string","description":"Unique ID (UID) of the folder containing the library panel.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"model_json":{"type":"string","description":"The JSON model for the library panel.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"Name of the library panel.","description_kind":"markdown","optional":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"panel_id":{"type":"number","description":"The numeric ID of the library panel computed by Grafana.","description_kind":"markdown","computed":true},"type":{"type":"string","description":"Type of the library panel (eg. text).","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"The unique identifier (UID) of the library panel.","description_kind":"markdown","optional":true},"updated":{"type":"string","description":"Timestamp when the library panel was last modified.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the library panel.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving a single library panel by name or uid.","description_kind":"markdown"}},"grafana_oncall_action":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The action name.","description_kind":"markdown","required":true}},"description":"\n**Note:** This data source is going to be deprecated, please use outgoing webhook data source instead.\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n!\u003e Deprecated: Use the `grafana_oncall_outgoing_webhook` data source instead.\n","description_kind":"markdown","deprecated":true}},"grafana_oncall_escalation_chain":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The escalation chain name.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n","description_kind":"markdown"}},"grafana_oncall_outgoing_webhook":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The outgoing webhook name.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n","description_kind":"markdown"}},"grafana_oncall_schedule":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The schedule name.","description_kind":"markdown","required":true},"type":{"type":"string","description":"The schedule type.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/oncall/latest/on-call-schedules/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/schedules/)\n","description_kind":"markdown"}},"grafana_oncall_slack_channel":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The Slack channel name.","description_kind":"markdown","required":true},"slack_id":{"type":"string","description":"The Slack ID of the channel.","description_kind":"markdown","computed":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/slack_channels/)\n","description_kind":"markdown"}},"grafana_oncall_team":{"version":0,"block":{"attributes":{"avatar_url":{"type":"string","description_kind":"plain","computed":true},"email":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The team name.","description_kind":"markdown","required":true}},"description_kind":"plain"}},"grafana_oncall_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email of the user.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description":"The role of the user.","description_kind":"markdown","computed":true},"username":{"type":"string","description":"The username of the user.","description_kind":"markdown","required":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/users/)\n","description_kind":"markdown"}},"grafana_oncall_user_group":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slack_handle":{"type":"string","description_kind":"plain","required":true},"slack_id":{"type":"string","description_kind":"plain","computed":true}},"description":"\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/user_groups/)\n","description_kind":"markdown"}},"grafana_organization":{"version":0,"block":{"attributes":{"admins":{"type":["set","string"],"description":"A list of email addresses corresponding to users given admin access to the organization.","description_kind":"markdown","computed":true},"editors":{"type":["set","string"],"description":"A list of email addresses corresponding to users given editor access to the organization.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the Organization.","description_kind":"markdown","required":true},"viewers":{"type":["set","string"],"description":"A list of email addresses corresponding to users given viewer access to the organization.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/org/)\n","description_kind":"markdown"}},"grafana_organization_preferences":{"version":0,"block":{"attributes":{"home_dashboard_id":{"type":"number","description":"The Organization home dashboard ID. Deprecated: Use `home_dashboard_uid` instead.","description_kind":"markdown","deprecated":true,"computed":true},"home_dashboard_uid":{"type":"string","description":"The Organization home dashboard UID. This is only available in Grafana 9.0+.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"theme":{"type":"string","description":"The Organization theme. Available values are `light`, `dark`, `system`, or an empty string for the default.","description_kind":"markdown","computed":true},"timezone":{"type":"string","description":"The Organization timezone. Available values are `utc`, `browser`, or an empty string for the default.","description_kind":"markdown","computed":true},"week_start":{"type":"string","description":"The Organization week start.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/organization-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/preferences/#get-current-org-prefs)\n","description_kind":"markdown"}},"grafana_role":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the role.","description_kind":"markdown","computed":true},"display_name":{"type":"string","description":"Display name of the role. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"global":{"type":"bool","description":"Boolean to state whether the role is available across all organizations or not.","description_kind":"markdown","computed":true},"group":{"type":"string","description":"Group of the role. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"hidden":{"type":"bool","description":"Boolean to state whether the role should be visible in the Grafana UI or not. Available with Grafana 8.5+.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the role","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","computed":true},"permissions":{"type":["set",["object",{"action":"string","scope":"string"}]],"description":"Specific set of actions granted by the role.","description_kind":"markdown","computed":true},"uid":{"type":"string","description":"Unique identifier of the role. Used for assignments.","description_kind":"markdown","computed":true},"version":{"type":"number","description":"Version of the role. A role is updated only on version increase. This field or `auto_increment_version` should be set.","description_kind":"markdown","computed":true}},"description":"\n**Note:** This resource is available only with Grafana Enterprise 8.+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/access_control/)\n","description_kind":"markdown"}},"grafana_slos":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slos":{"type":["list",["object",{"alerting":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"fastburn":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"label":["list",["object",{"key":"string","value":"string"}]]}]],"label":["list",["object",{"key":"string","value":"string"}]],"slowburn":["list",["object",{"annotation":["list",["object",{"key":"string","value":"string"}]],"label":["list",["object",{"key":"string","value":"string"}]]}]]}]],"description":"string","destination_datasource":["list",["object",{"uid":"string"}]],"label":["list",["object",{"key":"string","value":"string"}]],"name":"string","objectives":["list",["object",{"value":"number","window":"string"}]],"query":["list",["object",{"freeform":["list",["object",{"query":"string"}]],"ratio":["list",["object",{"group_by_labels":["list","string"],"success_metric":"string","total_metric":"string"}]],"type":"string"}]],"uuid":"string"}]],"description":"Returns a list of all SLOs\"","description_kind":"markdown","computed":true}},"description":"\nDatasource for retrieving all SLOs.\n\t\t\n* [Official documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/)\n* [API documentation](https://grafana.com/docs/grafana-cloud/alerting-and-irm/slo/api/)\n* [Additional Information On Alerting Rule Annotations and Labels](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#templating/)\n\t\t\t\t","description_kind":"markdown"}},"grafana_synthetic_monitoring_probe":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of the probe.","description_kind":"markdown","computed":true},"labels":{"type":["map","string"],"description":"Custom labels to be included with collected metrics and logs.","description_kind":"markdown","computed":true},"latitude":{"type":"number","description":"Latitude coordinates.","description_kind":"markdown","computed":true},"longitude":{"type":"number","description":"Longitude coordinates.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"Name of the probe.","description_kind":"markdown","required":true},"public":{"type":"bool","description":"Public probes are run by Grafana Labs and can be used by all users. Only Grafana Labs managed public probes will be set to `true`.","description_kind":"markdown","computed":true},"region":{"type":"string","description":"Region of the probe.","description_kind":"markdown","computed":true},"tenant_id":{"type":"number","description":"The tenant ID of the probe.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving a single probe by name.","description_kind":"markdown"}},"grafana_synthetic_monitoring_probes":{"version":0,"block":{"attributes":{"filter_deprecated":{"type":"bool","description":"If true, only probes that are not deprecated will be returned. Defaults to `true`.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"probes":{"type":["map","number"],"description":"Map of probes with their names as keys and IDs as values.","description_kind":"markdown","computed":true}},"description":"Data source for retrieving all probes.","description_kind":"markdown"}},"grafana_team":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"An email address for the team.","description_kind":"markdown","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description":"A set of email addresses corresponding to users who should be given membership\nto the team. Note: users specified here must already exist in Grafana.","description_kind":"markdown","computed":true},"name":{"type":"string","description":"The name of the Grafana team","description_kind":"markdown","required":true},"org_id":{"type":"string","description":"The Organization ID. If not set, the Org ID defined in the provider block will be used.","description_kind":"markdown","optional":true},"preferences":{"type":["list",["object",{"home_dashboard_uid":"string","theme":"string","timezone":"string"}]],"description_kind":"plain","computed":true},"read_team_sync":{"type":"bool","description":"Whether to read the team sync settings. This is only available in Grafana Enterprise. Defaults to `false`.","description_kind":"markdown","optional":true},"team_id":{"type":"number","description":"The team id assigned to this team by Grafana.","description_kind":"markdown","computed":true},"team_sync":{"type":["list",["object",{"groups":["set","string"]}]],"description":"Sync external auth provider groups with this Grafana team. Only available in Grafana Enterprise.\n\t* [Official documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-team-sync/)\n\t* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team_sync/)","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/team-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/team/)\n","description_kind":"markdown"}},"grafana_user":{"version":0,"block":{"attributes":{"email":{"type":"string","description":"The email address of the Grafana user. Defaults to ``.","description_kind":"markdown","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"is_admin":{"type":"bool","description":"Whether the user is an admin.","description_kind":"markdown","computed":true},"login":{"type":"string","description":"The username for the Grafana user. Defaults to ``.","description_kind":"markdown","optional":true},"name":{"type":"string","description":"The display name for the Grafana user.","description_kind":"markdown","computed":true},"user_id":{"type":"number","description":"The numerical ID of the Grafana user. Defaults to `-1`.","description_kind":"markdown","optional":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n","description_kind":"markdown"}},"grafana_users":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"users":{"type":["set",["object",{"email":"string","id":"number","is_admin":"bool","login":"string","name":"string"}]],"description":"The Grafana instance's users.","description_kind":"markdown","computed":true}},"description":"\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\t\t\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\t\t","description_kind":"markdown"}}}}}} diff --git a/examples-generated/alerting/mutetiming.yaml b/examples-generated/alerting/mutetiming.yaml index 6f457c9..6b7f668 100644 --- a/examples-generated/alerting/mutetiming.yaml +++ b/examples-generated/alerting/mutetiming.yaml @@ -12,6 +12,7 @@ spec: - daysOfMonth: - "1:7" - "-1" + location: America/New_York months: - "1:3" - december diff --git a/examples-generated/alerting/notificationpolicy.yaml b/examples-generated/alerting/notificationpolicy.yaml index 4f182f8..9f31f5f 100644 --- a/examples-generated/alerting/notificationpolicy.yaml +++ b/examples-generated/alerting/notificationpolicy.yaml @@ -18,14 +18,18 @@ spec: policy: - contactPoint: My Contact Point continue: true - groupBy: - - alertname groupInterval: 6m groupWait: 45s matcher: - label: mylabel match: = value: myvalue + - label: alertname + match: = + value: CPU Usage + - label: Name + match: =~ + value: host.*|host-b.* muteTimings: - ${grafana_mute_timing.a_mute_timing.name} policy: diff --git a/examples-generated/oss/dashboard.yaml b/examples-generated/oss/dashboard.yaml index 3ce8352..d528ddc 100644 --- a/examples-generated/oss/dashboard.yaml +++ b/examples-generated/oss/dashboard.yaml @@ -4,8 +4,30 @@ metadata: annotations: meta.upbound.io/example-id: oss/v1alpha1/dashboard labels: - testing.upbound.io/example-name: metrics - name: metrics + testing.upbound.io/example-name: test + name: test spec: forProvider: - configJson: ${file("grafana-dashboard.json")} + configJson: |- + ${jsonencode({ + "title" : "My Dashboard", + "uid" : "my-dashboard-uid" + })} + folderSelector: + matchLabels: + testing.upbound.io/example-name: test + +--- + +apiVersion: oss.grafana.crossplane.io/v1alpha1 +kind: Folder +metadata: + annotations: + meta.upbound.io/example-id: oss/v1alpha1/dashboard + labels: + testing.upbound.io/example-name: test + name: test +spec: + forProvider: + title: My Folder + uid: my-folder-uid diff --git a/examples-generated/oss/dashboardpermission.yaml b/examples-generated/oss/dashboardpermission.yaml index d1bce05..d44e28f 100644 --- a/examples-generated/oss/dashboardpermission.yaml +++ b/examples-generated/oss/dashboardpermission.yaml @@ -31,7 +31,11 @@ metadata: name: metrics spec: forProvider: - configJson: ${file("grafana-dashboard.json")} + configJson: |- + ${jsonencode({ + "title" : "My Dashboard", + "uid" : "my-dashboard-uid" + })} --- @@ -60,3 +64,8 @@ metadata: spec: forProvider: email: user.name@example.com + login: user.name + passwordSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples-generated/oss/folderpermission.yaml b/examples-generated/oss/folderpermission.yaml index c6d1e1e..f4a1822 100644 --- a/examples-generated/oss/folderpermission.yaml +++ b/examples-generated/oss/folderpermission.yaml @@ -60,3 +60,8 @@ metadata: spec: forProvider: email: user.name@example.com + login: user.name + passwordSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples-generated/oss/serviceaccounttoken.yaml b/examples-generated/oss/serviceaccounttoken.yaml index 3e3074b..d914f95 100644 --- a/examples-generated/oss/serviceaccounttoken.yaml +++ b/examples-generated/oss/serviceaccounttoken.yaml @@ -11,4 +11,19 @@ spec: name: key_foo serviceAccountSelector: matchLabels: - testing.upbound.io/example-name: example + testing.upbound.io/example-name: test + +--- + +apiVersion: oss.grafana.crossplane.io/v1alpha1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: oss/v1alpha1/serviceaccounttoken + labels: + testing.upbound.io/example-name: test + name: test +spec: + forProvider: + name: test-service-account + role: Viewer diff --git a/examples-generated/oss/team.yaml b/examples-generated/oss/team.yaml index 599055a..fd0f655 100644 --- a/examples-generated/oss/team.yaml +++ b/examples-generated/oss/team.yaml @@ -10,5 +10,25 @@ spec: forProvider: email: teamemail@example.com memberRefs: - - name: example + - name: viewer name: Test Team + +--- + +apiVersion: oss.grafana.crossplane.io/v1alpha1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: oss/v1alpha1/team + labels: + testing.upbound.io/example-name: viewer + name: viewer +spec: + forProvider: + email: viewer@example.com + login: viewer + name: Viewer + passwordSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/package/crds/alerting.grafana.crossplane.io_contactpoints.yaml b/package/crds/alerting.grafana.crossplane.io_contactpoints.yaml index 47c25db..bcb0354 100644 --- a/package/crds/alerting.grafana.crossplane.io_contactpoints.yaml +++ b/package/crds/alerting.grafana.crossplane.io_contactpoints.yaml @@ -208,6 +208,10 @@ spec: - name - namespace type: object + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string urlSecretRef: description: (String) The URL of the Alertmanager instance. The discord webhook URL. @@ -318,6 +322,10 @@ spec: - name - namespace type: object + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string urlSecretRef: description: (String) The URL of the Alertmanager instance. The Google Chat webhook URL. @@ -346,11 +354,52 @@ spec: point that publishes notifications to Apache Kafka topics. items: properties: + apiVersion: + description: '(String) The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to v2. The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to `v2`.' + type: string + clusterId: + description: (String) The Id of cluster to use when contacting + the Kafka REST Server. Required api_version to be 'v3' + The Id of cluster to use when contacting the Kafka REST + Server. Required api_version to be 'v3' + type: string + description: + description: (String) The templated description of the Kafka + message. The templated description of the Kafka message. + type: string + details: + description: (String) The templated details to include with + the message. The templated details to include with the + message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending resolve messages. Defaults to `false`. type: boolean + passwordSecretRef: + description: (String, Sensitive) The password to use when + making a call to the Kafka REST Proxy The password to + use when making a call to the Kafka REST Proxy + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object restProxyUrlSecretRef: description: (String, Sensitive) The URL of the Kafka REST proxy to send requests to. The URL of the Kafka REST proxy @@ -390,14 +439,184 @@ spec: description: (String) The name of the Kafka topic to publish to. The name of the Kafka topic to publish to. type: string + username: + description: (String) The user name to use when making a + call to the Kafka REST Proxy The user name to use when + making a call to the Kafka REST Proxy + type: string required: - restProxyUrlSecretRef type: object type: array + line: + description: (Block List) A contact point that sends notifications + to LINE.me. (see below for nested schema) A contact point that + sends notifications to LINE.me. + items: + properties: + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + settingsSecretRef: + description: (Map of String, Sensitive) Additional custom + properties to attach to the notifier. Defaults to map[]. + Additional custom properties to attach to the notifier. + Defaults to `map[]`. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + title: + description: (String) The templated title of the message. + The templated title of the message. + type: string + tokenSecretRef: + description: (String, Sensitive) The bearer token used to + authorize the client. The bearer token used to authorize + the client. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + required: + - tokenSecretRef + type: object + type: array name: description: (String) The name of the contact point. The name of the contact point. type: string + oncall: + description: Call. (see below for nested schema) A contact point + that sends notifications to Grafana On-Call. + items: + properties: + authorizationCredentialsSecretRef: + description: attaches an auth header with this value. Do + not use in conjunction with basic auth parameters. Allows + a custom authorization scheme - attaches an auth header + with this value. Do not use in conjunction with basic + auth parameters. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + authorizationScheme: + description: attaches an auth header with this name. Do + not use in conjunction with basic auth parameters. Allows + a custom authorization scheme - attaches an auth header + with this name. Do not use in conjunction with basic auth + parameters. + type: string + basicAuthPasswordSecretRef: + description: (String, Sensitive) The password component + of the basic auth credentials to use. The username to + use in basic auth headers attached to the request. If + omitted, basic auth will not be used. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + basicAuthUser: + description: (String) The username component of the basic + auth credentials to use. The username to use in basic + auth headers attached to the request. If omitted, basic + auth will not be used. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + httpMethod: + description: (String) The HTTP method to use in the request. + Defaults to POST. The HTTP method to use in the request. + Defaults to `POST`. + type: string + maxAlerts: + description: (Number) The maximum number of alerts to send + in a single request. This can be helpful in limiting the + size of the request body. The default is 0, which indicates + no limit. The maximum number of alerts to send in a single + request. This can be helpful in limiting the size of the + request body. The default is 0, which indicates no limit. + type: number + message: + description: (String) The templated content of the message. + Custom message. You can use template variables. + type: string + settingsSecretRef: + description: (Map of String, Sensitive) Additional custom + properties to attach to the notifier. Defaults to map[]. + Additional custom properties to attach to the notifier. + Defaults to `map[]`. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + title: + description: (String) The templated title of the message. + Templated title of the message. + type: string + url: + description: (String) The URL of the Alertmanager instance. + The URL to send webhook requests to. + type: string + type: object + type: array opsgenie: description: (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) A contact point that @@ -428,8 +647,9 @@ spec: when they resolve in the Alertmanager. type: boolean description: - description: level description to use for the alert. A templated - high-level description to use for the alert. + description: (String) The templated description of the Kafka + message. A templated high-level description to use for + the alert. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -447,6 +667,45 @@ spec: configured via the value of the `og_priority` annotation on the alert. type: boolean + responders: + description: (Block List) Teams, users, escalations and + schedules that the alert will be routed to send notifications. + If the API Key belongs to a team integration, this field + will be overwritten with the owner team. This feature + is available from Grafana 10.3+. (see below for nested + schema) Teams, users, escalations and schedules that the + alert will be routed to send notifications. If the API + Key belongs to a team integration, this field will be + overwritten with the owner team. This feature is available + from Grafana 10.3+. + items: + properties: + id: + description: (String) The ID of this resource. ID + of the responder. Must be specified if name and + username are empty. + type: string + name: + description: (String) The name of the contact point. + Name of the responder. Must be specified if username + and id are empty. + type: string + type: + description: '(String) Type of the responder. Supported: + team, teams, user, escalation, schedule or a template + that is expanded to one of these values. Type of + the responder. Supported: team, teams, user, escalation, + schedule or a template that is expanded to one of + these values.' + type: string + username: + description: (String) The user name to use when making + a call to the Kafka REST Proxy User name of the + responder. Must be specified if name and id are + empty. + type: string + type: object + type: array sendTagsAs: description: (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, @@ -507,10 +766,9 @@ spec: details: additionalProperties: type: string - description: (Map of String) A set of arbitrary key/value - pairs that provide further detail about the incident. - A set of arbitrary key/value pairs that provide further - detail about the incident. + description: (String) The templated details to include with + the message. A set of arbitrary key/value pairs that provide + further detail about the incident. type: object disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -659,6 +917,13 @@ spec: description: (String) The templated title of the message. The templated title of the message. type: string + uploadImage: + description: (Boolean) Whether to send images in the notification + or not. Default is true. Requires Grafana to be configured + to send images in notifications. Whether to send images + in the notification or not. Default is true. Requires + Grafana to be configured to send images in notifications. + type: boolean userKeySecretRef: description: (String, Sensitive) The Pushover user key. The Pushover user key. @@ -830,10 +1095,9 @@ spec: Templated title of the message. type: string tokenSecretRef: - description: (String, Sensitive) A Slack API token,for sending - messages directly without the webhook method. A Slack - API token,for sending messages directly without the webhook - method. + description: (String, Sensitive) The bearer token used to + authorize the client. A Slack API token,for sending messages + directly without the webhook method. properties: key: description: The key to select. @@ -869,8 +1133,8 @@ spec: - namespace type: object username: - description: (String) Username for the bot to use. Username - for the bot to use. + description: (String) The user name to use when making a + call to the Kafka REST Proxy Username for the bot to use. type: string type: object type: array @@ -945,15 +1209,38 @@ spec: description: (String) The chat ID to send messages to. The chat ID to send messages to. type: string + disableNotifications: + description: (Boolean) When set users will receive a notification + with no sound. When set users will receive a notification + with no sound. + type: boolean disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending resolve messages. Defaults to `false`. type: boolean + disableWebPagePreview: + description: (Boolean) When set it disables link previews + for links in the message. When set it disables link previews + for links in the message. + type: boolean message: description: (String) The templated content of the message. The templated content of the message. type: string + parseMode: + description: '(String) Mode for parsing entities in the + message text. Supported: None, Markdown, MarkdownV2, and + HTML. HTML is the default. Mode for parsing entities in + the message text. Supported: None, Markdown, MarkdownV2, + and HTML. HTML is the default.' + type: string + protectContent: + description: (Boolean) When set it protects the contents + of the message from forwarding and saving. When set it + protects the contents of the message from forwarding and + saving. + type: boolean settingsSecretRef: description: (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. @@ -971,9 +1258,8 @@ spec: - namespace type: object tokenSecretRef: - description: (String, Sensitive) A Slack API token,for sending - messages directly without the webhook method. The Telegram - bot token. + description: (String, Sensitive) The bearer token used to + authorize the client. The Telegram bot token. properties: key: description: The key to select. @@ -1017,24 +1303,10 @@ spec: - name - namespace type: object - descriptionSecretRef: - description: level description to use for the alert. The - templated description of the message. - properties: - key: - description: The key to select. - type: string - name: - description: Name of the secret. - type: string - namespace: - description: Namespace of the secret. - type: string - required: - - key - - name - - namespace - type: object + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -1064,28 +1336,12 @@ spec: - name - namespace type: object - titleSecretRef: + title: description: (String) The templated title of the message. The templated title of the message. - properties: - key: - description: The key to select. - type: string - name: - description: Name of the secret. - type: string - namespace: - description: Namespace of the secret. - type: string - required: - - key - - name - - namespace - type: object + type: string required: - apiSecretSecretRef - - descriptionSecretRef - - titleSecretRef type: object type: array victorops: @@ -1096,8 +1352,8 @@ spec: items: properties: description: - description: level description to use for the alert. Templated - description of the message. + description: (String) The templated description of the Kafka + message. Templated description of the message. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -1134,6 +1390,67 @@ spec: type: string type: object type: array + webex: + description: (Block List) A contact point that sends notifications + to Cisco Webex. (see below for nested schema) A contact point + that sends notifications to Cisco Webex. + items: + properties: + apiUrl: + description: (String) The URL to send webhook requests to. + The URL to send webhook requests to. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + message: + description: (String) The templated content of the message. + The templated title of the message to send. + type: string + roomId: + description: (String) ID of the Webex Teams room where to + send the messages. ID of the Webex Teams room where to + send the messages. + type: string + settingsSecretRef: + description: (Map of String, Sensitive) Additional custom + properties to attach to the notifier. Defaults to map[]. + Additional custom properties to attach to the notifier. + Defaults to `map[]`. + properties: + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - name + - namespace + type: object + tokenSecretRef: + description: (String, Sensitive) The bearer token used to + authorize the client. The bearer token used to authorize + the client. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object + type: object + type: array webhook: description: '(Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format @@ -1251,6 +1568,15 @@ spec: sends notifications to WeCom. items: properties: + agentId: + description: (String) Agent ID added to the request payload + when using APIAPP. Agent ID added to the request payload + when using APIAPP. + type: string + corpId: + description: (String) Corp ID used to get token when using + APIAPP. Corp ID used to get token when using APIAPP. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -1260,6 +1586,32 @@ spec: description: (String) The templated content of the message. The templated content of the message to send. type: string + msgType: + description: '(String) The type of them message. Supported: + markdown, text. Default: text. The type of them message. + Supported: markdown, text. Default: text.' + type: string + secretSecretRef: + description: (String, Sensitive) The secret key required + to obtain access token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps + to create APIAPP. The secret key required to obtain access + token when using APIAPP. See https://work.weixin.qq.com/wework_admin/frame#apps + to create APIAPP. + properties: + key: + description: The key to select. + type: string + name: + description: Name of the secret. + type: string + namespace: + description: Namespace of the secret. + type: string + required: + - key + - name + - namespace + type: object settingsSecretRef: description: (Map of String, Sensitive) Additional custom properties to attach to the notifier. Defaults to map[]. @@ -1280,9 +1632,16 @@ spec: description: (String) The templated title of the message. The templated title of the message to send. type: string + toUser: + description: '(String) The ID of user that should receive + the message. Multiple entries should be separated by ''|''. + Default: @all. The ID of user that should receive the + message. Multiple entries should be separated by ''|''. + Default: @all.' + type: string urlSecretRef: description: (String) The URL of the Alertmanager instance. - The WeCom webhook URL. + The WeCom webhook URL. Required if using GroupRobot. properties: key: description: The key to select. @@ -1298,8 +1657,6 @@ spec: - name - namespace type: object - required: - - urlSecretRef type: object type: array type: object @@ -1387,6 +1744,10 @@ spec: description: (String) The templated content of the message. The templated content of the message. Defaults to “. type: string + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string useDiscordUsername: description: (Boolean) Whether to use the bot account's plain username instead of "Grafana." Defaults to false. @@ -1445,6 +1806,10 @@ spec: description: (String) The templated content of the message. The templated content of the message. type: string + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string type: object type: array kafka: @@ -1453,6 +1818,28 @@ spec: point that publishes notifications to Apache Kafka topics. items: properties: + apiVersion: + description: '(String) The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to v2. The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to `v2`.' + type: string + clusterId: + description: (String) The Id of cluster to use when contacting + the Kafka REST Server. Required api_version to be 'v3' + The Id of cluster to use when contacting the Kafka REST + Server. Required api_version to be 'v3' + type: string + description: + description: (String) The templated description of the Kafka + message. The templated description of the Kafka message. + type: string + details: + description: (String) The templated details to include with + the message. The templated details to include with the + message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -1462,12 +1849,88 @@ spec: description: (String) The name of the Kafka topic to publish to. The name of the Kafka topic to publish to. type: string + username: + description: (String) The user name to use when making a + call to the Kafka REST Proxy The user name to use when + making a call to the Kafka REST Proxy + type: string + type: object + type: array + line: + description: (Block List) A contact point that sends notifications + to LINE.me. (see below for nested schema) A contact point that + sends notifications to LINE.me. + items: + properties: + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + title: + description: (String) The templated title of the message. + The templated title of the message. + type: string type: object type: array name: description: (String) The name of the contact point. The name of the contact point. type: string + oncall: + description: Call. (see below for nested schema) A contact point + that sends notifications to Grafana On-Call. + items: + properties: + authorizationScheme: + description: attaches an auth header with this name. Do + not use in conjunction with basic auth parameters. Allows + a custom authorization scheme - attaches an auth header + with this name. Do not use in conjunction with basic auth + parameters. + type: string + basicAuthUser: + description: (String) The username component of the basic + auth credentials to use. The username to use in basic + auth headers attached to the request. If omitted, basic + auth will not be used. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + httpMethod: + description: (String) The HTTP method to use in the request. + Defaults to POST. The HTTP method to use in the request. + Defaults to `POST`. + type: string + maxAlerts: + description: (Number) The maximum number of alerts to send + in a single request. This can be helpful in limiting the + size of the request body. The default is 0, which indicates + no limit. The maximum number of alerts to send in a single + request. This can be helpful in limiting the size of the + request body. The default is 0, which indicates no limit. + type: number + message: + description: (String) The templated content of the message. + Custom message. You can use template variables. + type: string + title: + description: (String) The templated title of the message. + Templated title of the message. + type: string + url: + description: (String) The URL of the Alertmanager instance. + The URL to send webhook requests to. + type: string + type: object + type: array opsgenie: description: (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) A contact point that @@ -1480,8 +1943,9 @@ spec: when they resolve in the Alertmanager. type: boolean description: - description: level description to use for the alert. A templated - high-level description to use for the alert. + description: (String) The templated description of the Kafka + message. A templated high-level description to use for + the alert. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -1499,6 +1963,45 @@ spec: configured via the value of the `og_priority` annotation on the alert. type: boolean + responders: + description: (Block List) Teams, users, escalations and + schedules that the alert will be routed to send notifications. + If the API Key belongs to a team integration, this field + will be overwritten with the owner team. This feature + is available from Grafana 10.3+. (see below for nested + schema) Teams, users, escalations and schedules that the + alert will be routed to send notifications. If the API + Key belongs to a team integration, this field will be + overwritten with the owner team. This feature is available + from Grafana 10.3+. + items: + properties: + id: + description: (String) The ID of this resource. ID + of the responder. Must be specified if name and + username are empty. + type: string + name: + description: (String) The name of the contact point. + Name of the responder. Must be specified if username + and id are empty. + type: string + type: + description: '(String) Type of the responder. Supported: + team, teams, user, escalation, schedule or a template + that is expanded to one of these values. Type of + the responder. Supported: team, teams, user, escalation, + schedule or a template that is expanded to one of + these values.' + type: string + username: + description: (String) The user name to use when making + a call to the Kafka REST Proxy User name of the + responder. Must be specified if name and id are + empty. + type: string + type: object + type: array sendTagsAs: description: (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, @@ -1541,10 +2044,9 @@ spec: details: additionalProperties: type: string - description: (Map of String) A set of arbitrary key/value - pairs that provide further detail about the incident. - A set of arbitrary key/value pairs that provide further - detail about the incident. + description: (String) The templated details to include with + the message. A set of arbitrary key/value pairs that provide + further detail about the incident. type: object disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -1623,6 +2125,13 @@ spec: description: (String) The templated title of the message. The templated title of the message. type: string + uploadImage: + description: (Boolean) Whether to send images in the notification + or not. Default is true. Requires Grafana to be configured + to send images in notifications. Whether to send images + in the notification or not. Default is true. Requires + Grafana to be configured to send images in notifications. + type: boolean type: object type: array sensugo: @@ -1721,8 +2230,8 @@ spec: Templated title of the message. type: string username: - description: (String) Username for the bot to use. Username - for the bot to use. + description: (String) The user name to use when making a + call to the Kafka REST Proxy Username for the bot to use. type: string type: object type: array @@ -1761,15 +2270,38 @@ spec: description: (String) The chat ID to send messages to. The chat ID to send messages to. type: string + disableNotifications: + description: (Boolean) When set users will receive a notification + with no sound. When set users will receive a notification + with no sound. + type: boolean disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending resolve messages. Defaults to `false`. type: boolean + disableWebPagePreview: + description: (Boolean) When set it disables link previews + for links in the message. When set it disables link previews + for links in the message. + type: boolean message: description: (String) The templated content of the message. The templated content of the message. type: string + parseMode: + description: '(String) Mode for parsing entities in the + message text. Supported: None, Markdown, MarkdownV2, and + HTML. HTML is the default. Mode for parsing entities in + the message text. Supported: None, Markdown, MarkdownV2, + and HTML. HTML is the default.' + type: string + protectContent: + description: (Boolean) When set it protects the contents + of the message from forwarding and saving. When set it + protects the contents of the message from forwarding and + saving. + type: boolean type: object type: array threema: @@ -1778,6 +2310,10 @@ spec: sends notifications to Threema. items: properties: + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -1791,6 +2327,10 @@ spec: description: (String) The ID of the recipient of the message. The ID of the recipient of the message. type: string + title: + description: (String) The templated title of the message. + The templated title of the message. + type: string type: object type: array victorops: @@ -1801,8 +2341,8 @@ spec: items: properties: description: - description: level description to use for the alert. Templated - description of the message. + description: (String) The templated description of the Kafka + message. Templated description of the message. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -1823,6 +2363,32 @@ spec: type: string type: object type: array + webex: + description: (Block List) A contact point that sends notifications + to Cisco Webex. (see below for nested schema) A contact point + that sends notifications to Cisco Webex. + items: + properties: + apiUrl: + description: (String) The URL to send webhook requests to. + The URL to send webhook requests to. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + message: + description: (String) The templated content of the message. + The templated title of the message to send. + type: string + roomId: + description: (String) ID of the Webex Teams room where to + send the messages. ID of the Webex Teams room where to + send the messages. + type: string + type: object + type: array webhook: description: '(Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format @@ -1883,6 +2449,15 @@ spec: sends notifications to WeCom. items: properties: + agentId: + description: (String) Agent ID added to the request payload + when using APIAPP. Agent ID added to the request payload + when using APIAPP. + type: string + corpId: + description: (String) Corp ID used to get token when using + APIAPP. Corp ID used to get token when using APIAPP. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -1892,10 +2467,22 @@ spec: description: (String) The templated content of the message. The templated content of the message to send. type: string + msgType: + description: '(String) The type of them message. Supported: + markdown, text. Default: text. The type of them message. + Supported: markdown, text. Default: text.' + type: string title: description: (String) The templated title of the message. The templated title of the message to send. type: string + toUser: + description: '(String) The ID of user that should receive + the message. Multiple entries should be separated by ''|''. + Default: @all. The ID of user that should receive the + message. Multiple entries should be separated by ''|''. + Default: @all.' + type: string type: object type: array type: object @@ -2149,6 +2736,10 @@ spec: description: (String) The templated content of the message. The templated content of the message. Defaults to “. type: string + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string uid: description: (String) The UID of the contact point. The UID of the contact point. @@ -2215,6 +2806,10 @@ spec: description: (String) The templated content of the message. The templated content of the message. type: string + title: + description: (String) The templated title of the message. + The templated content of the title. + type: string uid: description: (String) The UID of the contact point. The UID of the contact point. @@ -2230,6 +2825,28 @@ spec: point that publishes notifications to Apache Kafka topics. items: properties: + apiVersion: + description: '(String) The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to v2. The API version to use when contacting + the Kafka REST Server. Supported: v2 (default) and v3. + Defaults to `v2`.' + type: string + clusterId: + description: (String) The Id of cluster to use when contacting + the Kafka REST Server. Required api_version to be 'v3' + The Id of cluster to use when contacting the Kafka REST + Server. Required api_version to be 'v3' + type: string + description: + description: (String) The templated description of the Kafka + message. The templated description of the Kafka message. + type: string + details: + description: (String) The templated details to include with + the message. The templated details to include with the + message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -2243,12 +2860,96 @@ spec: description: (String) The UID of the contact point. The UID of the contact point. type: string + username: + description: (String) The user name to use when making a + call to the Kafka REST Proxy The user name to use when + making a call to the Kafka REST Proxy + type: string + type: object + type: array + line: + description: (Block List) A contact point that sends notifications + to LINE.me. (see below for nested schema) A contact point that + sends notifications to LINE.me. + items: + properties: + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + title: + description: (String) The templated title of the message. + The templated title of the message. + type: string + uid: + description: (String) The UID of the contact point. The + UID of the contact point. + type: string type: object type: array name: description: (String) The name of the contact point. The name of the contact point. type: string + oncall: + description: Call. (see below for nested schema) A contact point + that sends notifications to Grafana On-Call. + items: + properties: + authorizationScheme: + description: attaches an auth header with this name. Do + not use in conjunction with basic auth parameters. Allows + a custom authorization scheme - attaches an auth header + with this name. Do not use in conjunction with basic auth + parameters. + type: string + basicAuthUser: + description: (String) The username component of the basic + auth credentials to use. The username to use in basic + auth headers attached to the request. If omitted, basic + auth will not be used. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + httpMethod: + description: (String) The HTTP method to use in the request. + Defaults to POST. The HTTP method to use in the request. + Defaults to `POST`. + type: string + maxAlerts: + description: (Number) The maximum number of alerts to send + in a single request. This can be helpful in limiting the + size of the request body. The default is 0, which indicates + no limit. The maximum number of alerts to send in a single + request. This can be helpful in limiting the size of the + request body. The default is 0, which indicates no limit. + type: number + message: + description: (String) The templated content of the message. + Custom message. You can use template variables. + type: string + title: + description: (String) The templated title of the message. + Templated title of the message. + type: string + uid: + description: (String) The UID of the contact point. The + UID of the contact point. + type: string + url: + description: (String) The URL of the Alertmanager instance. + The URL to send webhook requests to. + type: string + type: object + type: array opsgenie: description: (Block List) A contact point that sends notifications to OpsGenie. (see below for nested schema) A contact point that @@ -2261,8 +2962,9 @@ spec: when they resolve in the Alertmanager. type: boolean description: - description: level description to use for the alert. A templated - high-level description to use for the alert. + description: (String) The templated description of the Kafka + message. A templated high-level description to use for + the alert. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -2280,6 +2982,45 @@ spec: configured via the value of the `og_priority` annotation on the alert. type: boolean + responders: + description: (Block List) Teams, users, escalations and + schedules that the alert will be routed to send notifications. + If the API Key belongs to a team integration, this field + will be overwritten with the owner team. This feature + is available from Grafana 10.3+. (see below for nested + schema) Teams, users, escalations and schedules that the + alert will be routed to send notifications. If the API + Key belongs to a team integration, this field will be + overwritten with the owner team. This feature is available + from Grafana 10.3+. + items: + properties: + id: + description: (String) The ID of this resource. ID + of the responder. Must be specified if name and + username are empty. + type: string + name: + description: (String) The name of the contact point. + Name of the responder. Must be specified if username + and id are empty. + type: string + type: + description: '(String) Type of the responder. Supported: + team, teams, user, escalation, schedule or a template + that is expanded to one of these values. Type of + the responder. Supported: team, teams, user, escalation, + schedule or a template that is expanded to one of + these values.' + type: string + username: + description: (String) The user name to use when making + a call to the Kafka REST Proxy User name of the + responder. Must be specified if name and id are + empty. + type: string + type: object + type: array sendTagsAs: description: (String) Whether to send annotations to OpsGenie as Tags, Details, or both. Supported values are tags, @@ -2326,10 +3067,9 @@ spec: details: additionalProperties: type: string - description: (Map of String) A set of arbitrary key/value - pairs that provide further detail about the incident. - A set of arbitrary key/value pairs that provide further - detail about the incident. + description: (String) The templated details to include with + the message. A set of arbitrary key/value pairs that provide + further detail about the incident. type: object disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -2416,6 +3156,13 @@ spec: description: (String) The UID of the contact point. The UID of the contact point. type: string + uploadImage: + description: (Boolean) Whether to send images in the notification + or not. Default is true. Requires Grafana to be configured + to send images in notifications. Whether to send images + in the notification or not. Default is true. Requires + Grafana to be configured to send images in notifications. + type: boolean type: object type: array sensugo: @@ -2522,8 +3269,8 @@ spec: UID of the contact point. type: string username: - description: (String) Username for the bot to use. Username - for the bot to use. + description: (String) The user name to use when making a + call to the Kafka REST Proxy Username for the bot to use. type: string type: object type: array @@ -2566,15 +3313,38 @@ spec: description: (String) The chat ID to send messages to. The chat ID to send messages to. type: string + disableNotifications: + description: (Boolean) When set users will receive a notification + with no sound. When set users will receive a notification + with no sound. + type: boolean disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending resolve messages. Defaults to `false`. type: boolean + disableWebPagePreview: + description: (Boolean) When set it disables link previews + for links in the message. When set it disables link previews + for links in the message. + type: boolean message: description: (String) The templated content of the message. The templated content of the message. type: string + parseMode: + description: '(String) Mode for parsing entities in the + message text. Supported: None, Markdown, MarkdownV2, and + HTML. HTML is the default. Mode for parsing entities in + the message text. Supported: None, Markdown, MarkdownV2, + and HTML. HTML is the default.' + type: string + protectContent: + description: (Boolean) When set it protects the contents + of the message from forwarding and saving. When set it + protects the contents of the message from forwarding and + saving. + type: boolean uid: description: (String) The UID of the contact point. The UID of the contact point. @@ -2587,6 +3357,10 @@ spec: sends notifications to Threema. items: properties: + description: + description: (String) The templated description of the Kafka + message. The templated description of the message. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -2600,6 +3374,10 @@ spec: description: (String) The ID of the recipient of the message. The ID of the recipient of the message. type: string + title: + description: (String) The templated title of the message. + The templated title of the message. + type: string uid: description: (String) The UID of the contact point. The UID of the contact point. @@ -2614,8 +3392,8 @@ spec: items: properties: description: - description: level description to use for the alert. Templated - description of the message. + description: (String) The templated description of the Kafka + message. Templated description of the message. type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve @@ -2640,6 +3418,36 @@ spec: type: string type: object type: array + webex: + description: (Block List) A contact point that sends notifications + to Cisco Webex. (see below for nested schema) A contact point + that sends notifications to Cisco Webex. + items: + properties: + apiUrl: + description: (String) The URL to send webhook requests to. + The URL to send webhook requests to. + type: string + disableResolveMessage: + description: (Boolean) Whether to disable sending resolve + messages. Defaults to false. Whether to disable sending + resolve messages. Defaults to `false`. + type: boolean + message: + description: (String) The templated content of the message. + The templated title of the message to send. + type: string + roomId: + description: (String) ID of the Webex Teams room where to + send the messages. ID of the Webex Teams room where to + send the messages. + type: string + uid: + description: (String) The UID of the contact point. The + UID of the contact point. + type: string + type: object + type: array webhook: description: '(Block List) A contact point that sends notifications to an arbitrary webhook, using the Prometheus webhook format @@ -2704,6 +3512,15 @@ spec: sends notifications to WeCom. items: properties: + agentId: + description: (String) Agent ID added to the request payload + when using APIAPP. Agent ID added to the request payload + when using APIAPP. + type: string + corpId: + description: (String) Corp ID used to get token when using + APIAPP. Corp ID used to get token when using APIAPP. + type: string disableResolveMessage: description: (Boolean) Whether to disable sending resolve messages. Defaults to false. Whether to disable sending @@ -2713,10 +3530,22 @@ spec: description: (String) The templated content of the message. The templated content of the message to send. type: string + msgType: + description: '(String) The type of them message. Supported: + markdown, text. Default: text. The type of them message. + Supported: markdown, text. Default: text.' + type: string title: description: (String) The templated title of the message. The templated title of the message to send. type: string + toUser: + description: '(String) The ID of user that should receive + the message. Multiple entries should be separated by ''|''. + Default: @all. The ID of user that should receive the + message. Multiple entries should be separated by ''|''. + Default: @all.' + type: string uid: description: (String) The UID of the contact point. The UID of the contact point. diff --git a/package/crds/alerting.grafana.crossplane.io_messagetemplates.yaml b/package/crds/alerting.grafana.crossplane.io_messagetemplates.yaml index 1e58f95..a8c4ed8 100644 --- a/package/crds/alerting.grafana.crossplane.io_messagetemplates.yaml +++ b/package/crds/alerting.grafana.crossplane.io_messagetemplates.yaml @@ -73,6 +73,85 @@ spec: description: (String) The name of the message template. The name of the message template. type: string + orgId: + description: (String) The Organization ID. If not set, the Org + ID defined in the provider block will be used. The Organization + ID. If not set, the Org ID defined in the provider block will + be used. + type: string + organizationRef: + description: Reference to a Organization in oss to populate orgId. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + organizationSelector: + description: Selector for a Organization in oss to populate orgId. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object template: description: (String) The content of the message template. The content of the message template. @@ -280,6 +359,12 @@ spec: description: (String) The name of the message template. The name of the message template. type: string + orgId: + description: (String) The Organization ID. If not set, the Org + ID defined in the provider block will be used. The Organization + ID. If not set, the Org ID defined in the provider block will + be used. + type: string template: description: (String) The content of the message template. The content of the message template. diff --git a/package/crds/alerting.grafana.crossplane.io_mutetimings.yaml b/package/crds/alerting.grafana.crossplane.io_mutetimings.yaml index e2487da..477a344 100644 --- a/package/crds/alerting.grafana.crossplane.io_mutetimings.yaml +++ b/package/crds/alerting.grafana.crossplane.io_mutetimings.yaml @@ -85,6 +85,13 @@ spec: items: type: string type: array + location: + description: (String) Provides the time zone for the time + interval. Must be a location in the IANA time zone database, + e.g "America/New_York" Provides the time zone for the + time interval. Must be a location in the IANA time zone + database, e.g "America/New_York" + type: string months: description: (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", @@ -164,6 +171,13 @@ spec: items: type: string type: array + location: + description: (String) Provides the time zone for the time + interval. Must be a location in the IANA time zone database, + e.g "America/New_York" Provides the time zone for the + time interval. Must be a location in the IANA time zone + database, e.g "America/New_York" + type: string months: description: (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", @@ -404,6 +418,13 @@ spec: items: type: string type: array + location: + description: (String) Provides the time zone for the time + interval. Must be a location in the IANA time zone database, + e.g "America/New_York" Provides the time zone for the + time interval. Must be a location in the IANA time zone + database, e.g "America/New_York" + type: string months: description: (List of String) An inclusive range of months, either numerical or full calendar month, e.g. "1:3", "december", diff --git a/package/crds/alerting.grafana.crossplane.io_notificationpolicies.yaml b/package/crds/alerting.grafana.crossplane.io_notificationpolicies.yaml index 9dcdb89..4f4b756 100644 --- a/package/crds/alerting.grafana.crossplane.io_notificationpolicies.yaml +++ b/package/crds/alerting.grafana.crossplane.io_notificationpolicies.yaml @@ -198,6 +198,8 @@ spec: grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + Required for root policy only. If empty, the parent grouping + is used. items: type: string type: array @@ -214,7 +216,7 @@ spec: before sending a notification. Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this rule + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all @@ -280,7 +282,8 @@ spec: disabling grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -298,7 +301,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the @@ -370,7 +373,8 @@ spec: A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy + only. If empty, the parent grouping is used. items: type: string type: array @@ -390,7 +394,7 @@ spec: 30 seconds. type: string matcher: - description: (Block List) Describes which labels + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers @@ -467,7 +471,8 @@ spec: group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling - grouping. + grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -487,7 +492,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted @@ -636,6 +641,8 @@ spec: grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + Required for root policy only. If empty, the parent grouping + is used. items: type: string type: array @@ -652,7 +659,7 @@ spec: before sending a notification. Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this rule + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all @@ -718,7 +725,8 @@ spec: disabling grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -736,7 +744,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the @@ -808,7 +816,8 @@ spec: A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy + only. If empty, the parent grouping is used. items: type: string type: array @@ -828,7 +837,7 @@ spec: 30 seconds. type: string matcher: - description: (Block List) Describes which labels + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers @@ -905,7 +914,8 @@ spec: group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling - grouping. + grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -925,7 +935,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted @@ -1240,6 +1250,8 @@ spec: grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling grouping. + Required for root policy only. If empty, the parent grouping + is used. items: type: string type: array @@ -1256,7 +1268,7 @@ spec: before sending a notification. Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this rule + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the rule will match all @@ -1322,7 +1334,8 @@ spec: disabling grouping. A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -1340,7 +1353,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which labels this + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers are supplied, the @@ -1412,7 +1425,8 @@ spec: A list of alert labels to group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively - disabling grouping. + disabling grouping. Required for root policy + only. If empty, the parent grouping is used. items: type: string type: array @@ -1432,7 +1446,7 @@ spec: 30 seconds. type: string matcher: - description: (Block List) Describes which labels + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted by this policy. When no matchers @@ -1509,7 +1523,8 @@ spec: group alerts into notifications by. Use the special label `...` to group alerts by all labels, effectively disabling - grouping. + grouping. Required for root policy only. + If empty, the parent grouping is used. items: type: string type: array @@ -1529,7 +1544,7 @@ spec: Default is 30 seconds. type: string matcher: - description: (Block List) Describes which + description: (Block Set) Describes which labels this rule should match. When multiple matchers are supplied, an alert must match ALL matchers to be accepted diff --git a/package/crds/alerting.grafana.crossplane.io_rulegroups.yaml b/package/crds/alerting.grafana.crossplane.io_rulegroups.yaml index 1dcd099..4263542 100644 --- a/package/crds/alerting.grafana.crossplane.io_rulegroups.yaml +++ b/package/crds/alerting.grafana.crossplane.io_rulegroups.yaml @@ -69,6 +69,9 @@ spec: type: string forProvider: properties: + disableProvenance: + description: Defaults to false. Defaults to `false`. + type: boolean folderRef: description: Reference to a Folder in oss to populate folderUid. properties: @@ -158,8 +161,10 @@ spec: the rule group. type: string orgId: - description: (String) The ID of the org to which the group belongs. - The ID of the org to which the group belongs. + description: (String) The Organization ID. If not set, the Org + ID defined in the provider block will be used. The Organization + ID. If not set, the Org ID defined in the provider block will + be used. type: string organizationRef: description: Reference to a Organization in oss to populate orgId. @@ -368,6 +373,9 @@ spec: for example because of an external controller is managing them, like an autoscaler. properties: + disableProvenance: + description: Defaults to false. Defaults to `false`. + type: boolean intervalSeconds: description: (Number) The interval, in seconds, at which all rules in the group are evaluated. If a group contains many rules, @@ -679,6 +687,9 @@ spec: properties: atProvider: properties: + disableProvenance: + description: Defaults to false. Defaults to `false`. + type: boolean folderUid: description: (String) The UID of the folder that the group belongs to. The UID of the folder that the group belongs to. @@ -698,8 +709,10 @@ spec: the rule group. type: string orgId: - description: (String) The ID of the org to which the group belongs. - The ID of the org to which the group belongs. + description: (String) The Organization ID. If not set, the Org + ID defined in the provider block will be used. The Organization + ID. If not set, the Org ID defined in the provider block will + be used. type: string rule: description: '(Block List, Min: 1) The rules within the group. diff --git a/package/crds/oncall.grafana.crossplane.io_integrations.yaml b/package/crds/oncall.grafana.crossplane.io_integrations.yaml index 8c0bbfc..f576a79 100644 --- a/package/crds/oncall.grafana.crossplane.io_integrations.yaml +++ b/package/crds/oncall.grafana.crossplane.io_integrations.yaml @@ -146,8 +146,9 @@ spec: type: string templates: description: '(Block List, Max: 1) Jinja2 templates for Alert - payload. (see below for nested schema) Jinja2 templates for - Alert payload.' + payload. An empty templates block will be ignored. (see below + for nested schema) Jinja2 templates for Alert payload. An empty + templates block will be ignored.' items: properties: acknowledgeSignal: @@ -291,12 +292,12 @@ spec: newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. The type of integration. Can be - grafana, grafana_alerting, webhook, alertmanager, kapacitor, + inbound_email, direct_paging, jira. The type of integration. + Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. + inbound_email, direct_paging, jira. type: string type: object initProvider: @@ -389,8 +390,9 @@ spec: type: string templates: description: '(Block List, Max: 1) Jinja2 templates for Alert - payload. (see below for nested schema) Jinja2 templates for - Alert payload.' + payload. An empty templates block will be ignored. (see below + for nested schema) Jinja2 templates for Alert payload. An empty + templates block will be ignored.' items: properties: acknowledgeSignal: @@ -534,12 +536,12 @@ spec: newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. The type of integration. Can be - grafana, grafana_alerting, webhook, alertmanager, kapacitor, + inbound_email, direct_paging, jira. The type of integration. + Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. + inbound_email, direct_paging, jira. type: string type: object managementPolicies: @@ -808,8 +810,9 @@ spec: type: string templates: description: '(Block List, Max: 1) Jinja2 templates for Alert - payload. (see below for nested schema) Jinja2 templates for - Alert payload.' + payload. An empty templates block will be ignored. (see below + for nested schema) Jinja2 templates for Alert payload. An empty + templates block will be ignored.' items: properties: acknowledgeSignal: @@ -953,12 +956,12 @@ spec: newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. The type of integration. Can be - grafana, grafana_alerting, webhook, alertmanager, kapacitor, + inbound_email, direct_paging, jira. The type of integration. + Can be grafana, grafana_alerting, webhook, alertmanager, kapacitor, fabric, newrelic, datadog, pagerduty, pingdom, elastalert, amazon_sns, curler, sentry, formatted_webhook, heartbeat, demo, manual, stackdriver, uptimerobot, sentry_platform, zabbix, prtg, slack_channel, - inbound_email, direct_paging. + inbound_email, direct_paging, jira. type: string type: object conditions: diff --git a/package/crds/oncall.grafana.crossplane.io_outgoingwebhooks.yaml b/package/crds/oncall.grafana.crossplane.io_outgoingwebhooks.yaml index 66d3af8..c2f9a6c 100644 --- a/package/crds/oncall.grafana.crossplane.io_outgoingwebhooks.yaml +++ b/package/crds/oncall.grafana.crossplane.io_outgoingwebhooks.yaml @@ -92,9 +92,36 @@ spec: webhook. type: string forwardWholePayload: - description: (Boolean) Forwards whole payload of the alert to - the webhook's url as POST data. Forwards whole payload of the - alert to the webhook's url as POST data. + description: (Boolean) Toggle to send the entire webhook payload + instead of using the values in the Data field. Toggle to send + the entire webhook payload instead of using the values in the + Data field. + type: boolean + headers: + description: (String) Headers to add to the outgoing webhook request. + Headers to add to the outgoing webhook request. + type: string + httpMethod: + description: (String) The HTTP method used in the request made + by the outgoing webhook. Defaults to POST. The HTTP method used + in the request made by the outgoing webhook. Defaults to `POST`. + type: string + integrationFilter: + description: (List of String) Restricts the outgoing webhook to + only trigger if the event came from a selected integration. + If no integrations are selected the outgoing webhook will trigger + for any integration. Restricts the outgoing webhook to only + trigger if the event came from a selected integration. If no + integrations are selected the outgoing webhook will trigger + for any integration. + items: + type: string + type: array + isWebhookEnabled: + description: (Boolean) Controls whether the outgoing webhook will + trigger or is ignored. The default is true. Controls whether + the outgoing webhook will trigger or is ignored. The default + is `true`. type: boolean name: description: (String) The name of the outgoing webhook. The name @@ -128,13 +155,29 @@ spec: the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. type: string + triggerTemplate: + description: (String) A template used to dynamically determine + whether the webhook should execute based on the content of the + payload. A template used to dynamically determine whether the + webhook should execute based on the content of the payload. + type: string + triggerType: + description: '(String) The type of event that will cause this + outgoing webhook to execute. The types of triggers are: escalation, + alert group created, acknowledge, resolve, silence, unsilence, + unresolve, unacknowledge. Defaults to escalation. The type of + event that will cause this outgoing webhook to execute. The + types of triggers are: `escalation`, `alert group created`, + `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, + `unacknowledge`. Defaults to `escalation`.' + type: string url: description: (String) The webhook URL. The webhook URL. type: string user: - description: (String) The auth data of the webhook. Used for Basic - authentication. The auth data of the webhook. Used for Basic - authentication. + description: (String) Username to use when making the outgoing + webhook request. Username to use when making the outgoing webhook + request. type: string type: object initProvider: @@ -154,9 +197,36 @@ spec: webhook. type: string forwardWholePayload: - description: (Boolean) Forwards whole payload of the alert to - the webhook's url as POST data. Forwards whole payload of the - alert to the webhook's url as POST data. + description: (Boolean) Toggle to send the entire webhook payload + instead of using the values in the Data field. Toggle to send + the entire webhook payload instead of using the values in the + Data field. + type: boolean + headers: + description: (String) Headers to add to the outgoing webhook request. + Headers to add to the outgoing webhook request. + type: string + httpMethod: + description: (String) The HTTP method used in the request made + by the outgoing webhook. Defaults to POST. The HTTP method used + in the request made by the outgoing webhook. Defaults to `POST`. + type: string + integrationFilter: + description: (List of String) Restricts the outgoing webhook to + only trigger if the event came from a selected integration. + If no integrations are selected the outgoing webhook will trigger + for any integration. Restricts the outgoing webhook to only + trigger if the event came from a selected integration. If no + integrations are selected the outgoing webhook will trigger + for any integration. + items: + type: string + type: array + isWebhookEnabled: + description: (Boolean) Controls whether the outgoing webhook will + trigger or is ignored. The default is true. Controls whether + the outgoing webhook will trigger or is ignored. The default + is `true`. type: boolean name: description: (String) The name of the outgoing webhook. The name @@ -171,13 +241,29 @@ spec: the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. type: string + triggerTemplate: + description: (String) A template used to dynamically determine + whether the webhook should execute based on the content of the + payload. A template used to dynamically determine whether the + webhook should execute based on the content of the payload. + type: string + triggerType: + description: '(String) The type of event that will cause this + outgoing webhook to execute. The types of triggers are: escalation, + alert group created, acknowledge, resolve, silence, unsilence, + unresolve, unacknowledge. Defaults to escalation. The type of + event that will cause this outgoing webhook to execute. The + types of triggers are: `escalation`, `alert group created`, + `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, + `unacknowledge`. Defaults to `escalation`.' + type: string url: description: (String) The webhook URL. The webhook URL. type: string user: - description: (String) The auth data of the webhook. Used for Basic - authentication. The auth data of the webhook. Used for Basic - authentication. + description: (String) Username to use when making the outgoing + webhook request. Username to use when making the outgoing webhook + request. type: string type: object managementPolicies: @@ -359,13 +445,40 @@ spec: webhook. type: string forwardWholePayload: - description: (Boolean) Forwards whole payload of the alert to - the webhook's url as POST data. Forwards whole payload of the - alert to the webhook's url as POST data. + description: (Boolean) Toggle to send the entire webhook payload + instead of using the values in the Data field. Toggle to send + the entire webhook payload instead of using the values in the + Data field. type: boolean + headers: + description: (String) Headers to add to the outgoing webhook request. + Headers to add to the outgoing webhook request. + type: string + httpMethod: + description: (String) The HTTP method used in the request made + by the outgoing webhook. Defaults to POST. The HTTP method used + in the request made by the outgoing webhook. Defaults to `POST`. + type: string id: description: (String) The ID of this resource. type: string + integrationFilter: + description: (List of String) Restricts the outgoing webhook to + only trigger if the event came from a selected integration. + If no integrations are selected the outgoing webhook will trigger + for any integration. Restricts the outgoing webhook to only + trigger if the event came from a selected integration. If no + integrations are selected the outgoing webhook will trigger + for any integration. + items: + type: string + type: array + isWebhookEnabled: + description: (Boolean) Controls whether the outgoing webhook will + trigger or is ignored. The default is true. Controls whether + the outgoing webhook will trigger or is ignored. The default + is `true`. + type: boolean name: description: (String) The name of the outgoing webhook. The name of the outgoing webhook. @@ -379,13 +492,29 @@ spec: the team with OnCall). You can then get the ID using the `grafana_oncall_team` datasource. type: string + triggerTemplate: + description: (String) A template used to dynamically determine + whether the webhook should execute based on the content of the + payload. A template used to dynamically determine whether the + webhook should execute based on the content of the payload. + type: string + triggerType: + description: '(String) The type of event that will cause this + outgoing webhook to execute. The types of triggers are: escalation, + alert group created, acknowledge, resolve, silence, unsilence, + unresolve, unacknowledge. Defaults to escalation. The type of + event that will cause this outgoing webhook to execute. The + types of triggers are: `escalation`, `alert group created`, + `acknowledge`, `resolve`, `silence`, `unsilence`, `unresolve`, + `unacknowledge`. Defaults to `escalation`.' + type: string url: description: (String) The webhook URL. The webhook URL. type: string user: - description: (String) The auth data of the webhook. Used for Basic - authentication. The auth data of the webhook. Used for Basic - authentication. + description: (String) Username to use when making the outgoing + webhook request. Username to use when making the outgoing webhook + request. type: string type: object conditions: diff --git a/package/crds/oncall.grafana.crossplane.io_schedules.yaml b/package/crds/oncall.grafana.crossplane.io_schedules.yaml index 6d716ad..4885e24 100644 --- a/package/crds/oncall.grafana.crossplane.io_schedules.yaml +++ b/package/crds/oncall.grafana.crossplane.io_schedules.yaml @@ -66,6 +66,11 @@ spec: type: string forProvider: properties: + enableWebOverrides: + description: (Boolean) Enable overrides via web UI (it will ignore + ical_url_overrides). Enable overrides via web UI (it will ignore + ical_url_overrides). + type: boolean icalUrlOverrides: description: (String) The URL of external iCal calendar which override primary events. The URL of external iCal calendar which @@ -129,6 +134,11 @@ spec: for example because of an external controller is managing them, like an autoscaler. properties: + enableWebOverrides: + description: (Boolean) Enable overrides via web UI (it will ignore + ical_url_overrides). Enable overrides via web UI (it will ignore + ical_url_overrides). + type: boolean icalUrlOverrides: description: (String) The URL of external iCal calendar which override primary events. The URL of external iCal calendar which @@ -354,6 +364,11 @@ spec: properties: atProvider: properties: + enableWebOverrides: + description: (Boolean) Enable overrides via web UI (it will ignore + ical_url_overrides). Enable overrides via web UI (it will ignore + ical_url_overrides). + type: boolean icalUrlOverrides: description: (String) The URL of external iCal calendar which override primary events. The URL of external iCal calendar which diff --git a/package/crds/oss.grafana.crossplane.io_dashboardpermissions.yaml b/package/crds/oss.grafana.crossplane.io_dashboardpermissions.yaml index 57d64b0..13fd800 100644 --- a/package/crds/oss.grafana.crossplane.io_dashboardpermissions.yaml +++ b/package/crds/oss.grafana.crossplane.io_dashboardpermissions.yaml @@ -35,8 +35,8 @@ spec: schema: openAPIV3Schema: description: DashboardPermission is the Schema for the DashboardPermissions - API. Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP - API https://grafana.com/docs/grafana/latest/developers/http_api/dashboard_permissions/ + API. Manages the entire set of permissions for a dashboard. Permissions + that aren't specified when applying this resource will be removed. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -225,10 +225,10 @@ spec: type: object type: object permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -267,10 +267,10 @@ spec: like an autoscaler. properties: permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -456,11 +456,6 @@ spec: required: - forProvider type: object - x-kubernetes-validations: - - message: spec.forProvider.permissions is a required parameter - rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies - || ''Update'' in self.managementPolicies) || has(self.forProvider.permissions) - || (has(self.initProvider) && has(self.initProvider.permissions))' status: description: DashboardPermissionStatus defines the observed state of DashboardPermission. properties: @@ -480,10 +475,10 @@ spec: be used. type: string permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: diff --git a/package/crds/oss.grafana.crossplane.io_folderpermissions.yaml b/package/crds/oss.grafana.crossplane.io_folderpermissions.yaml index b440e98..0ef0261 100644 --- a/package/crds/oss.grafana.crossplane.io_folderpermissions.yaml +++ b/package/crds/oss.grafana.crossplane.io_folderpermissions.yaml @@ -35,8 +35,8 @@ spec: schema: openAPIV3Schema: description: FolderPermission is the Schema for the FolderPermissions API. - Official documentation https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/access-control/HTTP - API https://grafana.com/docs/grafana/latest/developers/http_api/folder_permissions/ + Manages the entire set of permissions for a folder. Permissions that aren't + specified when applying this resource will be removed. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -224,10 +224,10 @@ spec: type: object type: object permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -266,10 +266,10 @@ spec: like an autoscaler. properties: permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -455,11 +455,6 @@ spec: required: - forProvider type: object - x-kubernetes-validations: - - message: spec.forProvider.permissions is a required parameter - rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies - || ''Update'' in self.managementPolicies) || has(self.forProvider.permissions) - || (has(self.initProvider) && has(self.initProvider.permissions))' status: description: FolderPermissionStatus defines the observed state of FolderPermission. properties: @@ -478,10 +473,10 @@ spec: be used. type: string permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: diff --git a/package/crds/oss.grafana.crossplane.io_folders.yaml b/package/crds/oss.grafana.crossplane.io_folders.yaml index 1b05336..1e6f742 100644 --- a/package/crds/oss.grafana.crossplane.io_folders.yaml +++ b/package/crds/oss.grafana.crossplane.io_folders.yaml @@ -68,6 +68,79 @@ spec: type: string forProvider: properties: + folderRef: + description: Reference to a Folder in oss to populate parentFolderUid. + properties: + name: + description: Name of the referenced object. + type: string + policy: + description: Policies for referencing. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + required: + - name + type: object + folderSelector: + description: Selector for a Folder in oss to populate parentFolderUid. + properties: + matchControllerRef: + description: MatchControllerRef ensures an object with the + same controller reference as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + properties: + resolution: + default: Required + description: Resolution specifies whether resolution of + this reference is required. The default is 'Required', + which means the reconcile will fail if the reference + cannot be resolved. 'Optional' means this reference + will be a no-op if it cannot be resolved. + enum: + - Required + - Optional + type: string + resolve: + description: Resolve specifies when this reference should + be resolved. The default is 'IfNotPresent', which will + attempt to resolve the reference only when the corresponding + field is not present. Use 'Always' to resolve the reference + on every reconcile. + enum: + - Always + - IfNotPresent + type: string + type: object + type: object orgId: description: (String) The Organization ID. If not set, the Org ID defined in the provider block will be used. The Organization @@ -147,6 +220,16 @@ spec: type: string type: object type: object + parentFolderUid: + description: '(String) The uid of the parent folder. If set, the + folder will be nested. If not set, the folder will be created + in the root folder. Note: This requires the nestedFolders feature + flag to be enabled on your Grafana instance. The uid of the + parent folder. If set, the folder will be nested. If not set, + the folder will be created in the root folder. Note: This requires + the nestedFolders feature flag to be enabled on your Grafana + instance.' + type: string preventDestroyIfNotEmpty: description: (Boolean) Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to @@ -366,6 +449,16 @@ spec: ID. If not set, the Org ID defined in the provider block will be used. type: string + parentFolderUid: + description: '(String) The uid of the parent folder. If set, the + folder will be nested. If not set, the folder will be created + in the root folder. Note: This requires the nestedFolders feature + flag to be enabled on your Grafana instance. The uid of the + parent folder. If set, the folder will be nested. If not set, + the folder will be created in the root folder. Note: This requires + the nestedFolders feature flag to be enabled on your Grafana + instance.' + type: string preventDestroyIfNotEmpty: description: (Boolean) Prevent deletion of the folder if it is not empty (contains dashboards or alert rules). Defaults to diff --git a/package/crds/oss.grafana.crossplane.io_organizationpreferences.yaml b/package/crds/oss.grafana.crossplane.io_organizationpreferences.yaml index 965a742..3e9ceba 100644 --- a/package/crds/oss.grafana.crossplane.io_organizationpreferences.yaml +++ b/package/crds/oss.grafana.crossplane.io_organizationpreferences.yaml @@ -70,8 +70,9 @@ spec: forProvider: properties: homeDashboardId: - description: (Number) The Organization home dashboard ID. The - Organization home dashboard ID. + description: '(Number, Deprecated) The Organization home dashboard + ID. Deprecated: Use home_dashboard_uid instead. The Organization + home dashboard ID. Deprecated: Use `home_dashboard_uid` instead.' type: number homeDashboardUid: description: (String) The Organization home dashboard UID. This @@ -159,9 +160,9 @@ spec: type: object theme: description: (String) The Organization theme. Available values - are light, dark, or an empty string for the default. The Organization - theme. Available values are `light`, `dark`, or an empty string - for the default. + are light, dark, system, or an empty string for the default. + The Organization theme. Available values are `light`, `dark`, + `system`, or an empty string for the default. type: string timezone: description: (String) The Organization timezone. Available values @@ -187,8 +188,9 @@ spec: like an autoscaler. properties: homeDashboardId: - description: (Number) The Organization home dashboard ID. The - Organization home dashboard ID. + description: '(Number, Deprecated) The Organization home dashboard + ID. Deprecated: Use home_dashboard_uid instead. The Organization + home dashboard ID. Deprecated: Use `home_dashboard_uid` instead.' type: number homeDashboardUid: description: (String) The Organization home dashboard UID. This @@ -197,9 +199,9 @@ spec: type: string theme: description: (String) The Organization theme. Available values - are light, dark, or an empty string for the default. The Organization - theme. Available values are `light`, `dark`, or an empty string - for the default. + are light, dark, system, or an empty string for the default. + The Organization theme. Available values are `light`, `dark`, + `system`, or an empty string for the default. type: string timezone: description: (String) The Organization timezone. Available values @@ -379,8 +381,9 @@ spec: atProvider: properties: homeDashboardId: - description: (Number) The Organization home dashboard ID. The - Organization home dashboard ID. + description: '(Number, Deprecated) The Organization home dashboard + ID. Deprecated: Use home_dashboard_uid instead. The Organization + home dashboard ID. Deprecated: Use `home_dashboard_uid` instead.' type: number homeDashboardUid: description: (String) The Organization home dashboard UID. This @@ -398,9 +401,9 @@ spec: type: string theme: description: (String) The Organization theme. Available values - are light, dark, or an empty string for the default. The Organization - theme. Available values are `light`, `dark`, or an empty string - for the default. + are light, dark, system, or an empty string for the default. + The Organization theme. Available values are `light`, `dark`, + `system`, or an empty string for the default. type: string timezone: description: (String) The Organization timezone. Available values diff --git a/package/crds/oss.grafana.crossplane.io_organizations.yaml b/package/crds/oss.grafana.crossplane.io_organizations.yaml index 1318482..2a772ef 100644 --- a/package/crds/oss.grafana.crossplane.io_organizations.yaml +++ b/package/crds/oss.grafana.crossplane.io_organizations.yaml @@ -121,6 +121,18 @@ spec: description: (String) The display name for the Grafana organization created. The display name for the Grafana organization created. type: string + usersWithoutAccess: + description: '(Set of String) A list of email addresses corresponding + to users who should be given none access to the organization. + Note: users specified here must already exist in Grafana, unless + ''create_users'' is set to true. This feature is only available + in Grafana 10.2+. A list of email addresses corresponding to + users who should be given none access to the organization. Note: + users specified here must already exist in Grafana, unless ''create_users'' + is set to true. This feature is only available in Grafana 10.2+.' + items: + type: string + type: array viewers: description: '(Set of String) A list of email addresses corresponding to users who should be given viewer access to the organization. @@ -195,6 +207,18 @@ spec: description: (String) The display name for the Grafana organization created. The display name for the Grafana organization created. type: string + usersWithoutAccess: + description: '(Set of String) A list of email addresses corresponding + to users who should be given none access to the organization. + Note: users specified here must already exist in Grafana, unless + ''create_users'' is set to true. This feature is only available + in Grafana 10.2+. A list of email addresses corresponding to + users who should be given none access to the organization. Note: + users specified here must already exist in Grafana, unless ''create_users'' + is set to true. This feature is only available in Grafana 10.2+.' + items: + type: string + type: array viewers: description: '(Set of String) A list of email addresses corresponding to users who should be given viewer access to the organization. @@ -435,6 +459,18 @@ spec: by Grafana. The organization id assigned to this organization by Grafana. type: number + usersWithoutAccess: + description: '(Set of String) A list of email addresses corresponding + to users who should be given none access to the organization. + Note: users specified here must already exist in Grafana, unless + ''create_users'' is set to true. This feature is only available + in Grafana 10.2+. A list of email addresses corresponding to + users who should be given none access to the organization. Note: + users specified here must already exist in Grafana, unless ''create_users'' + is set to true. This feature is only available in Grafana 10.2+.' + items: + type: string + type: array viewers: description: '(Set of String) A list of email addresses corresponding to users who should be given viewer access to the organization. diff --git a/package/crds/oss.grafana.crossplane.io_serviceaccountpermissions.yaml b/package/crds/oss.grafana.crossplane.io_serviceaccountpermissions.yaml index 7f22197..5e443cc 100644 --- a/package/crds/oss.grafana.crossplane.io_serviceaccountpermissions.yaml +++ b/package/crds/oss.grafana.crossplane.io_serviceaccountpermissions.yaml @@ -35,8 +35,10 @@ spec: schema: openAPIV3Schema: description: 'ServiceAccountPermission is the Schema for the ServiceAccountPermissions - API. Note: This resource is available from Grafana 9.2.4 onwards. Official - documentation https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana' + API. Manages the entire set of permissions for a service account. Permissions + that aren''t specified when applying this resource will be removed. Note: + This resource is available from Grafana 9.2.4 onwards. Official documentation + https://grafana.com/docs/grafana/latest/administration/service-accounts/#manage-users-and-teams-permissions-for-a-service-account-in-grafana' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -149,10 +151,10 @@ spec: type: object type: object permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -268,10 +270,10 @@ spec: like an autoscaler. properties: permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: @@ -455,11 +457,6 @@ spec: required: - forProvider type: object - x-kubernetes-validations: - - message: spec.forProvider.permissions is a required parameter - rule: '!(''*'' in self.managementPolicies || ''Create'' in self.managementPolicies - || ''Update'' in self.managementPolicies) || has(self.forProvider.permissions) - || (has(self.initProvider) && has(self.initProvider.permissions))' status: description: ServiceAccountPermissionStatus defines the observed state of ServiceAccountPermission. @@ -476,10 +473,10 @@ spec: be used. type: string permissions: - description: '(Block Set, Min: 1) The permission items to add/update. - Items that are omitted from the list will be removed. (see below - for nested schema) The permission items to add/update. Items - that are omitted from the list will be removed.' + description: (Block Set) The permission items to add/update. Items + that are omitted from the list will be removed. (see below for + nested schema) The permission items to add/update. Items that + are omitted from the list will be removed. items: properties: permission: diff --git a/package/crds/oss.grafana.crossplane.io_teams.yaml b/package/crds/oss.grafana.crossplane.io_teams.yaml index ba59726..24a857b 100644 --- a/package/crds/oss.grafana.crossplane.io_teams.yaml +++ b/package/crds/oss.grafana.crossplane.io_teams.yaml @@ -262,10 +262,11 @@ spec: type: string theme: description: (String) The default theme for this team. Available - themes are light, dark, or an empty string for the default - theme. Defaults to “. The default theme for this team. - Available themes are `light`, `dark`, or an empty string - for the default theme. Defaults to “. + themes are light, dark, system, or an empty string for + the default theme. Defaults to “. The default theme for + this team. Available themes are `light`, `dark`, `system`, + or an empty string for the default theme. Defaults to + “. type: string timezone: description: (String) The default timezone for this team. @@ -333,10 +334,11 @@ spec: type: string theme: description: (String) The default theme for this team. Available - themes are light, dark, or an empty string for the default - theme. Defaults to “. The default theme for this team. - Available themes are `light`, `dark`, or an empty string - for the default theme. Defaults to “. + themes are light, dark, system, or an empty string for + the default theme. Defaults to “. The default theme for + this team. Available themes are `light`, `dark`, `system`, + or an empty string for the default theme. Defaults to + “. type: string timezone: description: (String) The default timezone for this team. @@ -581,10 +583,11 @@ spec: type: string theme: description: (String) The default theme for this team. Available - themes are light, dark, or an empty string for the default - theme. Defaults to “. The default theme for this team. - Available themes are `light`, `dark`, or an empty string - for the default theme. Defaults to “. + themes are light, dark, system, or an empty string for + the default theme. Defaults to “. The default theme for + this team. Available themes are `light`, `dark`, `system`, + or an empty string for the default theme. Defaults to + “. type: string timezone: description: (String) The default timezone for this team. diff --git a/package/crds/sm.grafana.crossplane.io_checks.yaml b/package/crds/sm.grafana.crossplane.io_checks.yaml index a730c9c..bc8b8ef 100644 --- a/package/crds/sm.grafana.crossplane.io_checks.yaml +++ b/package/crds/sm.grafana.crossplane.io_checks.yaml @@ -390,6 +390,13 @@ spec: description: (Boolean) Do not follow redirects. Defaults to false. Do not follow redirects. Defaults to `false`. type: boolean + proxyConnectHeaders: + description: (Set of String) The HTTP headers sent + to the proxy URL The HTTP headers sent to the proxy + URL + items: + type: string + type: array proxyUrl: description: (String) Proxy URL. Proxy URL. type: string @@ -438,9 +445,9 @@ spec: type: array validHttpVersions: description: (Set of String) List of valid HTTP versions. - Options include HTTP/1.0, HTTP/1.1, HTTP/2 List + Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 List of valid HTTP versions. Options include `HTTP/1.0`, - `HTTP/1.1`, `HTTP/2` + `HTTP/1.1`, `HTTP/2.0` items: type: string type: array @@ -453,6 +460,175 @@ spec: type: array type: object type: array + multihttp: + description: '(Block Set, Max: 1) Settings for MultiHTTP + check. The target must be a URL (http or https) (see below + for nested schema) Settings for MultiHTTP check. The target + must be a URL (http or https)' + items: + properties: + entries: + description: (Block List) (see below for nested schema) + items: + properties: + assertions: + description: (Block List) Assertions to make + on the request response (see below for nested + schema) Assertions to make on the request + response + items: + properties: + condition: + description: '(String) The condition of + the assertion: NOT_CONTAINS, EQUALS, + STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + The condition of the assertion: NOT_CONTAINS, + EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, + CONTAINS' + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression of the assertion. Should + start with $. + type: string + subject: + description: '(String) The subject of + the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY The subject of the assertion: + RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY' + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION' + type: string + value: + description: (String) The value of the + assertion The value of the assertion + type: string + type: object + type: array + request: + description: '(Block Set, Max: 1) An individual + MultiHTTP request (see below for nested schema) + An individual MultiHTTP request' + items: + properties: + body: + description: (String) The body of the + HTTP request used in probe. The body + of the HTTP request used in probe. + items: + properties: + contentEncoding: + description: (String) The content + encoding of the body The content + encoding of the body + type: string + contentType: + description: (String) The content + type of the body The content type + of the body + type: string + payload: + description: (String) The body payload + The body payload + type: string + type: object + type: array + headers: + description: (Set of String) The HTTP + headers set for the probe. The headers + to send with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the header + to send + type: string + value: + description: (String) The value + of the assertion Value of the + header to send + type: string + type: object + type: array + method: + description: (String) Request method. + One of GET, CONNECT, DELETE, HEAD, OPTIONS, + POST, PUT, TRACE Defaults to GET. The + HTTP method to use + type: string + queryFields: + description: (Block Set) Query fields + to send with the request (see below + for nested schema) Query fields to send + with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the query + field to send + type: string + value: + description: (String) The value + of the assertion Value of the + query field to send + type: string + type: object + type: array + url: + description: (String) The URL for the + request The URL for the request + type: string + type: object + type: array + variables: + description: (Block List) Variables to extract + from the request response (see below for nested + schema) Variables to extract from the request + response + items: + properties: + attribute: + description: (String) The attribute to + use when finding the variable value. + Only used when type is CSS_SELECTOR + The attribute to use when finding the + variable value. Only used when type + is CSS_SELECTOR + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression to when finding the variable. + Should start with $. Only use when type + is JSON_PATH or REGEX + type: string + name: + description: (String) Name of the header + to send The name of the variable to + extract + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The method of finding + the variable value to extract. JSON_PATH, + REGEX, CSS_SELECTOR' + type: string + type: object + type: array + type: object + type: array + type: object + type: array ping: description: '(Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. @@ -953,6 +1129,13 @@ spec: description: (Boolean) Do not follow redirects. Defaults to false. Do not follow redirects. Defaults to `false`. type: boolean + proxyConnectHeaders: + description: (Set of String) The HTTP headers sent + to the proxy URL The HTTP headers sent to the proxy + URL + items: + type: string + type: array proxyUrl: description: (String) Proxy URL. Proxy URL. type: string @@ -983,9 +1166,9 @@ spec: type: array validHttpVersions: description: (Set of String) List of valid HTTP versions. - Options include HTTP/1.0, HTTP/1.1, HTTP/2 List + Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 List of valid HTTP versions. Options include `HTTP/1.0`, - `HTTP/1.1`, `HTTP/2` + `HTTP/1.1`, `HTTP/2.0` items: type: string type: array @@ -998,6 +1181,175 @@ spec: type: array type: object type: array + multihttp: + description: '(Block Set, Max: 1) Settings for MultiHTTP + check. The target must be a URL (http or https) (see below + for nested schema) Settings for MultiHTTP check. The target + must be a URL (http or https)' + items: + properties: + entries: + description: (Block List) (see below for nested schema) + items: + properties: + assertions: + description: (Block List) Assertions to make + on the request response (see below for nested + schema) Assertions to make on the request + response + items: + properties: + condition: + description: '(String) The condition of + the assertion: NOT_CONTAINS, EQUALS, + STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + The condition of the assertion: NOT_CONTAINS, + EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, + CONTAINS' + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression of the assertion. Should + start with $. + type: string + subject: + description: '(String) The subject of + the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY The subject of the assertion: + RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY' + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION' + type: string + value: + description: (String) The value of the + assertion The value of the assertion + type: string + type: object + type: array + request: + description: '(Block Set, Max: 1) An individual + MultiHTTP request (see below for nested schema) + An individual MultiHTTP request' + items: + properties: + body: + description: (String) The body of the + HTTP request used in probe. The body + of the HTTP request used in probe. + items: + properties: + contentEncoding: + description: (String) The content + encoding of the body The content + encoding of the body + type: string + contentType: + description: (String) The content + type of the body The content type + of the body + type: string + payload: + description: (String) The body payload + The body payload + type: string + type: object + type: array + headers: + description: (Set of String) The HTTP + headers set for the probe. The headers + to send with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the header + to send + type: string + value: + description: (String) The value + of the assertion Value of the + header to send + type: string + type: object + type: array + method: + description: (String) Request method. + One of GET, CONNECT, DELETE, HEAD, OPTIONS, + POST, PUT, TRACE Defaults to GET. The + HTTP method to use + type: string + queryFields: + description: (Block Set) Query fields + to send with the request (see below + for nested schema) Query fields to send + with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the query + field to send + type: string + value: + description: (String) The value + of the assertion Value of the + query field to send + type: string + type: object + type: array + url: + description: (String) The URL for the + request The URL for the request + type: string + type: object + type: array + variables: + description: (Block List) Variables to extract + from the request response (see below for nested + schema) Variables to extract from the request + response + items: + properties: + attribute: + description: (String) The attribute to + use when finding the variable value. + Only used when type is CSS_SELECTOR + The attribute to use when finding the + variable value. Only used when type + is CSS_SELECTOR + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression to when finding the variable. + Should start with $. Only use when type + is JSON_PATH or REGEX + type: string + name: + description: (String) Name of the header + to send The name of the variable to + extract + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The method of finding + the variable value to extract. JSON_PATH, + REGEX, CSS_SELECTOR' + type: string + type: object + type: array + type: object + type: array + type: object + type: array ping: description: '(Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address. @@ -1653,6 +2005,13 @@ spec: description: (Boolean) Do not follow redirects. Defaults to false. Do not follow redirects. Defaults to `false`. type: boolean + proxyConnectHeaders: + description: (Set of String) The HTTP headers sent + to the proxy URL The HTTP headers sent to the proxy + URL + items: + type: string + type: array proxyUrl: description: (String) Proxy URL. Proxy URL. type: string @@ -1683,9 +2042,9 @@ spec: type: array validHttpVersions: description: (Set of String) List of valid HTTP versions. - Options include HTTP/1.0, HTTP/1.1, HTTP/2 List + Options include HTTP/1.0, HTTP/1.1, HTTP/2.0 List of valid HTTP versions. Options include `HTTP/1.0`, - `HTTP/1.1`, `HTTP/2` + `HTTP/1.1`, `HTTP/2.0` items: type: string type: array @@ -1698,6 +2057,175 @@ spec: type: array type: object type: array + multihttp: + description: '(Block Set, Max: 1) Settings for MultiHTTP + check. The target must be a URL (http or https) (see below + for nested schema) Settings for MultiHTTP check. The target + must be a URL (http or https)' + items: + properties: + entries: + description: (Block List) (see below for nested schema) + items: + properties: + assertions: + description: (Block List) Assertions to make + on the request response (see below for nested + schema) Assertions to make on the request + response + items: + properties: + condition: + description: '(String) The condition of + the assertion: NOT_CONTAINS, EQUALS, + STARTS_WITH, ENDS_WITH, TYPE_OF, CONTAINS + The condition of the assertion: NOT_CONTAINS, + EQUALS, STARTS_WITH, ENDS_WITH, TYPE_OF, + CONTAINS' + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression of the assertion. Should + start with $. + type: string + subject: + description: '(String) The subject of + the assertion: RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY The subject of the assertion: + RESPONSE_HEADERS, HTTP_STATUS_CODE, + RESPONSE_BODY' + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION' + type: string + value: + description: (String) The value of the + assertion The value of the assertion + type: string + type: object + type: array + request: + description: '(Block Set, Max: 1) An individual + MultiHTTP request (see below for nested schema) + An individual MultiHTTP request' + items: + properties: + body: + description: (String) The body of the + HTTP request used in probe. The body + of the HTTP request used in probe. + items: + properties: + contentEncoding: + description: (String) The content + encoding of the body The content + encoding of the body + type: string + contentType: + description: (String) The content + type of the body The content type + of the body + type: string + payload: + description: (String) The body payload + The body payload + type: string + type: object + type: array + headers: + description: (Set of String) The HTTP + headers set for the probe. The headers + to send with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the header + to send + type: string + value: + description: (String) The value + of the assertion Value of the + header to send + type: string + type: object + type: array + method: + description: (String) Request method. + One of GET, CONNECT, DELETE, HEAD, OPTIONS, + POST, PUT, TRACE Defaults to GET. The + HTTP method to use + type: string + queryFields: + description: (Block Set) Query fields + to send with the request (see below + for nested schema) Query fields to send + with the request + items: + properties: + name: + description: (String) Name of the + header to send Name of the query + field to send + type: string + value: + description: (String) The value + of the assertion Value of the + query field to send + type: string + type: object + type: array + url: + description: (String) The URL for the + request The URL for the request + type: string + type: object + type: array + variables: + description: (Block List) Variables to extract + from the request response (see below for nested + schema) Variables to extract from the request + response + items: + properties: + attribute: + description: (String) The attribute to + use when finding the variable value. + Only used when type is CSS_SELECTOR + The attribute to use when finding the + variable value. Only used when type + is CSS_SELECTOR + type: string + expression: + description: (String) The expression of + the assertion. Should start with $. + The expression to when finding the variable. + Should start with $. Only use when type + is JSON_PATH or REGEX + type: string + name: + description: (String) Name of the header + to send The name of the variable to + extract + type: string + type: + description: '(String) The type of assertion + to make: TEXT, JSON_PATH_VALUE, JSON_PATH_ASSERTION, + REGEX_ASSERTION The method of finding + the variable value to extract. JSON_PATH, + REGEX, CSS_SELECTOR' + type: string + type: object + type: array + type: object + type: array + type: object + type: array ping: description: '(Block Set, Max: 1) Settings for ping (ICMP) check. The target must be a valid hostname or IP address.