// Copyright (c) 2023 Volvo Car Corporation
// SPDX-License-Identifier: Apache-2.0

// Code generated by lingon. EDIT AS MUCH AS YOU LIKE.

package promcrd

import (
	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

var AlertmanagerconfigsMonitoringCoreosComCRD = &apiextensionsv1.CustomResourceDefinition{
	ObjectMeta: metav1.ObjectMeta{
		Annotations: map[string]string{"controller-gen.kubebuilder.io/version": "v0.11.1"},
		Name:        "alertmanagerconfigs.monitoring.coreos.com",
	},
	Spec: apiextensionsv1.CustomResourceDefinitionSpec{
		Group: "monitoring.coreos.com",
		Names: apiextensionsv1.CustomResourceDefinitionNames{
			Categories: []string{"prometheus-operator"},
			Kind:       "AlertmanagerConfig",
			ListKind:   "AlertmanagerConfigList",
			Plural:     "alertmanagerconfigs",
			ShortNames: []string{"amcfg"},
			Singular:   "alertmanagerconfig",
		},
		Scope: apiextensionsv1.ResourceScope("Namespaced"),
		Versions: []apiextensionsv1.CustomResourceDefinitionVersion{{
			Name: "v1alpha1",
			Schema: &apiextensionsv1.CustomResourceValidation{OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{
				Description: "AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster.",
				Properties: map[string]apiextensionsv1.JSONSchemaProps{
					"apiVersion": {
						Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
						Type:        "string",
					},
					"kind": {
						Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
						Type:        "string",
					},
					"metadata": {Type: "object"},
					"spec": {
						Description: "AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource.",
						Properties: map[string]apiextensionsv1.JSONSchemaProps{
							"inhibitRules": {
								Description: "List of inhibition rules. The rules will only apply to alerts matching the resource's namespace.",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"equal": {
											Description: "Labels that must have an equal value in the source and target alert for the inhibition to take effect.",
											Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
											Type:        "array",
										},
										"sourceMatch": {
											Description: "Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource's namespace.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "Matcher defines how to match on alert's labels.",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"matchType": {
														Description: "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.",
														Enum:        []apiextensionsv1.JSON{{Raw: []byte("\"!=\"")}, {Raw: []byte("\"=\"")}, {Raw: []byte("\"=~\"")}, {Raw: []byte("\"!~\"")}},
														Type:        "string",
													},
													"name": {
														Description: "Label to match.",
														MinLength:   P(int64(1)),
														Type:        "string",
													},
													"regex": {
														Description: "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.",
														Type:        "boolean",
													},
													"value": {
														Description: "Label value to match.",
														Type:        "string",
													},
												},
												Required: []string{"name"},
												Type:     "object",
											}},
											Type: "array",
										},
										"targetMatch": {
											Description: "Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource's namespace.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "Matcher defines how to match on alert's labels.",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"matchType": {
														Description: "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.",
														Enum:        []apiextensionsv1.JSON{{Raw: []byte("\"!=\"")}, {Raw: []byte("\"=\"")}, {Raw: []byte("\"=~\"")}, {Raw: []byte("\"!~\"")}},
														Type:        "string",
													},
													"name": {
														Description: "Label to match.",
														MinLength:   P(int64(1)),
														Type:        "string",
													},
													"regex": {
														Description: "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.",
														Type:        "boolean",
													},
													"value": {
														Description: "Label value to match.",
														Type:        "string",
													},
												},
												Required: []string{"name"},
												Type:     "object",
											}},
											Type: "array",
										},
									},
									Type: "object",
								}},
								Type: "array",
							},
							"muteTimeIntervals": {
								Description: "List of MuteTimeInterval specifying when the routes should be muted.",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "MuteTimeInterval specifies the periods in time when notifications will be muted",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"name": {
											Description: "Name of the time interval",
											Type:        "string",
										},
										"timeIntervals": {
											Description: "TimeIntervals is a list of TimeInterval",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "TimeInterval describes intervals of time",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"daysOfMonth": {
														Description: "DaysOfMonth is a list of DayOfMonthRange",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "DayOfMonthRange is an inclusive range of days of the month beginning at 1",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"end": {
																	Description: "End of the inclusive range",
																	Maximum:     P(31.0),
																	Minimum:     P(-31.0),
																	Type:        "integer",
																},
																"start": {
																	Description: "Start of the inclusive range",
																	Maximum:     P(31.0),
																	Minimum:     P(-31.0),
																	Type:        "integer",
																},
															},
															Type: "object",
														}},
														Type: "array",
													},
													"months": {
														Description: "Months is a list of MonthRange",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "MonthRange is an inclusive range of months of the year beginning in January Months can be specified by name (e.g 'January') by numerical month (e.g '1') or as an inclusive range (e.g 'January:March', '1:3', '1:March')",
															Pattern:     "^((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12])(?:((:((?i)january|february|march|april|may|june|july|august|september|october|november|december|[1-12]))$)|$)",
															Type:        "string",
														}},
														Type: "array",
													},
													"times": {
														Description: "Times is a list of TimeRange",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "TimeRange defines a start and end time in 24hr format",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"endTime": {
																	Description: "EndTime is the end time in 24hr format.",
																	Pattern:     "^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)",
																	Type:        "string",
																},
																"startTime": {
																	Description: "StartTime is the start time in 24hr format.",
																	Pattern:     "^((([01][0-9])|(2[0-3])):[0-5][0-9])$|(^24:00$)",
																	Type:        "string",
																},
															},
															Type: "object",
														}},
														Type: "array",
													},
													"weekdays": {
														Description: "Weekdays is a list of WeekdayRange",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "WeekdayRange is an inclusive range of days of the week beginning on Sunday Days can be specified by name (e.g 'Sunday') or as an inclusive range (e.g 'Monday:Friday')",
															Pattern:     "^((?i)sun|mon|tues|wednes|thurs|fri|satur)day(?:((:(sun|mon|tues|wednes|thurs|fri|satur)day)$)|$)",
															Type:        "string",
														}},
														Type: "array",
													},
													"years": {
														Description: "Years is a list of YearRange",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "YearRange is an inclusive range of years",
															Pattern:     "^2\\d{3}(?::2\\d{3}|$)",
															Type:        "string",
														}},
														Type: "array",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
									},
									Type: "object",
								}},
								Type: "array",
							},
							"receivers": {
								Description: "List of receivers.",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "Receiver defines one or more notification integrations.",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"emailConfigs": {
											Description: "List of Email configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "EmailConfig configures notifications via Email.",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"authIdentity": {
														Description: "The identity to use for authentication.",
														Type:        "string",
													},
													"authPassword": {
														Description: "The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"authSecret": {
														Description: "The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"authUsername": {
														Description: "The username to use for authentication.",
														Type:        "string",
													},
													"from": {
														Description: "The sender address.",
														Type:        "string",
													},
													"headers": {
														Description: "Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "KeyValue defines a (key, value) tuple.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"key": {
																	Description: "Key of the tuple.",
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"value": {
																	Description: "Value of the tuple.",
																	Type:        "string",
																},
															},
															Required: []string{"key", "value"},
															Type:     "object",
														}},
														Type: "array",
													},
													"hello": {
														Description: "The hostname to identify to the SMTP server.",
														Type:        "string",
													},
													"html": {
														Description: "The HTML body of the email notification.",
														Type:        "string",
													},
													"requireTLS": {
														Description: "The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.",
														Type:        "boolean",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"smarthost": {
														Description: "The SMTP host and port through which emails are sent. E.g. example.com:25",
														Type:        "string",
													},
													"text": {
														Description: "The text body of the email notification.",
														Type:        "string",
													},
													"tlsConfig": {
														Description: "TLS configuration",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"ca": {
																Description: "Certificate authority used when verifying server certificates.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"configMap": {
																		Description: "ConfigMap containing data to use for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key to select.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the ConfigMap or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"secret": {
																		Description: "Secret containing data to use for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"cert": {
																Description: "Client certificate to present when doing client-authentication.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"configMap": {
																		Description: "ConfigMap containing data to use for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key to select.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the ConfigMap or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"secret": {
																		Description: "Secret containing data to use for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"insecureSkipVerify": {
																Description: "Disable target certificate validation.",
																Type:        "boolean",
															},
															"keySecret": {
																Description: "Secret containing the client key file for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
																XMapType: P("atomic"),
															},
															"serverName": {
																Description: "Used to verify the hostname for the targets.",
																Type:        "string",
															},
														},
														Type: "object",
													},
													"to": {
														Description: "The email address to send notifications to.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"name": {
											Description: "Name of the receiver. Must be unique across all items from the list.",
											MinLength:   P(int64(1)),
											Type:        "string",
										},
										"opsgenieConfigs": {
											Description: "List of OpsGenie configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"actions": {
														Description: "Comma separated list of actions that will be available for the alert.",
														Type:        "string",
													},
													"apiKey": {
														Description: "The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"apiURL": {
														Description: "The URL to send OpsGenie API requests to.",
														Type:        "string",
													},
													"description": {
														Description: "Description of the incident.",
														Type:        "string",
													},
													"details": {
														Description: "A set of arbitrary key/value pairs that provide further detail about the incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "KeyValue defines a (key, value) tuple.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"key": {
																	Description: "Key of the tuple.",
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"value": {
																	Description: "Value of the tuple.",
																	Type:        "string",
																},
															},
															Required: []string{"key", "value"},
															Type:     "object",
														}},
														Type: "array",
													},
													"entity": {
														Description: "Optional field that can be used to specify which domain alert is related to.",
														Type:        "string",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"message": {
														Description: "Alert text limited to 130 characters.",
														Type:        "string",
													},
													"note": {
														Description: "Additional alert note.",
														Type:        "string",
													},
													"priority": {
														Description: "Priority level of alert. Possible values are P1, P2, P3, P4, and P5.",
														Type:        "string",
													},
													"responders": {
														Description: "List of responders responsible for notifications.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"id": {
																	Description: "ID of the responder.",
																	Type:        "string",
																},
																"name": {
																	Description: "Name of the responder.",
																	Type:        "string",
																},
																"type": {
																	Description: "Type of responder.",
																	Enum:        []apiextensionsv1.JSON{{Raw: []byte("\"team\"")}, {Raw: []byte("\"teams\"")}, {Raw: []byte("\"user\"")}, {Raw: []byte("\"escalation\"")}, {Raw: []byte("\"schedule\"")}},
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"username": {
																	Description: "Username of the responder.",
																	Type:        "string",
																},
															},
															Required: []string{"type"},
															Type:     "object",
														}},
														Type: "array",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"source": {
														Description: "Backlink to the sender of the notification.",
														Type:        "string",
													},
													"tags": {
														Description: "Comma separated list of tags attached to the notifications.",
														Type:        "string",
													},
													"updateAlerts": {
														Description: "Whether to update message and description of the alert in OpsGenie if it already exists By default, the alert is never updated in OpsGenie, the new message only appears in activity log.",
														Type:        "boolean",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"pagerdutyConfigs": {
											Description: "List of PagerDuty configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"class": {
														Description: "The class/type of the event.",
														Type:        "string",
													},
													"client": {
														Description: "Client identification.",
														Type:        "string",
													},
													"clientURL": {
														Description: "Backlink to the sender of notification.",
														Type:        "string",
													},
													"component": {
														Description: "The part or component of the affected system that is broken.",
														Type:        "string",
													},
													"description": {
														Description: "Description of the incident.",
														Type:        "string",
													},
													"details": {
														Description: "Arbitrary key/value pairs that provide further detail about the incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "KeyValue defines a (key, value) tuple.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"key": {
																	Description: "Key of the tuple.",
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"value": {
																	Description: "Value of the tuple.",
																	Type:        "string",
																},
															},
															Required: []string{"key", "value"},
															Type:     "object",
														}},
														Type: "array",
													},
													"group": {
														Description: "A cluster or grouping of sources.",
														Type:        "string",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"pagerDutyImageConfigs": {
														Description: "A list of image details to attach that provide further detail about an incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "PagerDutyImageConfig attaches images to an incident",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"alt": {
																	Description: "Alt is the optional alternative text for the image.",
																	Type:        "string",
																},
																"href": {
																	Description: "Optional URL; makes the image a clickable link.",
																	Type:        "string",
																},
																"src": {
																	Description: "Src of the image being attached to the incident",
																	Type:        "string",
																},
															},
															Type: "object",
														}},
														Type: "array",
													},
													"pagerDutyLinkConfigs": {
														Description: "A list of link details to attach that provide further detail about an incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "PagerDutyLinkConfig attaches text links to an incident",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"alt": {
																	Description: "Text that describes the purpose of the link, and can be used as the link's text.",
																	Type:        "string",
																},
																"href": {
																	Description: "Href is the URL of the link to be attached",
																	Type:        "string",
																},
															},
															Type: "object",
														}},
														Type: "array",
													},
													"routingKey": {
														Description: "The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"serviceKey": {
														Description: "The secret's key that contains the PagerDuty service key (when using integration type \"Prometheus\"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"severity": {
														Description: "Severity of the incident.",
														Type:        "string",
													},
													"url": {
														Description: "The URL to send requests to.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"pushoverConfigs": {
											Description: "List of Pushover configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"expire": {
														Description: "How long your notification will continue to be retried for, unless the user acknowledges the notification.",
														Pattern:     "^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$",
														Type:        "string",
													},
													"html": {
														Description: "Whether notification message is HTML or plain text.",
														Type:        "boolean",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"message": {
														Description: "Notification message.",
														Type:        "string",
													},
													"priority": {
														Description: "Priority, see https://pushover.net/api#priority",
														Type:        "string",
													},
													"retry": {
														Description: "How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds.",
														Pattern:     "^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$",
														Type:        "string",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"sound": {
														Description: "The name of one of the sounds supported by device clients to override the user's default sound choice",
														Type:        "string",
													},
													"title": {
														Description: "Notification title.",
														Type:        "string",
													},
													"token": {
														Description: "The secret's key that contains the registered application's API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"url": {
														Description: "A supplementary URL shown alongside the message.",
														Type:        "string",
													},
													"urlTitle": {
														Description: "A title for supplementary URL, otherwise just the URL is shown",
														Type:        "string",
													},
													"userKey": {
														Description: "The secret's key that contains the recipient user's user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"slackConfigs": {
											Description: "List of Slack configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"actions": {
														Description: "A list of Slack actions that are sent with each notification.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"confirm": {
																	Description: "SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information.",
																	Properties: map[string]apiextensionsv1.JSONSchemaProps{
																		"dismissText": {Type: "string"},
																		"okText":      {Type: "string"},
																		"text": {
																			MinLength: P(int64(1)),
																			Type:      "string",
																		},
																		"title": {Type: "string"},
																	},
																	Required: []string{"text"},
																	Type:     "object",
																},
																"name":  {Type: "string"},
																"style": {Type: "string"},
																"text": {
																	MinLength: P(int64(1)),
																	Type:      "string",
																},
																"type": {
																	MinLength: P(int64(1)),
																	Type:      "string",
																},
																"url":   {Type: "string"},
																"value": {Type: "string"},
															},
															Required: []string{"text", "type"},
															Type:     "object",
														}},
														Type: "array",
													},
													"apiURL": {
														Description: "The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"callbackId": {Type: "string"},
													"channel": {
														Description: "The channel or user to send notifications to.",
														Type:        "string",
													},
													"color":    {Type: "string"},
													"fallback": {Type: "string"},
													"fields": {
														Description: "A list of Slack fields that are sent with each notification.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"short": {Type: "boolean"},
																"title": {
																	MinLength: P(int64(1)),
																	Type:      "string",
																},
																"value": {
																	MinLength: P(int64(1)),
																	Type:      "string",
																},
															},
															Required: []string{"title", "value"},
															Type:     "object",
														}},
														Type: "array",
													},
													"footer": {Type: "string"},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"iconEmoji": {Type: "string"},
													"iconURL":   {Type: "string"},
													"imageURL":  {Type: "string"},
													"linkNames": {Type: "boolean"},
													"mrkdwnIn": {
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:  "array",
													},
													"pretext": {Type: "string"},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"shortFields": {Type: "boolean"},
													"text":        {Type: "string"},
													"thumbURL":    {Type: "string"},
													"title":       {Type: "string"},
													"titleLink":   {Type: "string"},
													"username":    {Type: "string"},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"snsConfigs": {
											Description: "List of SNS configurations",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "SNSConfig configures notifications via AWS SNS. See https://prometheus.io/docs/alerting/latest/configuration/#sns_configs",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"apiURL": {
														Description: "The SNS API URL i.e. https://sns.us-east-2.amazonaws.com. If not specified, the SNS API URL from the SNS SDK will be used.",
														Type:        "string",
													},
													"attributes": {
														AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
															Allows: true,
															Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
														},
														Description: "SNS message attributes.",
														Type:        "object",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"message": {
														Description: "The message content of the SNS notification.",
														Type:        "string",
													},
													"phoneNumber": {
														Description: "Phone number if message is delivered via SMS in E.164 format. If you don't specify this value, you must specify a value for the TopicARN or TargetARN.",
														Type:        "string",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"sigv4": {
														Description: "Configures AWS's Signature Verification 4 signing process to sign requests.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"accessKey": {
																Description: "AccessKey is the AWS API key. If blank, the environment variable `AWS_ACCESS_KEY_ID` is used.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
																XMapType: P("atomic"),
															},
															"profile": {
																Description: "Profile is the named AWS profile used to authenticate.",
																Type:        "string",
															},
															"region": {
																Description: "Region is the AWS region. If blank, the region from the default credentials chain used.",
																Type:        "string",
															},
															"roleArn": {
																Description: "RoleArn is the named AWS profile used to authenticate.",
																Type:        "string",
															},
															"secretKey": {
																Description: "SecretKey is the AWS API secret. If blank, the environment variable `AWS_SECRET_ACCESS_KEY` is used.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
																XMapType: P("atomic"),
															},
														},
														Type: "object",
													},
													"subject": {
														Description: "Subject line when the message is delivered to email endpoints.",
														Type:        "string",
													},
													"targetARN": {
														Description: "The  mobile platform endpoint ARN if message is delivered via mobile notifications. If you don't specify this value, you must specify a value for the topic_arn or PhoneNumber.",
														Type:        "string",
													},
													"topicARN": {
														Description: "SNS topic ARN, i.e. arn:aws:sns:us-east-2:698519295917:My-Topic If you don't specify this value, you must specify a value for the PhoneNumber or TargetARN.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"telegramConfigs": {
											Description: "List of Telegram configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "TelegramConfig configures notifications via Telegram. See https://prometheus.io/docs/alerting/latest/configuration/#telegram_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"apiURL": {
														Description: "The Telegram API URL i.e. https://api.telegram.org. If not specified, default API URL will be used.",
														Type:        "string",
													},
													"botToken": {
														Description: "Telegram bot token The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"chatID": {
														Description: "The Telegram chat ID.",
														Format:      "int64",
														Type:        "integer",
													},
													"disableNotifications": {
														Description: "Disable telegram notifications",
														Type:        "boolean",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"message": {
														Description: "Message template",
														Type:        "string",
													},
													"parseMode": {
														Description: "Parse mode for telegram message",
														Enum:        []apiextensionsv1.JSON{{Raw: []byte("\"MarkdownV2\"")}, {Raw: []byte("\"Markdown\"")}, {Raw: []byte("\"HTML\"")}},
														Type:        "string",
													},
													"sendResolved": {
														Description: "Whether to notify about resolved alerts.",
														Type:        "boolean",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"victoropsConfigs": {
											Description: "List of VictorOps configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"apiKey": {
														Description: "The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"apiUrl": {
														Description: "The VictorOps API URL.",
														Type:        "string",
													},
													"customFields": {
														Description: "Additional custom fields for notification.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "KeyValue defines a (key, value) tuple.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"key": {
																	Description: "Key of the tuple.",
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"value": {
																	Description: "Value of the tuple.",
																	Type:        "string",
																},
															},
															Required: []string{"key", "value"},
															Type:     "object",
														}},
														Type: "array",
													},
													"entityDisplayName": {
														Description: "Contains summary of the alerted problem.",
														Type:        "string",
													},
													"httpConfig": {
														Description: "The HTTP client's configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"messageType": {
														Description: "Describes the behavior of the alert (CRITICAL, WARNING, INFO).",
														Type:        "string",
													},
													"monitoringTool": {
														Description: "The monitoring tool the state message is from.",
														Type:        "string",
													},
													"routingKey": {
														Description: "A key used to map the alert to a team.",
														Type:        "string",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"stateMessage": {
														Description: "Contains long explanation of the alerted problem.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"webhookConfigs": {
											Description: "List of webhook configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"maxAlerts": {
														Description: "Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.",
														Format:      "int32",
														Type:        "integer",
													},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"url": {
														Description: "The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined.",
														Type:        "string",
													},
													"urlSecret": {
														Description: "The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"wechatConfigs": {
											Description: "List of WeChat configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"agentID": {Type: "string"},
													"apiSecret": {
														Description: "The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"key": {
																Description: "The key of the secret to select from.  Must be a valid secret key.",
																Type:        "string",
															},
															"name": {
																Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																Type:        "string",
															},
															"optional": {
																Description: "Specify whether the Secret or its key must be defined",
																Type:        "boolean",
															},
														},
														Required: []string{"key"},
														Type:     "object",
													},
													"apiURL": {
														Description: "The WeChat API URL.",
														Type:        "string",
													},
													"corpID": {
														Description: "The corp id for authentication.",
														Type:        "string",
													},
													"httpConfig": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"authorization": {
																Description: "Authorization header configuration for the client. This is mutually exclusive with BasicAuth and is only available starting from Alertmanager v0.22+.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"credentials": {
																		Description: "The secret's key that contains the credentials of the request",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"type": {
																		Description: "Set the authentication type. Defaults to Bearer, Basic will cause an error",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
															"basicAuth": {
																Description: "BasicAuth for the client. This is mutually exclusive with Authorization. If both are defined, BasicAuth takes precedence.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service monitor namespace that contains the password for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"username": {
																		Description: "The secret in the service monitor namespace that contains the username for authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																},
																Type: "object",
															},
															"bearerTokenSecret": {
																Description: "The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"key": {
																		Description: "The key of the secret to select from.  Must be a valid secret key.",
																		Type:        "string",
																	},
																	"name": {
																		Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																		Type:        "string",
																	},
																	"optional": {
																		Description: "Specify whether the Secret or its key must be defined",
																		Type:        "boolean",
																	},
																},
																Required: []string{"key"},
																Type:     "object",
															},
															"followRedirects": {
																Description: "FollowRedirects specifies whether the client should follow HTTP 3xx redirects.",
																Type:        "boolean",
															},
															"oauth2": {
																Description: "OAuth2 client credentials used to fetch a token for the targets.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"clientId": {
																		Description: "The secret or configmap containing the OAuth2 client id",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"clientSecret": {
																		Description: "The secret containing the OAuth2 client secret",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"endpointParams": {
																		AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
																			Allows: true,
																			Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
																		},
																		Description: "Parameters to append to the token URL",
																		Type:        "object",
																	},
																	"scopes": {
																		Description: "OAuth2 scopes used for the token request",
																		Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
																		Type:        "array",
																	},
																	"tokenUrl": {
																		Description: "The URL to fetch the token from",
																		MinLength:   P(int64(1)),
																		Type:        "string",
																	},
																},
																Required: []string{"clientId", "clientSecret", "tokenUrl"},
																Type:     "object",
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tlsConfig": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Certificate authority used when verifying server certificates.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"cert": {
																		Description: "Client certificate to present when doing client-authentication.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"configMap": {
																				Description: "ConfigMap containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key to select.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the ConfigMap or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																			"secret": {
																				Description: "Secret containing data to use for the targets.",
																				Properties: map[string]apiextensionsv1.JSONSchemaProps{
																					"key": {
																						Description: "The key of the secret to select from.  Must be a valid secret key.",
																						Type:        "string",
																					},
																					"name": {
																						Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																						Type:        "string",
																					},
																					"optional": {
																						Description: "Specify whether the Secret or its key must be defined",
																						Type:        "boolean",
																					},
																				},
																				Required: []string{"key"},
																				Type:     "object",
																				XMapType: P("atomic"),
																			},
																		},
																		Type: "object",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keySecret": {
																		Description: "Secret containing the client key file for the targets.",
																		Properties: map[string]apiextensionsv1.JSONSchemaProps{
																			"key": {
																				Description: "The key of the secret to select from.  Must be a valid secret key.",
																				Type:        "string",
																			},
																			"name": {
																				Description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
																				Type:        "string",
																			},
																			"optional": {
																				Description: "Specify whether the Secret or its key must be defined",
																				Type:        "boolean",
																			},
																		},
																		Required: []string{"key"},
																		Type:     "object",
																		XMapType: P("atomic"),
																	},
																	"serverName": {
																		Description: "Used to verify the hostname for the targets.",
																		Type:        "string",
																	},
																},
																Type: "object",
															},
														},
														Type: "object",
													},
													"message": {
														Description: "API request data as defined by the WeChat API.",
														Type:        "string",
													},
													"messageType": {Type: "string"},
													"sendResolved": {
														Description: "Whether or not to notify about resolved alerts.",
														Type:        "boolean",
													},
													"toParty": {Type: "string"},
													"toTag":   {Type: "string"},
													"toUser":  {Type: "string"},
												},
												Type: "object",
											}},
											Type: "array",
										},
									},
									Required: []string{"name"},
									Type:     "object",
								}},
								Type: "array",
							},
							"route": {
								Description: "The Alertmanager route definition for alerts matching the resource's namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route.",
								Properties: map[string]apiextensionsv1.JSONSchemaProps{
									"activeTimeIntervals": {
										Description: "ActiveTimeIntervals is a list of MuteTimeInterval names when this route should be active.",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"continue": {
										Description: "Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator.",
										Type:        "boolean",
									},
									"groupBy": {
										Description: "List of labels to group by. Labels must not be repeated (unique list). Special label \"...\" (aggregate by all possible labels), if provided, must be the only element in the list.",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"groupInterval": {
										Description: "How long to wait before sending an updated notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"5m\"",
										Type:        "string",
									},
									"groupWait": {
										Description: "How long to wait before sending the initial notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"30s\"",
										Type:        "string",
									},
									"matchers": {
										Description: "List of matchers that the alert's labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: <object namespace>` matcher.",
										Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
											Description: "Matcher defines how to match on alert's labels.",
											Properties: map[string]apiextensionsv1.JSONSchemaProps{
												"matchType": {
													Description: "Match operation available with AlertManager >= v0.22.0 and takes precedence over Regex (deprecated) if non-empty.",
													Enum:        []apiextensionsv1.JSON{{Raw: []byte("\"!=\"")}, {Raw: []byte("\"=\"")}, {Raw: []byte("\"=~\"")}, {Raw: []byte("\"!~\"")}},
													Type:        "string",
												},
												"name": {
													Description: "Label to match.",
													MinLength:   P(int64(1)),
													Type:        "string",
												},
												"regex": {
													Description: "Whether to match on equality (false) or regular-expression (true). Deprecated as of AlertManager >= v0.22.0 where a user should use MatchType instead.",
													Type:        "boolean",
												},
												"value": {
													Description: "Label value to match.",
													Type:        "string",
												},
											},
											Required: []string{"name"},
											Type:     "object",
										}},
										Type: "array",
									},
									"muteTimeIntervals": {
										Description: "Note: this comment applies to the field definition above but appears below otherwise it gets included in the generated manifest. CRD schema doesn't support self-referential types for now (see https://github.com/kubernetes/kubernetes/issues/62872). We have to use an alternative type to circumvent the limitation. The downside is that the Kube API can't validate the data beyond the fact that it is a valid JSON representation. MuteTimeIntervals is a list of MuteTimeInterval names that will mute this route when matched,",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"receiver": {
										Description: "Name of the receiver for this route. If not empty, it should be listed in the `receivers` field.",
										Type:        "string",
									},
									"repeatInterval": {
										Description: "How long to wait before repeating the last notification. Must match the regular expression`^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$` Example: \"4h\"",
										Type:        "string",
									},
									"routes": {
										Description: "Child routes.",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{XPreserveUnknownFields: P(true)}},
										Type:        "array",
									},
								},
								Type: "object",
							},
						},
						Type: "object",
					},
				},
				Required: []string{"spec"},
				Type:     "object",
			}},
			Served:  true,
			Storage: true,
		}},
	},
	TypeMeta: metav1.TypeMeta{
		APIVersion: "apiextensions.k8s.io/v1",
		Kind:       "CustomResourceDefinition",
	},
}
