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

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

package vmcrd

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

var VmalertmanagerconfigsOperatorVictoriametricsComCRD = &apiextensionsv1.CustomResourceDefinition{
	ObjectMeta: metav1.ObjectMeta{
		Annotations: map[string]string{"controller-gen.kubebuilder.io/version": "v0.10.0"},
		Name:        "vmalertmanagerconfigs.operator.victoriametrics.com",
	},
	Spec: apiextensionsv1.CustomResourceDefinitionSpec{
		Group: "operator.victoriametrics.com",
		Names: apiextensionsv1.CustomResourceDefinitionNames{
			Kind:     "VMAlertmanagerConfig",
			ListKind: "VMAlertmanagerConfigList",
			Plural:   "vmalertmanagerconfigs",
			Singular: "vmalertmanagerconfig",
		},
		Scope: apiextensionsv1.ResourceScope("Namespaced"),
		Versions: []apiextensionsv1.CustomResourceDefinitionVersion{{
			Name: "v1beta1",
			Schema: &apiextensionsv1.CustomResourceValidation{OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{
				Description: "VMAlertmanagerConfig is the Schema for the vmalertmanagerconfigs API",
				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: "VMAlertmanagerConfigSpec defines configuration for VMAlertmanagerConfig",
						Properties: map[string]apiextensionsv1.JSONSchemaProps{
							"-": {Type: "string"},
							"inhibit_rules": {
								Description: "InhibitRules will only apply for 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. Note, it doesn't support deprecated alertmanager config options. 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",
										},
										"source_matchers": {
											Description: "SourceMatchers defines a list of matchers for which one or more alerts have to exist for the inhibition to take effect.",
											Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
											Type:        "array",
										},
										"target_matchers": {
											Description: "TargetMatchers defines a list of matchers that have to be fulfilled by the target alerts to be muted.",
											Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
											Type:        "array",
										},
									},
									Type: "object",
								}},
								Type: "array",
							},
							"mute_time_intervals": {
								Description: "MuteTimeInterval - global mute time See https://prometheus.io/docs/alerting/latest/configuration/#mute_time_interval",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "MuteTimeInterval for alerts",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"name": {
											Description: "Name of interval",
											Type:        "string",
										},
										"time_intervals": {
											Description: "TimeIntervals interval configuration",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "TimeInterval defines intervals of time",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"days_of_month": {
														Description: "DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted. for example, ['1:5', '-3:-1']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"location": {
														Description: "Location in golang time location form, e.g. UTC",
														Type:        "string",
													},
													"months": {
														Description: "Months  defines list of calendar months identified by a case-insentive name (e.g. ‘January’) or numeric 1. For example, ['1:3', 'may:august', 'december']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"times": {
														Description: "Times defines time range for mute",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "TimeRange  ranges inclusive of the starting time and exclusive of the end time",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"end_time": {
																	Description: "EndTime for example HH:MM",
																	Type:        "string",
																},
																"start_time": {
																	Description: "StartTime for example  HH:MM",
																	Type:        "string",
																},
															},
															Required: []string{"end_time", "start_time"},
															Type:     "object",
														}},
														Type: "array",
													},
													"weekdays": {
														Description: "Weekdays defines list of days of the week, where the week begins on Sunday and ends on Saturday.",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"years": {
														Description: "Years defines numerical list of years, ranges are accepted. For example, ['2020:2022', '2030']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
									},
									Required: []string{"time_intervals"},
									Type:     "object",
								}},
								Type: "array",
							},
							"receivers": {
								Description: "Receivers defines alert receivers. without defined Route, receivers will be skipped.",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "Receiver defines one or more notification integrations.",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"email_configs": {
											Description: "EmailConfigs defines email notification configurations.",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "EmailConfig configures notifications via Email.",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"auth_identity": {
														Description: "The identity to use for authentication.",
														Type:        "string",
													},
													"auth_password": {
														Description: "AuthPassword defines secret name and key at CRD namespace.",
														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"),
													},
													"auth_secret": {
														Description: "AuthSecret defines secrent name and key at CRD namespace. It must contain the CRAM-MD5 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"),
													},
													"auth_username": {
														Description: "The username to use for authentication.",
														Type:        "string",
													},
													"from": {
														Description: "The sender address.",
														Type:        "string",
													},
													"headers": {
														AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
															Allows: true,
															Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
														},
														Description: "Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation.",
														Type:        "object",
													},
													"hello": {
														Description: "The hostname to identify to the SMTP server.",
														Type:        "string",
													},
													"html": {
														Description: "The HTML body of the email notification.",
														Type:        "string",
													},
													"require_tls": {
														Description: "The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints.",
														Type:        "boolean",
													},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"smarthost": {
														Description: "The SMTP host through which emails are sent.",
														Type:        "string",
													},
													"text": {
														Description: "The text body of the email notification.",
														Type:        "string",
													},
													"tls_config": {
														Description: "TLS configuration",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"ca": {
																Description: "Stuct containing the CA cert to use for the targets.",
																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",
															},
															"caFile": {
																Description: "Path to the CA cert in the container to use for the targets.",
																Type:        "string",
															},
															"cert": {
																Description: "Struct containing the client cert file for the targets.",
																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",
															},
															"certFile": {
																Description: "Path to the client cert file in the container for the targets.",
																Type:        "string",
															},
															"insecureSkipVerify": {
																Description: "Disable target certificate validation.",
																Type:        "boolean",
															},
															"keyFile": {
																Description: "Path to the client key file in the container for the targets.",
																Type:        "string",
															},
															"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",
										},
										"opsgenie_configs": {
											Description: "OpsGenieConfigs defines ops genie notification 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{
													"apiURL": {
														Description: "The URL to send OpsGenie API requests to.",
														Type:        "string",
													},
													"api_key": {
														Description: "The secret's key that contains the OpsGenie API key. It must be at them same namespace as CRD",
														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"),
													},
													"description": {
														Description: "Description of the incident.",
														Type:        "string",
													},
													"details": {
														AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
															Allows: true,
															Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
														},
														Description: "A set of arbitrary key/value pairs that provide further detail about the incident.",
														Type:        "object",
													},
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"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.",
																	MinLength:   P(int64(1)),
																	Type:        "string",
																},
																"username": {
																	Description: "Username of the responder.",
																	Type:        "string",
																},
															},
															Required: []string{"type"},
															Type:     "object",
														}},
														Type: "array",
													},
													"send_resolved": {
														Description: "SendResolved controls 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",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"pagerduty_configs": {
											Description: "PagerDutyConfigs defines pager duty notification 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",
													},
													"client_url": {
														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": {
														AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
															Allows: true,
															Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
														},
														Description: "Arbitrary key/value pairs that provide further detail about the incident.",
														Type:        "object",
													},
													"group": {
														Description: "A cluster or grouping of sources.",
														Type:        "string",
													},
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"images": {
														Description: "Images to attach to the incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "ImageConfig is used to attach images to the incident. See https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event#the-images-property for more information.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"alt":    {Type: "string"},
																"href":   {Type: "string"},
																"source": {Type: "string"},
															},
															Required: []string{"source"},
															Type:     "object",
														}},
														Type: "array",
													},
													"links": {
														Description: "Links to attach to the incident.",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "LinkConfig is used to attach text links to the incident. See https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgx-send-an-alert-event#the-links-property for more information.",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"href": {Type: "string"},
																"text": {Type: "string"},
															},
															Required: []string{"href"},
															Type:     "object",
														}},
														Type: "array",
													},
													"routing_key": {
														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. It must be at them same namespace as CRD",
														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"),
													},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"service_key": {
														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. It must be at them same namespace as CRD",
														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"),
													},
													"severity": {
														Description: "Severity of the incident.",
														Type:        "string",
													},
													"url": {
														Description: "The URL to send requests to.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"pushover_configs": {
											Description: "PushoverConfigs defines push over notification 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.",
														Type:        "string",
													},
													"html": {
														Description: "Whether notification message is HTML or plain text.",
														Type:        "boolean",
													},
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"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.",
														Type:        "string",
													},
													"send_resolved": {
														Description: "SendResolved controls 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. It must be at them same namespace as CRD",
														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"),
													},
													"url": {
														Description: "A supplementary URL shown alongside the message.",
														Type:        "string",
													},
													"url_title": {
														Description: "A title for supplementary URL, otherwise just the URL is shown",
														Type:        "string",
													},
													"user_key": {
														Description: "The secret's key that contains the recipient user’s user key. It must be at them same namespace as CRD",
														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",
											}},
											Type: "array",
										},
										"slack_configs": {
											Description: "SlackConfigs defines slack notification 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{
																		"dismiss_text": {Type: "string"},
																		"ok_text":      {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",
													},
													"api_url": {
														Description: "The secret's key that contains the Slack webhook URL. It must be at them same namespace as CRD",
														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"),
													},
													"callback_id": {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: "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"},
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"icon_emoji": {Type: "string"},
													"icon_url":   {Type: "string"},
													"image_url":  {Type: "string"},
													"link_names": {Type: "boolean"},
													"mrkdwn_in": {
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:  "array",
													},
													"pretext": {Type: "string"},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"short_fields": {Type: "boolean"},
													"text":         {Type: "string"},
													"thumb_url":    {Type: "string"},
													"title":        {Type: "string"},
													"title_link":   {Type: "string"},
													"username":     {Type: "string"},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"telegram_configs": {
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"api_url": {
														Description: "APIUrl the Telegram API URL i.e. https://api.telegram.org.",
														Type:        "string",
													},
													"bot_token": {
														Description: "BotToken token for the bot https://core.telegram.org/bots/api",
														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"),
													},
													"chat_id": {
														Description: "ChatID is ID of the chat where to send the messages.",
														Type:        "integer",
													},
													"disable_notifications": {
														Description: "DisableNotifications",
														Type:        "boolean",
													},
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"message": {
														Description: "Message is templated message",
														Type:        "string",
													},
													"parse_mode": {
														Description: "ParseMode for telegram message, supported values are MarkdownV2, Markdown, Markdown and empty string for plain text.",
														Type:        "string",
													},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
												},
												Required: []string{"bot_token", "chat_id"},
												Type:     "object",
											}},
											Type: "array",
										},
										"victorops_configs": {
											Description: "VictorOpsConfigs defines victor ops notification 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{
													"api_key": {
														Description: "The secret's key that contains the API key to use when talking to the VictorOps API. It must be at them same namespace as CRD",
														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"),
													},
													"api_url": {
														Description: "The VictorOps API URL.",
														Type:        "string",
													},
													"custom_fields": {
														AdditionalProperties: &apiextensionsv1.JSONSchemaPropsOrBool{
															Allows: true,
															Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"},
														},
														Description: "Adds optional custom fields https://github.com/prometheus/alertmanager/blob/v0.24.0/config/notifiers.go#L537",
														Type:        "object",
													},
													"entity_display_name": {
														Description: "Contains summary of the alerted problem.",
														Type:        "string",
													},
													"http_config": {
														Description: "The HTTP client's configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"basic_auth": {
																Description: "TODO oAuth2 support BasicAuth for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service scrape namespace that contains the password for authentication. It must be at them same namespace as CRD",
																		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"),
																	},
																	"password_file": {
																		Description: "PasswordFile defines path to password file at disk",
																		Type:        "string",
																	},
																	"username": {
																		Description: "The secret in the service scrape namespace that contains the username for authentication. It must be at them same namespace as CRD",
																		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",
															},
															"bearer_token_file": {
																Description: "BearerTokenFile defines filename for bearer token, it must be mounted to pod.",
																Type:        "string",
															},
															"bearer_token_secret": {
																Description: "The secret's key that contains the bearer token It must be at them same namespace as CRD",
																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"),
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tls_config": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Stuct containing the CA cert to use for the targets.",
																		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",
																	},
																	"caFile": {
																		Description: "Path to the CA cert in the container to use for the targets.",
																		Type:        "string",
																	},
																	"cert": {
																		Description: "Struct containing the client cert file for the targets.",
																		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",
																	},
																	"certFile": {
																		Description: "Path to the client cert file in the container for the targets.",
																		Type:        "string",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keyFile": {
																		Description: "Path to the client key file in the container for the targets.",
																		Type:        "string",
																	},
																	"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_type": {
														Description: "Describes the behavior of the alert (CRITICAL, WARNING, INFO).",
														Type:        "string",
													},
													"monitoring_tool": {
														Description: "The monitoring tool the state message is from.",
														Type:        "string",
													},
													"routing_key": {
														Description: "A key used to map the alert to a team.",
														Type:        "string",
													},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"state_message": {
														Description: "Contains long explanation of the alerted problem.",
														Type:        "string",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
										"webhook_configs": {
											Description: "WebhookConfigs defines webhook notification 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{
													"http_config": {
														Description:            "HTTP client configuration.",
														Type:                   "object",
														XPreserveUnknownFields: P(true),
													},
													"max_alerts": {
														Description: "Maximum number of alerts to be sent per webhook message. When 0, all alerts are included.",
														Format:      "int32",
														Type:        "integer",
													},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"url": {
														Description: "URL to send requests to, one of `urlSecret` and `url` must be defined.",
														Type:        "string",
													},
													"url_secret": {
														Description: "URLSecret defines secret name and key at the CRD namespace. It must contain the webhook URL. one of `urlSecret` and `url` must be defined.",
														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",
											}},
											Type: "array",
										},
										"wechat_configs": {
											Description: "WeChatConfigs defines wechat notification 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{
													"agent_id": {Type: "string"},
													"api_secret": {
														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",
														XMapType: P("atomic"),
													},
													"api_url": {
														Description: "The WeChat API URL.",
														Type:        "string",
													},
													"corp_id": {
														Description: "The corp id for authentication.",
														Type:        "string",
													},
													"http_config": {
														Description: "HTTP client configuration.",
														Properties: map[string]apiextensionsv1.JSONSchemaProps{
															"basic_auth": {
																Description: "TODO oAuth2 support BasicAuth for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"password": {
																		Description: "The secret in the service scrape namespace that contains the password for authentication. It must be at them same namespace as CRD",
																		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"),
																	},
																	"password_file": {
																		Description: "PasswordFile defines path to password file at disk",
																		Type:        "string",
																	},
																	"username": {
																		Description: "The secret in the service scrape namespace that contains the username for authentication. It must be at them same namespace as CRD",
																		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",
															},
															"bearer_token_file": {
																Description: "BearerTokenFile defines filename for bearer token, it must be mounted to pod.",
																Type:        "string",
															},
															"bearer_token_secret": {
																Description: "The secret's key that contains the bearer token It must be at them same namespace as CRD",
																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"),
															},
															"proxyURL": {
																Description: "Optional proxy URL.",
																Type:        "string",
															},
															"tls_config": {
																Description: "TLS configuration for the client.",
																Properties: map[string]apiextensionsv1.JSONSchemaProps{
																	"ca": {
																		Description: "Stuct containing the CA cert to use for the targets.",
																		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",
																	},
																	"caFile": {
																		Description: "Path to the CA cert in the container to use for the targets.",
																		Type:        "string",
																	},
																	"cert": {
																		Description: "Struct containing the client cert file for the targets.",
																		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",
																	},
																	"certFile": {
																		Description: "Path to the client cert file in the container for the targets.",
																		Type:        "string",
																	},
																	"insecureSkipVerify": {
																		Description: "Disable target certificate validation.",
																		Type:        "boolean",
																	},
																	"keyFile": {
																		Description: "Path to the client key file in the container for the targets.",
																		Type:        "string",
																	},
																	"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",
													},
													"message_type": {Type: "string"},
													"send_resolved": {
														Description: "SendResolved controls notify about resolved alerts.",
														Type:        "boolean",
													},
													"to_party": {Type: "string"},
													"to_tag":   {Type: "string"},
													"to_user":  {Type: "string"},
												},
												Type: "object",
											}},
											Type: "array",
										},
									},
									Required: []string{"name"},
									Type:     "object",
								}},
								Type: "array",
							},
							"route": {
								Description: "Route definition for alertmanager, may include nested routes.",
								Properties: map[string]apiextensionsv1.JSONSchemaProps{
									"active_time_intervals": {
										Description: "ActiveTimeIntervals Times when the route should be active These must match the name at time_intervals",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"continue": {
										Description: "Continue indicating whether an alert should continue matching subsequent sibling nodes. It will always be true for the first-level route if disableRouteContinueEnforce for vmalertmanager not set.",
										Type:        "boolean",
									},
									"group_by": {
										Description: "List of labels to group by.",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"group_interval": {
										Description: "How long to wait before sending an updated notification.",
										Pattern:     "[0-9]+(ms|s|m|h)",
										Type:        "string",
									},
									"group_wait": {
										Description: "How long to wait before sending the initial notification.",
										Pattern:     "[0-9]+(ms|s|m|h)",
										Type:        "string",
									},
									"matchers": {
										Description: "List of matchers that the alert’s labels should match. For the first level route, the operator adds a namespace: \"CRD_NS\" matcher. https://prometheus.io/docs/alerting/latest/configuration/#matcher",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"mute_time_intervals": {
										Description: "MuteTimeIntervals for alerts",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
										Type:        "array",
									},
									"receiver": {
										Description: "Name of the receiver for this route.",
										Type:        "string",
									},
									"repeat_interval": {
										Description: "How long to wait before repeating the last notification.",
										Pattern:     "[0-9]+(ms|s|m|h)",
										Type:        "string",
									},
									"routes": {
										Description: "Child routes. https://prometheus.io/docs/alerting/latest/configuration/#route",
										Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{XPreserveUnknownFields: P(true)}},
										Type:        "array",
									},
								},
								Required: []string{"receiver"},
								Type:     "object",
							},
							"time_intervals": {
								Description: "ParsingError contents error with context if operator was failed to parse json object from kubernetes api server TimeIntervals modern config option, use it instead of  mute_time_intervals",
								Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
									Description: "MuteTimeInterval for alerts",
									Properties: map[string]apiextensionsv1.JSONSchemaProps{
										"name": {
											Description: "Name of interval",
											Type:        "string",
										},
										"time_intervals": {
											Description: "TimeIntervals interval configuration",
											Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
												Description: "TimeInterval defines intervals of time",
												Properties: map[string]apiextensionsv1.JSONSchemaProps{
													"days_of_month": {
														Description: "DayOfMonth defines list of numerical days in the month. Days begin at 1. Negative values are also accepted. for example, ['1:5', '-3:-1']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"location": {
														Description: "Location in golang time location form, e.g. UTC",
														Type:        "string",
													},
													"months": {
														Description: "Months  defines list of calendar months identified by a case-insentive name (e.g. ‘January’) or numeric 1. For example, ['1:3', 'may:august', 'december']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"times": {
														Description: "Times defines time range for mute",
														Items: &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{
															Description: "TimeRange  ranges inclusive of the starting time and exclusive of the end time",
															Properties: map[string]apiextensionsv1.JSONSchemaProps{
																"end_time": {
																	Description: "EndTime for example HH:MM",
																	Type:        "string",
																},
																"start_time": {
																	Description: "StartTime for example  HH:MM",
																	Type:        "string",
																},
															},
															Required: []string{"end_time", "start_time"},
															Type:     "object",
														}},
														Type: "array",
													},
													"weekdays": {
														Description: "Weekdays defines list of days of the week, where the week begins on Sunday and ends on Saturday.",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
													"years": {
														Description: "Years defines numerical list of years, ranges are accepted. For example, ['2020:2022', '2030']",
														Items:       &apiextensionsv1.JSONSchemaPropsOrArray{Schema: &apiextensionsv1.JSONSchemaProps{Type: "string"}},
														Type:        "array",
													},
												},
												Type: "object",
											}},
											Type: "array",
										},
									},
									Required: []string{"time_intervals"},
									Type:     "object",
								}},
								Type: "array",
							},
						},
						Type: "object",
					},
					"status": {
						Description: "VMAlertmanagerConfigStatus defines the observed state of VMAlertmanagerConfig",
						Properties: map[string]apiextensionsv1.JSONSchemaProps{"reason": {
							Description: "ErrorReason describes validation or any other errors.",
							Type:        "string",
						}},
						Type: "object",
					},
				},
				Type: "object",
			}},
			Served:       true,
			Storage:      true,
			Subresources: &apiextensionsv1.CustomResourceSubresources{},
		}},
	},
	TypeMeta: metav1.TypeMeta{
		APIVersion: "apiextensions.k8s.io/v1",
		Kind:       "CustomResourceDefinition",
	},
}
