schemas.go raw

   1  // Package v3 provides primitives to interact with the openapi HTTP API.
   2  //
   3  // Code generated by github.com/egoscale/v3/generator version v0.0.1 DO NOT EDIT.
   4  package v3
   5  
   6  import (
   7  	"net"
   8  	"time"
   9  )
  10  
  11  type AccessKeyType string
  12  
  13  const (
  14  	AccessKeyTypeRestricted   AccessKeyType = "restricted"
  15  	AccessKeyTypeUnrestricted AccessKeyType = "unrestricted"
  16  )
  17  
  18  type AccessKeyVersion string
  19  
  20  const (
  21  	AccessKeyVersionV2 AccessKeyVersion = "v2"
  22  	AccessKeyVersionV1 AccessKeyVersion = "v1"
  23  )
  24  
  25  // IAM Access Key
  26  type AccessKey struct {
  27  	// IAM Access Key
  28  	Key string `json:"key,omitempty"`
  29  	// IAM Access Key name
  30  	Name string `json:"name,omitempty"`
  31  	// IAM Access Key operations
  32  	Operations []string `json:"operations,omitempty"`
  33  	// IAM Access Key Resources
  34  	Resources []AccessKeyResource `json:"resources,omitempty"`
  35  	// IAM Access Key Secret
  36  	Secret string `json:"secret,omitempty"`
  37  	// IAM Access Key tags
  38  	Tags []string `json:"tags,omitempty"`
  39  	// IAM Access Key type
  40  	Type AccessKeyType `json:"type,omitempty"`
  41  	// IAM Access Key version
  42  	Version AccessKeyVersion `json:"version,omitempty"`
  43  }
  44  
  45  // Access key operation
  46  type AccessKeyOperation struct {
  47  	// Name of the operation
  48  	Operation string `json:"operation,omitempty"`
  49  	// Tags associated with the operation
  50  	Tags []string `json:"tags,omitempty"`
  51  }
  52  
  53  type AccessKeyResourceDomain string
  54  
  55  const (
  56  	AccessKeyResourceDomainPartner AccessKeyResourceDomain = "partner"
  57  	AccessKeyResourceDomainSOS     AccessKeyResourceDomain = "sos"
  58  )
  59  
  60  type AccessKeyResourceResourceType string
  61  
  62  const (
  63  	AccessKeyResourceResourceTypeProduct AccessKeyResourceResourceType = "product"
  64  	AccessKeyResourceResourceTypeBucket  AccessKeyResourceResourceType = "bucket"
  65  )
  66  
  67  // Access key resource
  68  type AccessKeyResource struct {
  69  	// Resource domain
  70  	Domain AccessKeyResourceDomain `json:"domain,omitempty"`
  71  	// Resource name
  72  	ResourceName string `json:"resource-name,omitempty"`
  73  	// Resource type
  74  	ResourceType AccessKeyResourceResourceType `json:"resource-type,omitempty"`
  75  }
  76  
  77  // Anti-affinity Group
  78  type AntiAffinityGroup struct {
  79  	// Anti-affinity Group description
  80  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
  81  	// Anti-affinity Group ID
  82  	ID UUID `json:"id,omitempty"`
  83  	// Anti-affinity Group instances
  84  	Instances []Instance `json:"instances,omitempty"`
  85  	// Anti-affinity Group name
  86  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
  87  }
  88  
  89  type BlockStorageSnapshotState string
  90  
  91  const (
  92  	BlockStorageSnapshotStatePartiallyDestroyed BlockStorageSnapshotState = "partially-destroyed"
  93  	BlockStorageSnapshotStateDestroying         BlockStorageSnapshotState = "destroying"
  94  	BlockStorageSnapshotStateCreating           BlockStorageSnapshotState = "creating"
  95  	BlockStorageSnapshotStateCreated            BlockStorageSnapshotState = "created"
  96  	BlockStorageSnapshotStatePromoting          BlockStorageSnapshotState = "promoting"
  97  	BlockStorageSnapshotStateError              BlockStorageSnapshotState = "error"
  98  	BlockStorageSnapshotStateDestroyed          BlockStorageSnapshotState = "destroyed"
  99  	BlockStorageSnapshotStateAllocated          BlockStorageSnapshotState = "allocated"
 100  )
 101  
 102  // Block storage snapshot
 103  type BlockStorageSnapshot struct {
 104  	// Target block storage volume
 105  	BlockStorageVolume *BlockStorageVolumeTarget `json:"block-storage-volume,omitempty"`
 106  	// Snapshot creation date
 107  	CreatedAT time.Time `json:"created-at,omitempty"`
 108  	// Snapshot ID
 109  	ID     UUID   `json:"id,omitempty"`
 110  	Labels Labels `json:"labels,omitempty"`
 111  	// Snapshot name
 112  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
 113  	// Snapshot size
 114  	Size int64 `json:"size,omitempty" validate:"omitempty,gte=1"`
 115  	// Snapshot state
 116  	State BlockStorageSnapshotState `json:"state,omitempty"`
 117  	// Original Volume size
 118  	VolumeSize int64 `json:"volume-size,omitempty" validate:"omitempty,gte=0"`
 119  }
 120  
 121  // Target block storage snapshot
 122  type BlockStorageSnapshotTarget struct {
 123  	// Block storage snapshot ID
 124  	ID UUID `json:"id,omitempty"`
 125  }
 126  
 127  type BlockStorageVolumeState string
 128  
 129  const (
 130  	BlockStorageVolumeStateSnapshotting BlockStorageVolumeState = "snapshotting"
 131  	BlockStorageVolumeStateDeleted      BlockStorageVolumeState = "deleted"
 132  	BlockStorageVolumeStateCreating     BlockStorageVolumeState = "creating"
 133  	BlockStorageVolumeStateDetached     BlockStorageVolumeState = "detached"
 134  	BlockStorageVolumeStateDeleting     BlockStorageVolumeState = "deleting"
 135  	BlockStorageVolumeStateAttaching    BlockStorageVolumeState = "attaching"
 136  	BlockStorageVolumeStateError        BlockStorageVolumeState = "error"
 137  	BlockStorageVolumeStateAttached     BlockStorageVolumeState = "attached"
 138  	BlockStorageVolumeStateDetaching    BlockStorageVolumeState = "detaching"
 139  )
 140  
 141  // Block storage volume
 142  type BlockStorageVolume struct {
 143  	// Volume snapshots, if any
 144  	BlockStorageSnapshots []BlockStorageSnapshotTarget `json:"block-storage-snapshots,omitempty"`
 145  	// Volume block size
 146  	Blocksize int64 `json:"blocksize,omitempty" validate:"omitempty,gte=0"`
 147  	// Volume creation date
 148  	CreatedAT time.Time `json:"created-at,omitempty"`
 149  	// Volume ID
 150  	ID UUID `json:"id,omitempty"`
 151  	// Target Instance
 152  	Instance *InstanceTarget `json:"instance,omitempty"`
 153  	Labels   Labels          `json:"labels,omitempty"`
 154  	// Volume name
 155  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
 156  	// Volume size
 157  	Size int64 `json:"size,omitempty" validate:"omitempty,gte=1"`
 158  	// Volume state
 159  	State BlockStorageVolumeState `json:"state,omitempty"`
 160  }
 161  
 162  // Target block storage volume
 163  type BlockStorageVolumeTarget struct {
 164  	// Block storage volume ID
 165  	ID UUID `json:"id,omitempty"`
 166  }
 167  
 168  // Deployment an AI model onto a set of GPUs
 169  type CreateDeploymentRequest struct {
 170  	// Number of GPUs (1-8)
 171  	GpuCount int64 `json:"gpu-count" validate:"required,gt=0"`
 172  	// GPU type family (e.g., gpua5000, gpu3080ti)
 173  	GpuType string `json:"gpu-type" validate:"required"`
 174  	// Optional extra inference engine server CLI args
 175  	InferenceEngineParameters []string  `json:"inference-engine-parameters,omitempty"`
 176  	Model                     *ModelRef `json:"model,omitempty"`
 177  	// Deployment name
 178  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
 179  	// Number of replicas (>=1)
 180  	Replicas int64 `json:"replicas" validate:"required,gt=0"`
 181  }
 182  
 183  // AI model
 184  type CreateModelRequest struct {
 185  	// Huggingface Token
 186  	HuggingfaceToken string `json:"huggingface-token,omitempty"`
 187  	// Model name
 188  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
 189  }
 190  
 191  // DBaaS plan backup config
 192  type DBAASBackupConfig struct {
 193  	// Interval of taking a frequent backup in service types supporting different backup schedules
 194  	FrequentIntervalMinutes int64 `json:"frequent-interval-minutes,omitempty" validate:"omitempty,gte=0"`
 195  	// Maximum age of the oldest frequent backup in service types supporting different backup schedules
 196  	FrequentOldestAgeMinutes int64 `json:"frequent-oldest-age-minutes,omitempty" validate:"omitempty,gte=0"`
 197  	// Interval of taking a frequent backup in service types supporting different backup schedules
 198  	InfrequentIntervalMinutes int64 `json:"infrequent-interval-minutes,omitempty" validate:"omitempty,gte=0"`
 199  	// Maximum age of the oldest infrequent backup in service types supporting different backup schedules
 200  	InfrequentOldestAgeMinutes int64 `json:"infrequent-oldest-age-minutes,omitempty" validate:"omitempty,gte=0"`
 201  	// The interval, in hours, at which backups are generated.
 202  	// For some services, like PostgreSQL, this is the interval
 203  	// at which full snapshots are taken and continuous incremental
 204  	// backup stream is maintained in addition to that.
 205  	Interval int64 `json:"interval,omitempty" validate:"omitempty,gt=0"`
 206  	// Maximum number of backups to keep. Zero when no backups are created.
 207  	MaxCount int64 `json:"max-count,omitempty" validate:"omitempty,gte=0"`
 208  	// Mechanism how backups can be restored. 'regular'
 209  	// means a backup is restored as is so that the system
 210  	// is restored to the state it was when the backup was generated.
 211  	// 'pitr' means point-in-time-recovery, which allows restoring the system to any state since the first available full snapshot.
 212  	RecoveryMode string `json:"recovery-mode,omitempty"`
 213  }
 214  
 215  type DBAASDatabaseName string
 216  
 217  type DBAASDatadogTag struct {
 218  	// Optional tag explanation
 219  	Comment string `json:"comment,omitempty" validate:"omitempty,lte=1024"`
 220  	// Tag value
 221  	Tag string `json:"tag" validate:"required,gte=1,lte=200"`
 222  }
 223  
 224  type DBAASEndpointDatadogCommon struct {
 225  	// Custom tags provided by user
 226  	DatadogTags []DBAASDatadogTag `json:"datadog-tags,omitempty"`
 227  	// Disable kafka consumer group metrics. Applies only when attached to kafka services.
 228  	DisableConsumerStats *bool `json:"disable-consumer-stats,omitempty"`
 229  	// Number of separate instances to fetch kafka consumer statistics with. Applies only when attached to kafka services.
 230  	KafkaConsumerCheckInstances int64 `json:"kafka-consumer-check-instances,omitempty" validate:"omitempty,gte=1,lte=100"`
 231  	// Number of seconds that datadog will wait to get consumer statistics from brokers. Applies only when attached to kafka services.
 232  	KafkaConsumerStatsTimeout int64 `json:"kafka-consumer-stats-timeout,omitempty" validate:"omitempty,gte=2,lte=300"`
 233  	// Maximum number of partition contexts to send. Applies only when attached to kafka services.
 234  	MaxPartitionContexts int64 `json:"max-partition-contexts,omitempty" validate:"omitempty,gte=200,lte=200000"`
 235  }
 236  
 237  type DBAASEndpointDatadogInputCreateSettings struct {
 238  	// Datadog API key
 239  	DatadogAPIKey string `json:"datadog-api-key" validate:"required,gte=1,lte=256"`
 240  	// Custom tags provided by user
 241  	DatadogTags []DBAASDatadogTag `json:"datadog-tags,omitempty"`
 242  	// Disable kafka consumer group metrics. Applies only when attached to kafka services.
 243  	DisableConsumerStats *bool `json:"disable-consumer-stats,omitempty"`
 244  	// Number of separate instances to fetch kafka consumer statistics with. Applies only when attached to kafka services.
 245  	KafkaConsumerCheckInstances int64 `json:"kafka-consumer-check-instances,omitempty" validate:"omitempty,gte=1,lte=100"`
 246  	// Number of seconds that datadog will wait to get consumer statistics from brokers. Applies only when attached to kafka services.
 247  	KafkaConsumerStatsTimeout int64 `json:"kafka-consumer-stats-timeout,omitempty" validate:"omitempty,gte=2,lte=300"`
 248  	// Maximum number of partition contexts to send. Applies only when attached to kafka services.
 249  	MaxPartitionContexts int64           `json:"max-partition-contexts,omitempty" validate:"omitempty,gte=200,lte=200000"`
 250  	Site                 EnumDatadogSite `json:"site" validate:"required"`
 251  }
 252  
 253  type DBAASEndpointDatadogInputCreate struct {
 254  	Settings *DBAASEndpointDatadogInputCreateSettings `json:"settings,omitempty"`
 255  }
 256  
 257  type DBAASEndpointDatadogInputUpdateSettings struct {
 258  	// Datadog API key
 259  	DatadogAPIKey string `json:"datadog-api-key" validate:"required,gte=1,lte=256"`
 260  	// Custom tags provided by user
 261  	DatadogTags []DBAASDatadogTag `json:"datadog-tags,omitempty"`
 262  	// Disable kafka consumer group metrics. Applies only when attached to kafka services.
 263  	DisableConsumerStats *bool `json:"disable-consumer-stats,omitempty"`
 264  	// Number of separate instances to fetch kafka consumer statistics with. Applies only when attached to kafka services.
 265  	KafkaConsumerCheckInstances int64 `json:"kafka-consumer-check-instances,omitempty" validate:"omitempty,gte=1,lte=100"`
 266  	// Number of seconds that datadog will wait to get consumer statistics from brokers. Applies only when attached to kafka services.
 267  	KafkaConsumerStatsTimeout int64 `json:"kafka-consumer-stats-timeout,omitempty" validate:"omitempty,gte=2,lte=300"`
 268  	// Maximum number of partition contexts to send. Applies only when attached to kafka services.
 269  	MaxPartitionContexts int64           `json:"max-partition-contexts,omitempty" validate:"omitempty,gte=200,lte=200000"`
 270  	Site                 EnumDatadogSite `json:"site,omitempty"`
 271  }
 272  
 273  type DBAASEndpointDatadogInputUpdate struct {
 274  	Settings *DBAASEndpointDatadogInputUpdateSettings `json:"settings,omitempty"`
 275  }
 276  
 277  // External integration DataDog configuration
 278  type DBAASEndpointDatadogSettingsSettings struct {
 279  	// Custom tags provided by user
 280  	DatadogTags []DBAASDatadogTag `json:"datadog-tags,omitempty"`
 281  	// Disable kafka consumer group metrics. Applies only when attached to kafka services.
 282  	DisableConsumerStats *bool `json:"disable-consumer-stats,omitempty"`
 283  	// Number of separate instances to fetch kafka consumer statistics with. Applies only when attached to kafka services.
 284  	KafkaConsumerCheckInstances int64 `json:"kafka-consumer-check-instances,omitempty" validate:"omitempty,gte=1,lte=100"`
 285  	// Number of seconds that datadog will wait to get consumer statistics from brokers. Applies only when attached to kafka services.
 286  	KafkaConsumerStatsTimeout int64 `json:"kafka-consumer-stats-timeout,omitempty" validate:"omitempty,gte=2,lte=300"`
 287  	// Maximum number of partition contexts to send. Applies only when attached to kafka services.
 288  	MaxPartitionContexts int64           `json:"max-partition-contexts,omitempty" validate:"omitempty,gte=200,lte=200000"`
 289  	Site                 EnumDatadogSite `json:"site,omitempty"`
 290  }
 291  
 292  type DBAASEndpointDatadogSettings struct {
 293  	// External integration DataDog configuration
 294  	Settings *DBAASEndpointDatadogSettingsSettings `json:"settings,omitempty"`
 295  }
 296  
 297  type DBAASEndpointElasticsearch struct {
 298  	// Maximum number of days of logs to keep
 299  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 300  	// Elasticsearch index prefix
 301  	IndexPrefix string `json:"index-prefix" validate:"required,gte=1,lte=1000"`
 302  	// Elasticsearch request timeout limit
 303  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 304  	// Elasticsearch connection URL
 305  	URL string `json:"url" validate:"required,gte=12,lte=2048"`
 306  }
 307  
 308  type DBAASEndpointElasticsearchInputCreateSettings struct {
 309  	// PEM encoded CA certificate
 310  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 311  	// Maximum number of days of logs to keep
 312  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 313  	// Elasticsearch index prefix
 314  	IndexPrefix string `json:"index-prefix" validate:"required,gte=1,lte=1000"`
 315  	// Elasticsearch request timeout limit
 316  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 317  	// Elasticsearch connection URL
 318  	URL string `json:"url" validate:"required,gte=12,lte=2048"`
 319  }
 320  
 321  type DBAASEndpointElasticsearchInputCreate struct {
 322  	Settings *DBAASEndpointElasticsearchInputCreateSettings `json:"settings,omitempty"`
 323  }
 324  
 325  type DBAASEndpointElasticsearchInputUpdateSettings struct {
 326  	// PEM encoded CA certificate
 327  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 328  	// Maximum number of days of logs to keep
 329  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 330  	// Elasticsearch index prefix
 331  	IndexPrefix string `json:"index-prefix,omitempty" validate:"omitempty,gte=1,lte=1000"`
 332  	// Elasticsearch request timeout limit
 333  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 334  	// Elasticsearch connection URL
 335  	URL string `json:"url,omitempty" validate:"omitempty,gte=12,lte=2048"`
 336  }
 337  
 338  type DBAASEndpointElasticsearchInputUpdate struct {
 339  	Settings *DBAASEndpointElasticsearchInputUpdateSettings `json:"settings,omitempty"`
 340  }
 341  
 342  type DBAASEndpointElasticsearchOptionalFields struct {
 343  	// Maximum number of days of logs to keep
 344  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 345  	// Elasticsearch index prefix
 346  	IndexPrefix string `json:"index-prefix,omitempty" validate:"omitempty,gte=1,lte=1000"`
 347  	// Elasticsearch request timeout limit
 348  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 349  	// Elasticsearch connection URL
 350  	URL string `json:"url,omitempty" validate:"omitempty,gte=12,lte=2048"`
 351  }
 352  
 353  type DBAASEndpointElasticsearchOutput struct {
 354  	// External integration endpoint id
 355  	ID UUID `json:"id,omitempty"`
 356  	// External integration endpoint name
 357  	Name     string                                    `json:"name,omitempty"`
 358  	Settings *DBAASEndpointElasticsearchOptionalFields `json:"settings,omitempty"`
 359  	Type     EnumExternalEndpointTypes                 `json:"type,omitempty"`
 360  }
 361  
 362  type DBAASEndpointElasticsearchSecrets struct {
 363  	// PEM encoded CA certificate
 364  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 365  }
 366  
 367  // External integration Prometheus configuration
 368  type DBAASEndpointExternalPrometheusOutputSettings struct {
 369  	// Prometheus basic authentication username
 370  	BasicAuthUsername string `json:"basic-auth-username,omitempty" validate:"omitempty,gte=5,lte=32"`
 371  }
 372  
 373  type DBAASEndpointExternalPrometheusOutput struct {
 374  	// External integration endpoint id
 375  	ID UUID `json:"id,omitempty"`
 376  	// External integration endpoint name
 377  	Name string `json:"name,omitempty"`
 378  	// External integration Prometheus configuration
 379  	Settings *DBAASEndpointExternalPrometheusOutputSettings `json:"settings,omitempty"`
 380  	Type     EnumExternalEndpointTypes                      `json:"type,omitempty"`
 381  }
 382  
 383  type DBAASEndpointOpensearch struct {
 384  	// Maximum number of days of logs to keep
 385  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 386  	// OpenSearch index prefix
 387  	IndexPrefix string `json:"index-prefix" validate:"required,gte=1,lte=1000"`
 388  	// OpenSearch request timeout limit
 389  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 390  	// OpenSearch connection URL
 391  	URL string `json:"url" validate:"required,gte=12,lte=2048"`
 392  }
 393  
 394  type DBAASEndpointOpensearchInputCreateSettings struct {
 395  	// PEM encoded CA certificate
 396  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 397  	// Maximum number of days of logs to keep
 398  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 399  	// OpenSearch index prefix
 400  	IndexPrefix string `json:"index-prefix" validate:"required,gte=1,lte=1000"`
 401  	// OpenSearch request timeout limit
 402  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 403  	// OpenSearch connection URL
 404  	URL string `json:"url" validate:"required,gte=12,lte=2048"`
 405  }
 406  
 407  type DBAASEndpointOpensearchInputCreate struct {
 408  	Settings *DBAASEndpointOpensearchInputCreateSettings `json:"settings,omitempty"`
 409  }
 410  
 411  type DBAASEndpointOpensearchInputUpdateSettings struct {
 412  	// PEM encoded CA certificate
 413  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 414  	// Maximum number of days of logs to keep
 415  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 416  	// OpenSearch index prefix
 417  	IndexPrefix string `json:"index-prefix,omitempty" validate:"omitempty,gte=1,lte=1000"`
 418  	// OpenSearch request timeout limit
 419  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 420  	// OpenSearch connection URL
 421  	URL string `json:"url,omitempty" validate:"omitempty,gte=12,lte=2048"`
 422  }
 423  
 424  type DBAASEndpointOpensearchInputUpdate struct {
 425  	Settings *DBAASEndpointOpensearchInputUpdateSettings `json:"settings,omitempty"`
 426  }
 427  
 428  type DBAASEndpointOpensearchOptionalFields struct {
 429  	// Maximum number of days of logs to keep
 430  	IndexDaysMax int64 `json:"index-days-max,omitempty" validate:"omitempty,gte=1,lte=10000"`
 431  	// OpenSearch index prefix
 432  	IndexPrefix string `json:"index-prefix,omitempty" validate:"omitempty,gte=1,lte=1000"`
 433  	// OpenSearch request timeout limit
 434  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=10,lte=120"`
 435  	// OpenSearch connection URL
 436  	URL string `json:"url,omitempty" validate:"omitempty,gte=12,lte=2048"`
 437  }
 438  
 439  type DBAASEndpointOpensearchOutput struct {
 440  	// External integration endpoint id
 441  	ID UUID `json:"id,omitempty"`
 442  	// External integration endpoint name
 443  	Name     string                                 `json:"name,omitempty"`
 444  	Settings *DBAASEndpointOpensearchOptionalFields `json:"settings,omitempty"`
 445  	Type     EnumExternalEndpointTypes              `json:"type,omitempty"`
 446  }
 447  
 448  type DBAASEndpointOpensearchSecrets struct {
 449  	// PEM encoded CA certificate
 450  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 451  }
 452  
 453  type DBAASEndpointPrometheus struct {
 454  	// Prometheus basic authentication username
 455  	BasicAuthUsername string `json:"basic-auth-username,omitempty" validate:"omitempty,gte=5,lte=32"`
 456  }
 457  
 458  type DBAASEndpointPrometheusPayloadSettings struct {
 459  	// Prometheus basic authentication password
 460  	BasicAuthPassword string `json:"basic-auth-password,omitempty" validate:"omitempty,gte=8,lte=64"`
 461  	// Prometheus basic authentication username
 462  	BasicAuthUsername string `json:"basic-auth-username,omitempty" validate:"omitempty,gte=5,lte=32"`
 463  }
 464  
 465  type DBAASEndpointPrometheusPayload struct {
 466  	Settings *DBAASEndpointPrometheusPayloadSettings `json:"settings,omitempty"`
 467  }
 468  
 469  type DBAASEndpointPrometheusSecrets struct {
 470  	// Prometheus basic authentication password
 471  	BasicAuthPassword string `json:"basic-auth-password,omitempty" validate:"omitempty,gte=8,lte=64"`
 472  }
 473  
 474  type DBAASEndpointRsyslog struct {
 475  	Format EnumRsyslogFormat `json:"format" validate:"required"`
 476  	// Custom syslog message format
 477  	Logline string `json:"logline,omitempty" validate:"omitempty,gte=1,lte=512"`
 478  	// Rsyslog max message size
 479  	MaxMessageSize int64 `json:"max-message-size,omitempty" validate:"omitempty,gte=2048,lte=2.147483647e+09"`
 480  	// Rsyslog server port
 481  	Port int64 `json:"port" validate:"required,gte=1,lte=65535"`
 482  	// Structured data block for log message
 483  	SD string `json:"sd,omitempty" validate:"omitempty,lte=1024"`
 484  	// Rsyslog server IP address or hostname
 485  	Server string `json:"server" validate:"required,gte=4,lte=255"`
 486  	// Require TLS
 487  	Tls *bool `json:"tls" validate:"required"`
 488  }
 489  
 490  type DBAASEndpointRsyslogInputCreateSettings struct {
 491  	// PEM encoded CA certificate
 492  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 493  	// PEM encoded client certificate
 494  	Cert   string            `json:"cert,omitempty" validate:"omitempty,lte=16384"`
 495  	Format EnumRsyslogFormat `json:"format" validate:"required"`
 496  	// PEM encoded client key
 497  	Key string `json:"key,omitempty" validate:"omitempty,lte=16384"`
 498  	// Custom syslog message format
 499  	Logline string `json:"logline,omitempty" validate:"omitempty,gte=1,lte=512"`
 500  	// Rsyslog max message size
 501  	MaxMessageSize int64 `json:"max-message-size,omitempty" validate:"omitempty,gte=2048,lte=2.147483647e+09"`
 502  	// Rsyslog server port
 503  	Port int64 `json:"port" validate:"required,gte=1,lte=65535"`
 504  	// Structured data block for log message
 505  	SD string `json:"sd,omitempty" validate:"omitempty,lte=1024"`
 506  	// Rsyslog server IP address or hostname
 507  	Server string `json:"server" validate:"required,gte=4,lte=255"`
 508  	// Require TLS
 509  	Tls *bool `json:"tls" validate:"required"`
 510  }
 511  
 512  type DBAASEndpointRsyslogInputCreate struct {
 513  	Settings *DBAASEndpointRsyslogInputCreateSettings `json:"settings,omitempty"`
 514  }
 515  
 516  type DBAASEndpointRsyslogInputUpdateSettings struct {
 517  	// PEM encoded CA certificate
 518  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 519  	// PEM encoded client certificate
 520  	Cert   string            `json:"cert,omitempty" validate:"omitempty,lte=16384"`
 521  	Format EnumRsyslogFormat `json:"format,omitempty"`
 522  	// PEM encoded client key
 523  	Key string `json:"key,omitempty" validate:"omitempty,lte=16384"`
 524  	// Custom syslog message format
 525  	Logline string `json:"logline,omitempty" validate:"omitempty,gte=1,lte=512"`
 526  	// Rsyslog max message size
 527  	MaxMessageSize int64 `json:"max-message-size,omitempty" validate:"omitempty,gte=2048,lte=2.147483647e+09"`
 528  	// Rsyslog server port
 529  	Port int64 `json:"port,omitempty" validate:"omitempty,gte=1,lte=65535"`
 530  	// Structured data block for log message
 531  	SD string `json:"sd,omitempty" validate:"omitempty,lte=1024"`
 532  	// Rsyslog server IP address or hostname
 533  	Server string `json:"server,omitempty" validate:"omitempty,gte=4,lte=255"`
 534  	// Require TLS
 535  	Tls *bool `json:"tls,omitempty"`
 536  }
 537  
 538  type DBAASEndpointRsyslogInputUpdate struct {
 539  	Settings *DBAASEndpointRsyslogInputUpdateSettings `json:"settings,omitempty"`
 540  }
 541  
 542  type DBAASEndpointRsyslogOptionalFields struct {
 543  	Format EnumRsyslogFormat `json:"format,omitempty"`
 544  	// Custom syslog message format
 545  	Logline string `json:"logline,omitempty" validate:"omitempty,gte=1,lte=512"`
 546  	// Rsyslog max message size
 547  	MaxMessageSize int64 `json:"max-message-size,omitempty" validate:"omitempty,gte=2048,lte=2.147483647e+09"`
 548  	// Rsyslog server port
 549  	Port int64 `json:"port,omitempty" validate:"omitempty,gte=1,lte=65535"`
 550  	// Structured data block for log message
 551  	SD string `json:"sd,omitempty" validate:"omitempty,lte=1024"`
 552  	// Rsyslog server IP address or hostname
 553  	Server string `json:"server,omitempty" validate:"omitempty,gte=4,lte=255"`
 554  	// Require TLS
 555  	Tls *bool `json:"tls,omitempty"`
 556  }
 557  
 558  type DBAASEndpointRsyslogSecrets struct {
 559  	// PEM encoded CA certificate
 560  	CA string `json:"ca,omitempty" validate:"omitempty,lte=16384"`
 561  	// PEM encoded client certificate
 562  	Cert string `json:"cert,omitempty" validate:"omitempty,lte=16384"`
 563  	// PEM encoded client key
 564  	Key string `json:"key,omitempty" validate:"omitempty,lte=16384"`
 565  }
 566  
 567  type DBAASExternalEndpoint struct {
 568  	// External integration endpoint id
 569  	ID UUID `json:"id,omitempty"`
 570  	// External integration endpoint name
 571  	Name string                    `json:"name,omitempty"`
 572  	Type EnumExternalEndpointTypes `json:"type,omitempty"`
 573  }
 574  
 575  // External integration DataDog configuration
 576  type DBAASExternalEndpointDatadogOutputSettings struct {
 577  	// Custom tags provided by user
 578  	DatadogTags []DBAASDatadogTag `json:"datadog-tags,omitempty"`
 579  	// Disable kafka consumer group metrics. Applies only when attached to kafka services.
 580  	DisableConsumerStats *bool `json:"disable-consumer-stats,omitempty"`
 581  	// Number of separate instances to fetch kafka consumer statistics with. Applies only when attached to kafka services.
 582  	KafkaConsumerCheckInstances int64 `json:"kafka-consumer-check-instances,omitempty" validate:"omitempty,gte=1,lte=100"`
 583  	// Number of seconds that datadog will wait to get consumer statistics from brokers. Applies only when attached to kafka services.
 584  	KafkaConsumerStatsTimeout int64 `json:"kafka-consumer-stats-timeout,omitempty" validate:"omitempty,gte=2,lte=300"`
 585  	// Maximum number of partition contexts to send. Applies only when attached to kafka services.
 586  	MaxPartitionContexts int64           `json:"max-partition-contexts,omitempty" validate:"omitempty,gte=200,lte=200000"`
 587  	Site                 EnumDatadogSite `json:"site,omitempty"`
 588  }
 589  
 590  type DBAASExternalEndpointDatadogOutput struct {
 591  	// External integration endpoint id
 592  	ID UUID `json:"id,omitempty"`
 593  	// External integration endpoint name
 594  	Name string `json:"name,omitempty"`
 595  	// External integration DataDog configuration
 596  	Settings *DBAASExternalEndpointDatadogOutputSettings `json:"settings,omitempty"`
 597  	Type     EnumExternalEndpointTypes                   `json:"type,omitempty"`
 598  }
 599  
 600  type DBAASExternalEndpointRsyslogOutput struct {
 601  	// External integration endpoint id
 602  	ID UUID `json:"id,omitempty"`
 603  	// External integration endpoint name
 604  	Name     string                              `json:"name,omitempty"`
 605  	Settings *DBAASEndpointRsyslogOptionalFields `json:"settings,omitempty"`
 606  	Type     EnumExternalEndpointTypes           `json:"type,omitempty"`
 607  }
 608  
 609  // Integrations with other services
 610  type DBAASExternalIntegration struct {
 611  	// Description of the integration
 612  	Description string `json:"description" validate:"required"`
 613  	// External destination endpoint id
 614  	DestEndpointID string `json:"dest-endpoint-id,omitempty"`
 615  	// External destination endpoint name
 616  	DestEndpointName string `json:"dest-endpoint-name,omitempty"`
 617  	// Endpoint integration UUID
 618  	IntegrationID UUID `json:"integration-id,omitempty"`
 619  	// DBaaS source service name
 620  	SourceServiceName string               `json:"source-service-name" validate:"required"`
 621  	SourceServiceType DBAASServiceTypeName `json:"source-service-type" validate:"required,gte=0,lte=64"`
 622  	// Integration status
 623  	Status string                    `json:"status,omitempty"`
 624  	Type   EnumExternalEndpointTypes `json:"type" validate:"required"`
 625  }
 626  
 627  type DBAASIntegration struct {
 628  	// Description of the integration
 629  	Description string `json:"description,omitempty"`
 630  	// Destination service name
 631  	Dest string `json:"dest,omitempty"`
 632  	// Integration id
 633  	ID UUID `json:"id,omitempty"`
 634  	// Whether the integration is active or not
 635  	ISActive *bool `json:"is-active,omitempty"`
 636  	// Whether the integration is enabled or not
 637  	ISEnabled *bool `json:"is-enabled,omitempty"`
 638  	// Integration settings
 639  	Settings map[string]any `json:"settings,omitempty"`
 640  	// Source service name
 641  	Source string `json:"source,omitempty"`
 642  	// Integration status
 643  	Status string `json:"status,omitempty"`
 644  	// Integration type
 645  	Type string `json:"type,omitempty"`
 646  }
 647  
 648  type DBAASIntegrationSettingsDatadog struct {
 649  	// Database monitoring: view query metrics, explain plans, and execution details. Correlate queries with host metrics.
 650  	DatadogDbmEnabled *bool `json:"datadog-dbm-enabled,omitempty"`
 651  	// Integrate PgBouncer with Datadog to track connection pool metrics and monitor application traffic.
 652  	DatadogPgbouncerEnabled *bool `json:"datadog-pgbouncer-enabled,omitempty"`
 653  }
 654  
 655  // A JSON schema of additional settings of the integration.
 656  type DBAASIntegrationTypeSettings struct {
 657  	AdditionalProperties *bool          `json:"additionalProperties,omitempty"`
 658  	Properties           map[string]any `json:"properties,omitempty"`
 659  	Title                string         `json:"title,omitempty"`
 660  	Type                 string         `json:"type,omitempty"`
 661  }
 662  
 663  type DBAASIntegrationType struct {
 664  	// The description of the destination service types.
 665  	DestDescription string `json:"dest-description,omitempty"`
 666  	// A list of the destination service types the integration supports.
 667  	DestServiceTypes []string `json:"dest-service-types,omitempty"`
 668  	// A JSON schema of additional settings of the integration.
 669  	Settings *DBAASIntegrationTypeSettings `json:"settings,omitempty"`
 670  	// The description of the source service types.
 671  	SourceDescription string `json:"source-description,omitempty"`
 672  	// A list of the source service types the integration supports.
 673  	SourceServiceTypes []string `json:"source-service-types,omitempty"`
 674  	// The type of the integration.
 675  	Type string `json:"type,omitempty"`
 676  }
 677  
 678  type DBAASKafkaAclID string
 679  
 680  type DBAASKafkaAcls struct {
 681  	SchemaRegistryAcl []DBAASKafkaSchemaRegistryAclEntry `json:"schema-registry-acl,omitempty"`
 682  	TopicAcl          []DBAASKafkaTopicAclEntry          `json:"topic-acl,omitempty"`
 683  }
 684  
 685  type DBAASKafkaSchemaRegistryAclEntryPermission string
 686  
 687  const (
 688  	DBAASKafkaSchemaRegistryAclEntryPermissionSchemaRegistryRead  DBAASKafkaSchemaRegistryAclEntryPermission = "schema_registry_read"
 689  	DBAASKafkaSchemaRegistryAclEntryPermissionSchemaRegistryWrite DBAASKafkaSchemaRegistryAclEntryPermission = "schema_registry_write"
 690  )
 691  
 692  type DBAASKafkaSchemaRegistryAclEntry struct {
 693  	ID DBAASKafkaAclID `json:"id,omitempty" validate:"omitempty,gte=1,lte=40"`
 694  	// Kafka Schema Registry permission
 695  	Permission DBAASKafkaSchemaRegistryAclEntryPermission `json:"permission" validate:"required"`
 696  	// Kafka Schema Registry name or pattern
 697  	Resource string `json:"resource" validate:"required,gte=1,lte=249"`
 698  	// Kafka username or username pattern
 699  	Username string `json:"username" validate:"required,gte=1,lte=64"`
 700  }
 701  
 702  type DBAASKafkaTopicAclEntryPermission string
 703  
 704  const (
 705  	DBAASKafkaTopicAclEntryPermissionAdmin     DBAASKafkaTopicAclEntryPermission = "admin"
 706  	DBAASKafkaTopicAclEntryPermissionRead      DBAASKafkaTopicAclEntryPermission = "read"
 707  	DBAASKafkaTopicAclEntryPermissionReadwrite DBAASKafkaTopicAclEntryPermission = "readwrite"
 708  	DBAASKafkaTopicAclEntryPermissionWrite     DBAASKafkaTopicAclEntryPermission = "write"
 709  )
 710  
 711  type DBAASKafkaTopicAclEntry struct {
 712  	ID DBAASKafkaAclID `json:"id,omitempty" validate:"omitempty,gte=1,lte=40"`
 713  	// Kafka permission
 714  	Permission DBAASKafkaTopicAclEntryPermission `json:"permission" validate:"required"`
 715  	// Kafka topic name or pattern
 716  	Topic string `json:"topic" validate:"required,gte=1,lte=249"`
 717  	// Kafka username or username pattern
 718  	Username string `json:"username" validate:"required,gte=1,lte=64"`
 719  }
 720  
 721  type DBAASMigrationStatusDetails struct {
 722  	// Migrated db name
 723  	Dbname string `json:"dbname,omitempty"`
 724  	// Error message in case that migration has failed
 725  	Error string `json:"error,omitempty"`
 726  	// Migration method
 727  	Method string              `json:"method,omitempty"`
 728  	Status EnumMigrationStatus `json:"status,omitempty"`
 729  }
 730  
 731  type DBAASMigrationStatus struct {
 732  	// Migration status per database
 733  	Details []DBAASMigrationStatusDetails `json:"details,omitempty"`
 734  	// Error message in case that migration has failed
 735  	Error string `json:"error,omitempty"`
 736  	// Migration method. Empty in case of multiple methods or error
 737  	Method string `json:"method,omitempty"`
 738  	// Migration status
 739  	Status string `json:"status,omitempty"`
 740  }
 741  
 742  type DBAASMysqlDatabaseName string
 743  
 744  type DBAASNodeStateRole string
 745  
 746  const (
 747  	DBAASNodeStateRoleStandby     DBAASNodeStateRole = "standby"
 748  	DBAASNodeStateRoleMaster      DBAASNodeStateRole = "master"
 749  	DBAASNodeStateRoleReadReplica DBAASNodeStateRole = "read-replica"
 750  )
 751  
 752  type DBAASNodeStateState string
 753  
 754  const (
 755  	DBAASNodeStateStateLeaving     DBAASNodeStateState = "leaving"
 756  	DBAASNodeStateStateRunning     DBAASNodeStateState = "running"
 757  	DBAASNodeStateStateSyncingData DBAASNodeStateState = "syncing_data"
 758  	DBAASNodeStateStateSettingUPVm DBAASNodeStateState = "setting_up_vm"
 759  	DBAASNodeStateStateUnknown     DBAASNodeStateState = "unknown"
 760  )
 761  
 762  // Automatic maintenance settings
 763  type DBAASNodeState struct {
 764  	// Name of the service node
 765  	Name string `json:"name" validate:"required"`
 766  	// Extra information regarding the progress for current state
 767  	ProgressUpdates []DBAASNodeStateProgressUpdate `json:"progress-updates,omitempty"`
 768  	// Role of this node. Only returned for a subset of service types
 769  	Role DBAASNodeStateRole `json:"role,omitempty"`
 770  	// Current state of the service node
 771  	State DBAASNodeStateState `json:"state" validate:"required"`
 772  }
 773  
 774  type DBAASNodeStateProgressUpdatePhase string
 775  
 776  const (
 777  	DBAASNodeStateProgressUpdatePhaseStream     DBAASNodeStateProgressUpdatePhase = "stream"
 778  	DBAASNodeStateProgressUpdatePhaseBasebackup DBAASNodeStateProgressUpdatePhase = "basebackup"
 779  	DBAASNodeStateProgressUpdatePhasePrepare    DBAASNodeStateProgressUpdatePhase = "prepare"
 780  	DBAASNodeStateProgressUpdatePhaseFinalize   DBAASNodeStateProgressUpdatePhase = "finalize"
 781  )
 782  
 783  // Extra information regarding the progress for current state
 784  type DBAASNodeStateProgressUpdate struct {
 785  	// Indicates whether this phase has been completed or not
 786  	Completed *bool `json:"completed" validate:"required"`
 787  	// Current progress for this phase. May be missing or null.
 788  	Current int64 `json:"current,omitempty" validate:"omitempty,gte=0"`
 789  	// Maximum progress value for this phase. May be missing or null. May change.
 790  	Max int64 `json:"max,omitempty" validate:"omitempty,gte=0"`
 791  	// Minimum progress value for this phase. May be missing or null.
 792  	Min int64 `json:"min,omitempty" validate:"omitempty,gte=0"`
 793  	// Key identifying this phase
 794  	Phase DBAASNodeStateProgressUpdatePhase `json:"phase" validate:"required"`
 795  	// Unit for current/min/max values. New units may be added.
 796  	// If null should be treated as generic unit
 797  	Unit string `json:"unit,omitempty"`
 798  }
 799  
 800  type DBAASOpensearchAclConfigAclsRules struct {
 801  	// OpenSearch index pattern
 802  	Index      string                       `json:"index" validate:"required,lte=249"`
 803  	Permission EnumOpensearchRulePermission `json:"permission,omitempty"`
 804  }
 805  
 806  type DBAASOpensearchAclConfigAcls struct {
 807  	Rules    []DBAASOpensearchAclConfigAclsRules `json:"rules,omitempty"`
 808  	Username DBAASUserUsername                   `json:"username,omitempty" validate:"omitempty,gte=1,lte=64"`
 809  }
 810  
 811  type DBAASOpensearchAclConfig struct {
 812  	// Enable OpenSearch ACLs. When disabled authenticated service users have unrestricted access.
 813  	AclEnabled *bool `json:"acl-enabled,omitempty"`
 814  	// List of OpenSearch ACLs
 815  	Acls []DBAASOpensearchAclConfigAcls `json:"acls,omitempty"`
 816  	// Enable to enforce index rules in a limited fashion for requests that use the _mget, _msearch, and _bulk APIs
 817  	ExtendedAclEnabled *bool `json:"extended-acl-enabled,omitempty"`
 818  }
 819  
 820  type DBAASPGDatabaseName string
 821  
 822  type DBAASPGPoolName string
 823  
 824  type DBAASPGPoolSize int64
 825  
 826  type DBAASPGPoolUsername string
 827  
 828  type DBAASPGTargetVersions string
 829  
 830  const (
 831  	DBAASPGTargetVersions14 DBAASPGTargetVersions = "14"
 832  	DBAASPGTargetVersions17 DBAASPGTargetVersions = "17"
 833  	DBAASPGTargetVersions15 DBAASPGTargetVersions = "15"
 834  	DBAASPGTargetVersions18 DBAASPGTargetVersions = "18"
 835  	DBAASPGTargetVersions13 DBAASPGTargetVersions = "13"
 836  	DBAASPGTargetVersions16 DBAASPGTargetVersions = "16"
 837  )
 838  
 839  // DBaaS plan
 840  type DBAASPlan struct {
 841  	// Requires authorization or publicly available
 842  	Authorized *bool `json:"authorized,omitempty"`
 843  	// DBaaS plan backup config
 844  	BackupConfig *DBAASBackupConfig `json:"backup-config,omitempty"`
 845  	// DBaaS plan disk space
 846  	DiskSpace int64 `json:"disk-space,omitempty"`
 847  	// Instance family subset which the service can use
 848  	Family string `json:"family,omitempty"`
 849  	// DBaaS plan max memory allocated percentage
 850  	MaxMemoryPercent int64 `json:"max-memory-percent,omitempty" validate:"omitempty,gt=0"`
 851  	// DBaaS plan name
 852  	Name string `json:"name,omitempty"`
 853  	// DBaaS plan node count
 854  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gt=0"`
 855  	// DBaaS plan CPU count per node
 856  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gt=0"`
 857  	// DBaaS plan memory count per node
 858  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gt=0"`
 859  	// Zones where the plan is available
 860  	Zones []string `json:"zones,omitempty"`
 861  }
 862  
 863  type DBAASPostgresUsersUsers struct {
 864  	AllowReplication *bool             `json:"allow-replication,omitempty"`
 865  	Username         DBAASUserUsername `json:"username" validate:"required,gte=1,lte=64"`
 866  }
 867  
 868  type DBAASPostgresUsers struct {
 869  	Users []DBAASPostgresUsersUsers `json:"users,omitempty"`
 870  }
 871  
 872  // List of backups for the service
 873  type DBAASServiceBackup struct {
 874  	// Internal name of this backup
 875  	BackupName string `json:"backup-name" validate:"required"`
 876  	// Backup timestamp (ISO 8601)
 877  	BackupTime time.Time `json:"backup-time" validate:"required"`
 878  	// Backup's original size before compression
 879  	DataSize int64 `json:"data-size" validate:"required,gte=0"`
 880  }
 881  
 882  type DBAASServiceCommon struct {
 883  	// Service creation timestamp (ISO 8601)
 884  	CreatedAT time.Time `json:"created-at,omitempty"`
 885  	// TODO UNIT disk space for data storage
 886  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
 887  	// Service integrations
 888  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
 889  	Name         DBAASServiceName   `json:"name" validate:"required,gte=0,lte=63"`
 890  	// Number of service nodes in the active plan
 891  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
 892  	// Number of CPUs for each node
 893  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
 894  	// TODO UNIT of memory for each node
 895  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
 896  	// Service notifications
 897  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
 898  	// Subscription plan
 899  	Plan  string           `json:"plan" validate:"required"`
 900  	State EnumServiceState `json:"state,omitempty"`
 901  	// Service is protected against termination and powering off
 902  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
 903  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
 904  	// Service last update timestamp (ISO 8601)
 905  	UpdatedAT time.Time `json:"updated-at,omitempty"`
 906  	// The zone where the service is running
 907  	Zone string `json:"zone,omitempty"`
 908  }
 909  
 910  type DBAASServiceComponentsRoute string
 911  
 912  const (
 913  	DBAASServiceComponentsRouteDynamic     DBAASServiceComponentsRoute = "dynamic"
 914  	DBAASServiceComponentsRoutePrivate     DBAASServiceComponentsRoute = "private"
 915  	DBAASServiceComponentsRoutePublic      DBAASServiceComponentsRoute = "public"
 916  	DBAASServiceComponentsRoutePrivatelink DBAASServiceComponentsRoute = "privatelink"
 917  )
 918  
 919  type DBAASServiceComponentsUsage string
 920  
 921  const (
 922  	DBAASServiceComponentsUsagePrimary DBAASServiceComponentsUsage = "primary"
 923  	DBAASServiceComponentsUsageReplica DBAASServiceComponentsUsage = "replica"
 924  )
 925  
 926  // Service component information objects
 927  type DBAASServiceComponents struct {
 928  	// Service component name
 929  	Component string `json:"component" validate:"required"`
 930  	// DNS name for connecting to the service component
 931  	Host                      string              `json:"host" validate:"required"`
 932  	KafkaAuthenticationMethod EnumKafkaAuthMethod `json:"kafka-authentication-method,omitempty"`
 933  	// Path component of the service URL (useful only if service component is HTTP or HTTPS endpoint)
 934  	Path string `json:"path,omitempty"`
 935  	// Port number for connecting to the service component
 936  	Port int64 `json:"port" validate:"required,gte=0,lte=65535"`
 937  	// Network access route
 938  	Route DBAASServiceComponentsRoute `json:"route" validate:"required"`
 939  	// Whether the endpoint is encrypted or accepts plaintext.
 940  	// By default endpoints are always encrypted and
 941  	// this property is only included for service components that may disable encryption.
 942  	SSL *bool `json:"ssl,omitempty"`
 943  	// DNS usage name
 944  	Usage DBAASServiceComponentsUsage `json:"usage" validate:"required"`
 945  }
 946  
 947  type DBAASServiceGrafanaComponents struct {
 948  	// Service component name
 949  	Component string `json:"component" validate:"required"`
 950  	// DNS name for connecting to the service component
 951  	Host string `json:"host" validate:"required"`
 952  	// Port number for connecting to the service component
 953  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
 954  	Route EnumComponentRoute `json:"route" validate:"required"`
 955  	Usage EnumComponentUsage `json:"usage" validate:"required"`
 956  }
 957  
 958  // Grafana connection information properties
 959  type DBAASServiceGrafanaConnectionInfo struct {
 960  	Password string `json:"password,omitempty"`
 961  	URI      string `json:"uri,omitempty"`
 962  	Username string `json:"username,omitempty"`
 963  }
 964  
 965  // Prometheus integration URI
 966  type DBAASServiceGrafanaPrometheusURI struct {
 967  	Host string `json:"host,omitempty"`
 968  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
 969  }
 970  
 971  type DBAASServiceGrafanaUsers struct {
 972  	Password string `json:"password,omitempty"`
 973  	Type     string `json:"type,omitempty"`
 974  	Username string `json:"username,omitempty"`
 975  }
 976  
 977  type DBAASServiceGrafana struct {
 978  	// List of backups for the service
 979  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
 980  	// Service component information objects
 981  	Components []DBAASServiceGrafanaComponents `json:"components,omitempty"`
 982  	// Grafana connection information properties
 983  	ConnectionInfo *DBAASServiceGrafanaConnectionInfo `json:"connection-info,omitempty"`
 984  	// Service creation timestamp (ISO 8601)
 985  	CreatedAT time.Time `json:"created-at,omitempty"`
 986  	// DbaaS service description
 987  	Description string `json:"description,omitempty"`
 988  	// TODO UNIT disk space for data storage
 989  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
 990  	// Grafana settings
 991  	GrafanaSettings *JSONSchemaGrafana `json:"grafana-settings,omitempty"`
 992  	// Service integrations
 993  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
 994  	// Allowed CIDR address blocks for incoming connections
 995  	IPFilter []string `json:"ip-filter,omitempty"`
 996  	// Automatic maintenance settings
 997  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
 998  	Name        DBAASServiceName         `json:"name" validate:"required,gte=0,lte=63"`
 999  	// Number of service nodes in the active plan
1000  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1001  	// Number of CPUs for each node
1002  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1003  	// TODO UNIT of memory for each node
1004  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1005  	// State of individual service nodes
1006  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1007  	// Service notifications
1008  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1009  	// Subscription plan
1010  	Plan string `json:"plan" validate:"required"`
1011  	// Prometheus integration URI
1012  	PrometheusURI *DBAASServiceGrafanaPrometheusURI `json:"prometheus-uri" validate:"required"`
1013  	State         EnumServiceState                  `json:"state,omitempty"`
1014  	// Service is protected against termination and powering off
1015  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
1016  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1017  	// Service last update timestamp (ISO 8601)
1018  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1019  	// URI for connecting to the service (may be absent)
1020  	URI string `json:"uri,omitempty"`
1021  	// service_uri parameterized into key-value pairs
1022  	URIParams map[string]any `json:"uri-params,omitempty"`
1023  	// List of service users
1024  	Users []DBAASServiceGrafanaUsers `json:"users,omitempty"`
1025  	// Grafana version
1026  	Version string `json:"version,omitempty"`
1027  	// The zone where the service is running
1028  	Zone string `json:"zone,omitempty"`
1029  }
1030  
1031  // Kafka authentication methods
1032  type DBAASServiceKafkaAuthenticationMethods struct {
1033  	// Whether certificate/SSL authentication is enabled
1034  	Certificate *bool `json:"certificate,omitempty"`
1035  	// Whether SASL authentication is enabled
1036  	Sasl *bool `json:"sasl,omitempty"`
1037  }
1038  
1039  type DBAASServiceKafkaComponents struct {
1040  	// Service component name
1041  	Component string `json:"component" validate:"required"`
1042  	// DNS name for connecting to the service component
1043  	Host                      string              `json:"host" validate:"required"`
1044  	KafkaAuthenticationMethod EnumKafkaAuthMethod `json:"kafka-authentication-method,omitempty"`
1045  	// Port number for connecting to the service component
1046  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1047  	Route EnumComponentRoute `json:"route" validate:"required"`
1048  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1049  }
1050  
1051  // Kafka connection information properties
1052  type DBAASServiceKafkaConnectionInfo struct {
1053  	AccessCert  string   `json:"access-cert,omitempty"`
1054  	AccessKey   string   `json:"access-key,omitempty"`
1055  	ConnectURI  string   `json:"connect-uri,omitempty"`
1056  	Nodes       []string `json:"nodes,omitempty"`
1057  	RegistryURI string   `json:"registry-uri,omitempty"`
1058  	RestURI     string   `json:"rest-uri,omitempty"`
1059  }
1060  
1061  // Prometheus integration URI
1062  type DBAASServiceKafkaPrometheusURI struct {
1063  	Host string `json:"host,omitempty"`
1064  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1065  }
1066  
1067  type DBAASServiceKafkaUsers struct {
1068  	AccessCert       string    `json:"access-cert,omitempty"`
1069  	AccessCertExpiry time.Time `json:"access-cert-expiry,omitempty"`
1070  	AccessKey        string    `json:"access-key,omitempty"`
1071  	Password         string    `json:"password,omitempty"`
1072  	Type             string    `json:"type,omitempty"`
1073  	Username         string    `json:"username,omitempty"`
1074  }
1075  
1076  type DBAASServiceKafka struct {
1077  	// Kafka authentication methods
1078  	AuthenticationMethods *DBAASServiceKafkaAuthenticationMethods `json:"authentication-methods,omitempty"`
1079  	// List of backups for the service
1080  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1081  	// Service component information objects
1082  	Components []DBAASServiceKafkaComponents `json:"components,omitempty"`
1083  	// Kafka connection information properties
1084  	ConnectionInfo *DBAASServiceKafkaConnectionInfo `json:"connection-info,omitempty"`
1085  	// Service creation timestamp (ISO 8601)
1086  	CreatedAT time.Time `json:"created-at,omitempty"`
1087  	// TODO UNIT disk space for data storage
1088  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1089  	// Service integrations
1090  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1091  	// Allow incoming connections from CIDR address block, e.g. '10.20.0.0/16'
1092  	IPFilter []string `json:"ip-filter,omitempty"`
1093  	// Whether Kafka Connect is enabled
1094  	KafkaConnectEnabled *bool `json:"kafka-connect-enabled,omitempty"`
1095  	// Kafka Connect configuration values
1096  	KafkaConnectSettings *JSONSchemaKafkaConnect `json:"kafka-connect-settings,omitempty"`
1097  	// Whether Kafka REST is enabled
1098  	KafkaRestEnabled *bool `json:"kafka-rest-enabled,omitempty"`
1099  	// Kafka REST configuration
1100  	KafkaRestSettings *JSONSchemaKafkaRest `json:"kafka-rest-settings,omitempty"`
1101  	// Kafka broker configuration values
1102  	KafkaSettings *JSONSchemaKafka `json:"kafka-settings,omitempty"`
1103  	// Automatic maintenance settings
1104  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1105  	Name        DBAASServiceName         `json:"name" validate:"required,gte=0,lte=63"`
1106  	// Number of service nodes in the active plan
1107  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1108  	// Number of CPUs for each node
1109  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1110  	// TODO UNIT of memory for each node
1111  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1112  	// State of individual service nodes
1113  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1114  	// Service notifications
1115  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1116  	// Subscription plan
1117  	Plan string `json:"plan" validate:"required"`
1118  	// Prometheus integration URI
1119  	PrometheusURI *DBAASServiceKafkaPrometheusURI `json:"prometheus-uri" validate:"required"`
1120  	// Whether Schema-Registry is enabled
1121  	SchemaRegistryEnabled *bool `json:"schema-registry-enabled,omitempty"`
1122  	// Schema Registry configuration
1123  	SchemaRegistrySettings *JSONSchemaSchemaRegistry `json:"schema-registry-settings,omitempty"`
1124  	State                  EnumServiceState          `json:"state,omitempty"`
1125  	// Service is protected against termination and powering off
1126  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
1127  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1128  	// Service last update timestamp (ISO 8601)
1129  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1130  	// URI for connecting to the service (may be absent)
1131  	URI string `json:"uri,omitempty"`
1132  	// service_uri parameterized into key-value pairs
1133  	URIParams map[string]any `json:"uri-params,omitempty"`
1134  	// List of service users
1135  	Users []DBAASServiceKafkaUsers `json:"users,omitempty"`
1136  	// Kafka version
1137  	Version string `json:"version,omitempty"`
1138  	// The zone where the service is running
1139  	Zone string `json:"zone,omitempty"`
1140  }
1141  
1142  type DBAASServiceLogsLogs struct {
1143  	Message string `json:"message,omitempty"`
1144  	Node    string `json:"node,omitempty"`
1145  	Time    string `json:"time,omitempty"`
1146  	Unit    string `json:"unit,omitempty"`
1147  }
1148  
1149  type DBAASServiceLogs struct {
1150  	FirstLogOffset string                 `json:"first-log-offset,omitempty"`
1151  	Logs           []DBAASServiceLogsLogs `json:"logs,omitempty"`
1152  	Offset         string                 `json:"offset,omitempty"`
1153  }
1154  
1155  type DBAASServiceMaintenanceDow string
1156  
1157  const (
1158  	DBAASServiceMaintenanceDowSaturday  DBAASServiceMaintenanceDow = "saturday"
1159  	DBAASServiceMaintenanceDowTuesday   DBAASServiceMaintenanceDow = "tuesday"
1160  	DBAASServiceMaintenanceDowNever     DBAASServiceMaintenanceDow = "never"
1161  	DBAASServiceMaintenanceDowWednesday DBAASServiceMaintenanceDow = "wednesday"
1162  	DBAASServiceMaintenanceDowSunday    DBAASServiceMaintenanceDow = "sunday"
1163  	DBAASServiceMaintenanceDowFriday    DBAASServiceMaintenanceDow = "friday"
1164  	DBAASServiceMaintenanceDowMonday    DBAASServiceMaintenanceDow = "monday"
1165  	DBAASServiceMaintenanceDowThursday  DBAASServiceMaintenanceDow = "thursday"
1166  )
1167  
1168  // Automatic maintenance settings
1169  type DBAASServiceMaintenance struct {
1170  	// Day of week for installing updates
1171  	Dow DBAASServiceMaintenanceDow `json:"dow" validate:"required"`
1172  	// Time for installing updates, UTC
1173  	Time string `json:"time" validate:"required,gte=8,lte=8"`
1174  	// List of updates waiting to be installed
1175  	Updates []DBAASServiceUpdate `json:"updates" validate:"required"`
1176  }
1177  
1178  // Backup schedule
1179  type DBAASServiceMysqlBackupSchedule struct {
1180  	// The hour of day (in UTC) when backup for the service is started. New backup is only started if previous backup has already completed.
1181  	BackupHour int64 `json:"backup-hour,omitempty" validate:"omitempty,gte=0,lte=23"`
1182  	// The minute of an hour when backup for the service is started. New backup is only started if previous backup has already completed.
1183  	BackupMinute int64 `json:"backup-minute,omitempty" validate:"omitempty,gte=0,lte=59"`
1184  }
1185  
1186  type DBAASServiceMysqlComponents struct {
1187  	// Service component name
1188  	Component string `json:"component" validate:"required"`
1189  	// DNS name for connecting to the service component
1190  	Host string `json:"host" validate:"required"`
1191  	// Port number for connecting to the service component
1192  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1193  	Route EnumComponentRoute `json:"route" validate:"required"`
1194  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1195  }
1196  
1197  // MySQL connection information properties
1198  type DBAASServiceMysqlConnectionInfo struct {
1199  	Params  []map[string]string `json:"params,omitempty"`
1200  	Standby []string            `json:"standby,omitempty"`
1201  	URI     []string            `json:"uri,omitempty"`
1202  }
1203  
1204  // Prometheus integration URI
1205  type DBAASServiceMysqlPrometheusURI struct {
1206  	Host string `json:"host,omitempty"`
1207  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1208  }
1209  
1210  type DBAASServiceMysqlUsers struct {
1211  	Authentication string `json:"authentication,omitempty"`
1212  	Password       string `json:"password,omitempty"`
1213  	Type           string `json:"type,omitempty"`
1214  	Username       string `json:"username,omitempty"`
1215  }
1216  
1217  type DBAASServiceMysql struct {
1218  	// Backup schedule
1219  	BackupSchedule *DBAASServiceMysqlBackupSchedule `json:"backup-schedule,omitempty"`
1220  	// List of backups for the service
1221  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1222  	// Service component information objects
1223  	Components []DBAASServiceMysqlComponents `json:"components,omitempty"`
1224  	// MySQL connection information properties
1225  	ConnectionInfo *DBAASServiceMysqlConnectionInfo `json:"connection-info,omitempty"`
1226  	// Service creation timestamp (ISO 8601)
1227  	CreatedAT time.Time `json:"created-at,omitempty"`
1228  	// List of MySQL databases
1229  	Databases []DBAASMysqlDatabaseName `json:"databases,omitempty"`
1230  	// TODO UNIT disk space for data storage
1231  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1232  	// Service integrations
1233  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1234  	// Allowed CIDR address blocks for incoming connections
1235  	IPFilter []string `json:"ip-filter,omitempty"`
1236  	// Automatic maintenance settings
1237  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1238  	// mysql.conf configuration values
1239  	MysqlSettings *JSONSchemaMysql `json:"mysql-settings,omitempty"`
1240  	Name          DBAASServiceName `json:"name" validate:"required,gte=0,lte=63"`
1241  	// Number of service nodes in the active plan
1242  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1243  	// Number of CPUs for each node
1244  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1245  	// TODO UNIT of memory for each node
1246  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1247  	// State of individual service nodes
1248  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1249  	// Service notifications
1250  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1251  	// Subscription plan
1252  	Plan string `json:"plan" validate:"required"`
1253  	// Prometheus integration URI
1254  	PrometheusURI *DBAASServiceMysqlPrometheusURI `json:"prometheus-uri" validate:"required"`
1255  	State         EnumServiceState                `json:"state,omitempty"`
1256  	// Service is protected against termination and powering off
1257  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
1258  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1259  	// Service last update timestamp (ISO 8601)
1260  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1261  	// URI for connecting to the service (may be absent)
1262  	URI string `json:"uri,omitempty"`
1263  	// service_uri parameterized into key-value pairs
1264  	URIParams map[string]any `json:"uri-params,omitempty"`
1265  	// List of service users
1266  	Users []DBAASServiceMysqlUsers `json:"users,omitempty"`
1267  	// MySQL version
1268  	Version string `json:"version,omitempty"`
1269  	// The zone where the service is running
1270  	Zone string `json:"zone,omitempty"`
1271  }
1272  
1273  type DBAASServiceName string
1274  
1275  type DBAASServiceNotificationLevel string
1276  
1277  const (
1278  	DBAASServiceNotificationLevelWarning DBAASServiceNotificationLevel = "warning"
1279  	DBAASServiceNotificationLevelNotice  DBAASServiceNotificationLevel = "notice"
1280  )
1281  
1282  type DBAASServiceNotificationType string
1283  
1284  const (
1285  	DBAASServiceNotificationTypeServicePoweredOffRemoval DBAASServiceNotificationType = "service_powered_off_removal"
1286  	DBAASServiceNotificationTypeServiceEndOfLife         DBAASServiceNotificationType = "service_end_of_life"
1287  )
1288  
1289  // Service notifications
1290  type DBAASServiceNotification struct {
1291  	// Notification level
1292  	Level DBAASServiceNotificationLevel `json:"level" validate:"required"`
1293  	// Human notification message
1294  	Message string `json:"message" validate:"required,gte=1,lte=1024"`
1295  	// Notification type
1296  	Metadata map[string]any `json:"metadata" validate:"required"`
1297  	// Notification type
1298  	Type DBAASServiceNotificationType `json:"type" validate:"required"`
1299  }
1300  
1301  type DBAASServiceOpensearchComponents struct {
1302  	// Service component name
1303  	Component string `json:"component" validate:"required"`
1304  	// DNS name for connecting to the service component
1305  	Host string `json:"host" validate:"required"`
1306  	// Port number for connecting to the service component
1307  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1308  	Route EnumComponentRoute `json:"route" validate:"required"`
1309  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1310  }
1311  
1312  // Opensearch connection information properties
1313  type DBAASServiceOpensearchConnectionInfo struct {
1314  	DashboardURI string   `json:"dashboard-uri,omitempty"`
1315  	Password     string   `json:"password,omitempty"`
1316  	URI          []string `json:"uri,omitempty"`
1317  	Username     string   `json:"username,omitempty"`
1318  }
1319  
1320  type DBAASServiceOpensearchIndexPatternsSortingAlgorithm string
1321  
1322  const (
1323  	DBAASServiceOpensearchIndexPatternsSortingAlgorithmAlphabetical DBAASServiceOpensearchIndexPatternsSortingAlgorithm = "alphabetical"
1324  	DBAASServiceOpensearchIndexPatternsSortingAlgorithmCreationDate DBAASServiceOpensearchIndexPatternsSortingAlgorithm = "creation_date"
1325  )
1326  
1327  type DBAASServiceOpensearchIndexPatterns struct {
1328  	// Maximum number of indexes to keep
1329  	MaxIndexCount *int64 `json:"max-index-count,omitempty" validate:"omitempty,gte=0"`
1330  	// fnmatch pattern
1331  	Pattern string `json:"pattern,omitempty" validate:"omitempty,lte=1024"`
1332  	// Deletion sorting algorithm
1333  	SortingAlgorithm DBAASServiceOpensearchIndexPatternsSortingAlgorithm `json:"sorting-algorithm,omitempty"`
1334  }
1335  
1336  // Template settings for all new indexes
1337  type DBAASServiceOpensearchIndexTemplate struct {
1338  	// The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps to prevent out of memory errors when a document contains too many nested objects. Default is 10000.
1339  	MappingNestedObjectsLimit int64 `json:"mapping-nested-objects-limit,omitempty" validate:"omitempty,gte=0,lte=100000"`
1340  	// The number of replicas each primary shard has.
1341  	NumberOfReplicas int64 `json:"number-of-replicas,omitempty" validate:"omitempty,gte=0,lte=29"`
1342  	// The number of primary shards that an index should have.
1343  	NumberOfShards int64 `json:"number-of-shards,omitempty" validate:"omitempty,gte=1,lte=1024"`
1344  }
1345  
1346  // OpenSearch Dashboards settings
1347  type DBAASServiceOpensearchOpensearchDashboards struct {
1348  	// Enable or disable OpenSearch Dashboards (default: true)
1349  	Enabled *bool `json:"enabled,omitempty"`
1350  	// Limits the maximum amount of memory (in MiB) the OpenSearch Dashboards process can use. This sets the max_old_space_size option of the nodejs running the OpenSearch Dashboards. Note: the memory reserved by OpenSearch Dashboards is not available for OpenSearch. (default: 128)
1351  	MaxOldSpaceSize int64 `json:"max-old-space-size,omitempty" validate:"omitempty,gte=64,lte=1024"`
1352  	// Timeout in milliseconds for requests made by OpenSearch Dashboards towards OpenSearch (default: 30000)
1353  	OpensearchRequestTimeout int64 `json:"opensearch-request-timeout,omitempty" validate:"omitempty,gte=5000,lte=120000"`
1354  }
1355  
1356  // Prometheus integration URI
1357  type DBAASServiceOpensearchPrometheusURI struct {
1358  	Host string `json:"host,omitempty"`
1359  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1360  }
1361  
1362  type DBAASServiceOpensearchUsers struct {
1363  	Password string `json:"password,omitempty"`
1364  	Type     string `json:"type,omitempty"`
1365  	Username string `json:"username,omitempty"`
1366  }
1367  
1368  type DBAASServiceOpensearch struct {
1369  	// List of backups for the service
1370  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1371  	// Service component information objects
1372  	Components []DBAASServiceOpensearchComponents `json:"components,omitempty"`
1373  	// Opensearch connection information properties
1374  	ConnectionInfo *DBAASServiceOpensearchConnectionInfo `json:"connection-info,omitempty"`
1375  	// Service creation timestamp (ISO 8601)
1376  	CreatedAT time.Time `json:"created-at,omitempty"`
1377  	// DbaaS service description
1378  	Description string `json:"description,omitempty"`
1379  	// TODO UNIT disk space for data storage
1380  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1381  	// Allows you to create glob style patterns and set a max number of indexes matching this pattern you want to keep. Creating indexes exceeding this value will cause the oldest one to get deleted. You could for example create a pattern looking like 'logs.?' and then create index logs.1, logs.2 etc, it will delete logs.1 once you create logs.6. Do note 'logs.?' does not apply to logs.10. Note: Setting max_index_count to 0 will do nothing and the pattern gets ignored.
1382  	IndexPatterns []DBAASServiceOpensearchIndexPatterns `json:"index-patterns,omitempty"`
1383  	// Template settings for all new indexes
1384  	IndexTemplate *DBAASServiceOpensearchIndexTemplate `json:"index-template,omitempty"`
1385  	// Service integrations
1386  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1387  	// Allowed CIDR address blocks for incoming connections
1388  	IPFilter []string `json:"ip-filter,omitempty"`
1389  	// Aiven automation resets index.refresh_interval to default value for every index to be sure that indices are always visible to search. If it doesn't fit your case, you can disable this by setting up this flag to true.
1390  	KeepIndexRefreshInterval *bool `json:"keep-index-refresh-interval,omitempty"`
1391  	// Automatic maintenance settings
1392  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1393  	// Maximum number of indexes to keep before deleting the oldest one
1394  	MaxIndexCount *int64           `json:"max-index-count,omitempty" validate:"omitempty,gte=0"`
1395  	Name          DBAASServiceName `json:"name" validate:"required,gte=0,lte=63"`
1396  	// Number of service nodes in the active plan
1397  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1398  	// Number of CPUs for each node
1399  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1400  	// TODO UNIT of memory for each node
1401  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1402  	// State of individual service nodes
1403  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1404  	// Service notifications
1405  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1406  	// OpenSearch Dashboards settings
1407  	OpensearchDashboards *DBAASServiceOpensearchOpensearchDashboards `json:"opensearch-dashboards,omitempty"`
1408  	// OpenSearch settings
1409  	OpensearchSettings *JSONSchemaOpensearch `json:"opensearch-settings,omitempty"`
1410  	// Subscription plan
1411  	Plan string `json:"plan" validate:"required"`
1412  	// Prometheus integration URI
1413  	PrometheusURI *DBAASServiceOpensearchPrometheusURI `json:"prometheus-uri" validate:"required"`
1414  	State         EnumServiceState                     `json:"state,omitempty"`
1415  	// Service is protected against termination and powering off
1416  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
1417  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1418  	// Service last update timestamp (ISO 8601)
1419  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1420  	// URI for connecting to the service (may be absent)
1421  	URI string `json:"uri,omitempty"`
1422  	// service_uri parameterized into key-value pairs
1423  	URIParams map[string]any `json:"uri-params,omitempty"`
1424  	// List of service users
1425  	Users []DBAASServiceOpensearchUsers `json:"users,omitempty"`
1426  	// OpenSearch version
1427  	Version string `json:"version,omitempty"`
1428  	// The zone where the service is running
1429  	Zone string `json:"zone,omitempty"`
1430  }
1431  
1432  // Backup schedule
1433  type DBAASServicePGBackupSchedule struct {
1434  	// The hour of day (in UTC) when backup for the service is started. New backup is only started if previous backup has already completed.
1435  	BackupHour int64 `json:"backup-hour,omitempty" validate:"omitempty,gte=0,lte=23"`
1436  	// The minute of an hour when backup for the service is started. New backup is only started if previous backup has already completed.
1437  	BackupMinute int64 `json:"backup-minute,omitempty" validate:"omitempty,gte=0,lte=59"`
1438  }
1439  
1440  type DBAASServicePGComponents struct {
1441  	// Service component name
1442  	Component string `json:"component" validate:"required"`
1443  	// DNS name for connecting to the service component
1444  	Host string `json:"host" validate:"required"`
1445  	// Port number for connecting to the service component
1446  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1447  	Route EnumComponentRoute `json:"route" validate:"required"`
1448  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1449  }
1450  
1451  // PG connection information properties
1452  type DBAASServicePGConnectionInfo struct {
1453  	Params  []map[string]string `json:"params,omitempty"`
1454  	Standby []string            `json:"standby,omitempty"`
1455  	Syncing []string            `json:"syncing,omitempty"`
1456  	URI     []string            `json:"uri,omitempty"`
1457  }
1458  
1459  type DBAASServicePGConnectionPools struct {
1460  	// Connection URI for the DB pool
1461  	ConnectionURI string              `json:"connection-uri" validate:"required"`
1462  	Database      DBAASDatabaseName   `json:"database" validate:"required,gte=1,lte=40"`
1463  	Mode          EnumPGPoolMode      `json:"mode" validate:"required"`
1464  	Name          DBAASPGPoolName     `json:"name" validate:"required,gte=1,lte=63"`
1465  	Size          DBAASPGPoolSize     `json:"size" validate:"required,gte=1,lte=10000"`
1466  	Username      DBAASPGPoolUsername `json:"username" validate:"required,gte=1,lte=64"`
1467  }
1468  
1469  // Prometheus integration URI
1470  type DBAASServicePGPrometheusURI struct {
1471  	Host string `json:"host,omitempty"`
1472  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1473  }
1474  
1475  // List of service users
1476  type DBAASServicePGUsers struct {
1477  	AllowReplication *bool `json:"allow-replication,omitempty"`
1478  	// Account password. A missing field indicates a user overridden password.
1479  	Password string `json:"password,omitempty"`
1480  	// Account type
1481  	Type string `json:"type" validate:"required"`
1482  	// Account username
1483  	Username string `json:"username" validate:"required"`
1484  }
1485  
1486  type DBAASServicePG struct {
1487  	// Backup schedule
1488  	BackupSchedule *DBAASServicePGBackupSchedule `json:"backup-schedule,omitempty"`
1489  	// List of backups for the service
1490  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1491  	// Service component information objects
1492  	Components []DBAASServicePGComponents `json:"components,omitempty"`
1493  	// PG connection information properties
1494  	ConnectionInfo *DBAASServicePGConnectionInfo `json:"connection-info,omitempty"`
1495  	// PostgreSQL PGBouncer connection pools
1496  	ConnectionPools []DBAASServicePGConnectionPools `json:"connection-pools,omitempty"`
1497  	// Service creation timestamp (ISO 8601)
1498  	CreatedAT time.Time `json:"created-at,omitempty"`
1499  	// List of PostgreSQL databases
1500  	Databases []DBAASDatabaseName `json:"databases,omitempty"`
1501  	// TODO UNIT disk space for data storage
1502  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1503  	// Service integrations
1504  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1505  	// Allowed CIDR address blocks for incoming connections
1506  	IPFilter []string `json:"ip-filter,omitempty"`
1507  	// Automatic maintenance settings
1508  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1509  	// Maximum number of connections allowed to an instance
1510  	MaxConnections int64            `json:"max-connections,omitempty" validate:"omitempty,gt=0"`
1511  	Name           DBAASServiceName `json:"name" validate:"required,gte=0,lte=63"`
1512  	// Number of service nodes in the active plan
1513  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1514  	// Number of CPUs for each node
1515  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1516  	// TODO UNIT of memory for each node
1517  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1518  	// State of individual service nodes
1519  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1520  	// Service notifications
1521  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1522  	// postgresql.conf configuration values
1523  	PGSettings *JSONSchemaPG `json:"pg-settings,omitempty"`
1524  	// System-wide settings for pgbouncer.
1525  	PgbouncerSettings *JSONSchemaPgbouncer `json:"pgbouncer-settings,omitempty"`
1526  	// System-wide settings for pglookout.
1527  	PglookoutSettings *JSONSchemaPglookout `json:"pglookout-settings,omitempty"`
1528  	// Subscription plan
1529  	Plan string `json:"plan" validate:"required"`
1530  	// Prometheus integration URI
1531  	PrometheusURI *DBAASServicePGPrometheusURI `json:"prometheus-uri" validate:"required"`
1532  	// Percentage of total RAM that the database server uses for shared memory buffers. Valid range is 20-60 (float), which corresponds to 20% - 60%. This setting adjusts the shared_buffers configuration value.
1533  	SharedBuffersPercentage int64                        `json:"shared-buffers-percentage,omitempty" validate:"omitempty,gte=20,lte=60"`
1534  	State                   EnumServiceState             `json:"state,omitempty"`
1535  	SynchronousReplication  EnumPGSynchronousReplication `json:"synchronous-replication,omitempty"`
1536  	// Service is protected against termination and powering off
1537  	TerminationProtection *bool `json:"termination-protection,omitempty"`
1538  	// System-wide settings for the timescaledb extension
1539  	TimescaledbSettings *JSONSchemaTimescaledb `json:"timescaledb-settings,omitempty"`
1540  	Type                DBAASServiceTypeName   `json:"type" validate:"required,gte=0,lte=64"`
1541  	// Service last update timestamp (ISO 8601)
1542  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1543  	// URI for connecting to the service (may be absent)
1544  	URI string `json:"uri,omitempty"`
1545  	// service_uri parameterized into key-value pairs
1546  	URIParams map[string]any `json:"uri-params,omitempty"`
1547  	// List of service users
1548  	Users []DBAASServicePGUsers `json:"users,omitempty"`
1549  	// PostgreSQL version
1550  	Version string `json:"version,omitempty"`
1551  	// Sets the maximum amount of memory to be used by a query operation (such as a sort or hash table) before writing to temporary disk files, in MB. Default is 1MB + 0.075% of total RAM (up to 32MB).
1552  	WorkMem int64 `json:"work-mem,omitempty" validate:"omitempty,gte=1,lte=1024"`
1553  	// The zone where the service is running
1554  	Zone string `json:"zone,omitempty"`
1555  }
1556  
1557  type DBAASServiceThanosComponents struct {
1558  	// Service component name
1559  	Component string `json:"component" validate:"required"`
1560  	// DNS name for connecting to the service component
1561  	Host string `json:"host" validate:"required"`
1562  	// Port number for connecting to the service component
1563  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1564  	Route EnumComponentRoute `json:"route" validate:"required"`
1565  	// Whether the endpoint is encrypted or accepts plaintext.
1566  	// By default endpoints are always encrypted and
1567  	// this property is only included for service components that may disable encryption.
1568  	SSL   *bool              `json:"ssl,omitempty"`
1569  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1570  }
1571  
1572  // Thanos connection information properties
1573  type DBAASServiceThanosConnectionInfo struct {
1574  	QueryFrontendURI       string `json:"query-frontend-uri,omitempty"`
1575  	QueryURI               string `json:"query-uri,omitempty"`
1576  	ReceiverRemoteWriteURI string `json:"receiver-remote-write-uri,omitempty"`
1577  	RulerURI               string `json:"ruler-uri,omitempty"`
1578  }
1579  
1580  // Prometheus integration URI
1581  type DBAASServiceThanosPrometheusURI struct {
1582  	Host string `json:"host,omitempty"`
1583  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1584  }
1585  
1586  type DBAASServiceThanosUsers struct {
1587  	Password string `json:"password,omitempty"`
1588  	Type     string `json:"type,omitempty"`
1589  	Username string `json:"username,omitempty"`
1590  }
1591  
1592  type DBAASServiceThanos struct {
1593  	// List of backups for the service
1594  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1595  	// Service component information objects
1596  	Components []DBAASServiceThanosComponents `json:"components,omitempty"`
1597  	// Thanos connection information properties
1598  	ConnectionInfo *DBAASServiceThanosConnectionInfo `json:"connection-info,omitempty"`
1599  	// Service creation timestamp (ISO 8601)
1600  	CreatedAT time.Time `json:"created-at,omitempty"`
1601  	// TODO UNIT disk space for data storage
1602  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1603  	// Service integrations
1604  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1605  	// Allowed CIDR address blocks for incoming connections
1606  	IPFilter []string `json:"ip-filter,omitempty"`
1607  	// Automatic maintenance settings
1608  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1609  	Name        DBAASServiceName         `json:"name" validate:"required,gte=0,lte=63"`
1610  	// Number of service nodes in the active plan
1611  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1612  	// Number of CPUs for each node
1613  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1614  	// TODO UNIT of memory for each node
1615  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1616  	// State of individual service nodes
1617  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1618  	// Service notifications
1619  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1620  	// Subscription plan
1621  	Plan string `json:"plan" validate:"required"`
1622  	// Prometheus integration URI
1623  	PrometheusURI *DBAASServiceThanosPrometheusURI `json:"prometheus-uri" validate:"required"`
1624  	State         EnumServiceState                 `json:"state,omitempty"`
1625  	// Service is protected against termination and powering off
1626  	TerminationProtection *bool `json:"termination-protection,omitempty"`
1627  	// Thanos settings
1628  	ThanosSettings *JSONSchemaThanos    `json:"thanos-settings,omitempty"`
1629  	Type           DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1630  	// Service last update timestamp (ISO 8601)
1631  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1632  	// URI for connecting to the service (may be absent)
1633  	URI string `json:"uri,omitempty"`
1634  	// service_uri parameterized into key-value pairs
1635  	URIParams map[string]any `json:"uri-params,omitempty"`
1636  	// List of service users
1637  	Users []DBAASServiceThanosUsers `json:"users,omitempty"`
1638  	// The zone where the service is running
1639  	Zone string `json:"zone,omitempty"`
1640  }
1641  
1642  // DBaaS service
1643  type DBAASServiceType struct {
1644  	// DbaaS service available versions
1645  	AvailableVersions []string `json:"available-versions,omitempty"`
1646  	// DbaaS service default version
1647  	DefaultVersion string `json:"default-version,omitempty"`
1648  	// DbaaS service description
1649  	Description string               `json:"description,omitempty"`
1650  	Name        DBAASServiceTypeName `json:"name,omitempty" validate:"omitempty,gte=0,lte=64"`
1651  	// DbaaS service plans
1652  	Plans []DBAASPlan `json:"plans,omitempty"`
1653  }
1654  
1655  type DBAASServiceTypeName string
1656  
1657  // Update waiting to be installed
1658  type DBAASServiceUpdate struct {
1659  	// Deadline for installing the update
1660  	Deadline time.Time `json:"deadline,omitempty"`
1661  	// Description of the update
1662  	Description string `json:"description,omitempty"`
1663  	// The earliest time the update will be automatically applied
1664  	StartAfter time.Time `json:"start-after,omitempty"`
1665  	// The time when the update will be automatically applied
1666  	StartAT time.Time `json:"start-at,omitempty"`
1667  }
1668  
1669  type DBAASServiceValkeyComponents struct {
1670  	// Service component name
1671  	Component string `json:"component" validate:"required"`
1672  	// DNS name for connecting to the service component
1673  	Host string `json:"host" validate:"required"`
1674  	// Port number for connecting to the service component
1675  	Port  int64              `json:"port" validate:"required,gte=0,lte=65535"`
1676  	Route EnumComponentRoute `json:"route" validate:"required"`
1677  	// Whether the endpoint is encrypted or accepts plaintext.
1678  	// By default endpoints are always encrypted and
1679  	// this property is only included for service components that may disable encryption.
1680  	SSL   *bool              `json:"ssl,omitempty"`
1681  	Usage EnumComponentUsage `json:"usage" validate:"required"`
1682  }
1683  
1684  // Valkey connection information properties
1685  type DBAASServiceValkeyConnectionInfo struct {
1686  	Password string   `json:"password,omitempty"`
1687  	Slave    []string `json:"slave,omitempty"`
1688  	URI      []string `json:"uri,omitempty"`
1689  }
1690  
1691  // Prometheus integration URI
1692  type DBAASServiceValkeyPrometheusURI struct {
1693  	Host string `json:"host,omitempty"`
1694  	Port int64  `json:"port,omitempty" validate:"omitempty,gte=0,lte=65535"`
1695  }
1696  
1697  type DBAASServiceValkeyUsersAccessControl struct {
1698  	Categories []string `json:"categories,omitempty"`
1699  	Channels   []string `json:"channels,omitempty"`
1700  	Commands   []string `json:"commands,omitempty"`
1701  	Keys       []string `json:"keys,omitempty"`
1702  }
1703  
1704  type DBAASServiceValkeyUsers struct {
1705  	AccessControl *DBAASServiceValkeyUsersAccessControl `json:"access-control,omitempty"`
1706  	Password      string                                `json:"password,omitempty"`
1707  	Type          string                                `json:"type,omitempty"`
1708  	Username      string                                `json:"username,omitempty"`
1709  }
1710  
1711  type DBAASServiceValkey struct {
1712  	// List of backups for the service
1713  	Backups []DBAASServiceBackup `json:"backups,omitempty"`
1714  	// Service component information objects
1715  	Components []DBAASServiceValkeyComponents `json:"components,omitempty"`
1716  	// Valkey connection information properties
1717  	ConnectionInfo *DBAASServiceValkeyConnectionInfo `json:"connection-info,omitempty"`
1718  	// Service creation timestamp (ISO 8601)
1719  	CreatedAT time.Time `json:"created-at,omitempty"`
1720  	// TODO UNIT disk space for data storage
1721  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=0"`
1722  	// Service integrations
1723  	Integrations []DBAASIntegration `json:"integrations,omitempty"`
1724  	// Allowed CIDR address blocks for incoming connections
1725  	IPFilter []string `json:"ip-filter,omitempty"`
1726  	// Automatic maintenance settings
1727  	Maintenance *DBAASServiceMaintenance `json:"maintenance,omitempty"`
1728  	Name        DBAASServiceName         `json:"name" validate:"required,gte=0,lte=63"`
1729  	// Number of service nodes in the active plan
1730  	NodeCount int64 `json:"node-count,omitempty" validate:"omitempty,gte=0"`
1731  	// Number of CPUs for each node
1732  	NodeCPUCount int64 `json:"node-cpu-count,omitempty" validate:"omitempty,gte=0"`
1733  	// TODO UNIT of memory for each node
1734  	NodeMemory int64 `json:"node-memory,omitempty" validate:"omitempty,gte=0"`
1735  	// State of individual service nodes
1736  	NodeStates []DBAASNodeState `json:"node-states,omitempty"`
1737  	// Service notifications
1738  	Notifications []DBAASServiceNotification `json:"notifications,omitempty"`
1739  	// Subscription plan
1740  	Plan string `json:"plan" validate:"required"`
1741  	// Prometheus integration URI
1742  	PrometheusURI *DBAASServiceValkeyPrometheusURI `json:"prometheus-uri" validate:"required"`
1743  	State         EnumServiceState                 `json:"state,omitempty"`
1744  	// Service is protected against termination and powering off
1745  	TerminationProtection *bool                `json:"termination-protection,omitempty"`
1746  	Type                  DBAASServiceTypeName `json:"type" validate:"required,gte=0,lte=64"`
1747  	// Service last update timestamp (ISO 8601)
1748  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1749  	// URI for connecting to the service (may be absent)
1750  	URI string `json:"uri,omitempty"`
1751  	// service_uri parameterized into key-value pairs
1752  	URIParams map[string]any `json:"uri-params,omitempty"`
1753  	// List of service users
1754  	Users []DBAASServiceValkeyUsers `json:"users,omitempty"`
1755  	// Valkey settings
1756  	ValkeySettings *JSONSchemaValkey `json:"valkey-settings,omitempty"`
1757  	// Valkey version
1758  	Version string `json:"version,omitempty"`
1759  	// The zone where the service is running
1760  	Zone string `json:"zone,omitempty"`
1761  }
1762  
1763  type DBAASTaskResultCodes struct {
1764  	Code   string `json:"code,omitempty"`
1765  	Dbname string `json:"dbname,omitempty"`
1766  }
1767  
1768  type DBAASTask struct {
1769  	CreateTime  time.Time              `json:"create-time,omitempty"`
1770  	ID          UUID                   `json:"id,omitempty"`
1771  	Result      string                 `json:"result,omitempty"`
1772  	ResultCodes []DBAASTaskResultCodes `json:"result-codes,omitempty"`
1773  	Success     *bool                  `json:"success,omitempty"`
1774  	TaskType    string                 `json:"task-type,omitempty"`
1775  }
1776  
1777  // Grafana User secrets
1778  type DBAASUserGrafanaSecrets struct {
1779  	// Grafana password
1780  	Password string `json:"password,omitempty"`
1781  	// Grafana username
1782  	Username string `json:"username,omitempty"`
1783  }
1784  
1785  // Kafka Connect secrets
1786  type DBAASUserKafkaConnectSecrets struct {
1787  	// Kafka Connect password
1788  	Password string `json:"password,omitempty"`
1789  	// Kafka Connect username
1790  	Username string `json:"username,omitempty"`
1791  }
1792  
1793  // Kafka User secrets
1794  type DBAASUserKafkaSecrets struct {
1795  	// Kafka certificate
1796  	AccessCert       string    `json:"access-cert,omitempty"`
1797  	AccessCertExpiry time.Time `json:"access-cert-expiry,omitempty"`
1798  	// Kafka access key
1799  	AccessKey string `json:"access-key,omitempty"`
1800  	// Kafka password
1801  	Password string `json:"password,omitempty"`
1802  	// Kafka username
1803  	Username string `json:"username,omitempty"`
1804  }
1805  
1806  // MySQL User secrets
1807  type DBAASUserMysqlSecrets struct {
1808  	// MySQL password
1809  	Password string `json:"password,omitempty"`
1810  	// MySQL username
1811  	Username string `json:"username,omitempty"`
1812  }
1813  
1814  // Opensearch User secrets
1815  type DBAASUserOpensearchSecrets struct {
1816  	// Opensearch password
1817  	Password string `json:"password,omitempty"`
1818  	// Opensearch username
1819  	Username string `json:"username,omitempty"`
1820  }
1821  
1822  type DBAASUserPassword string
1823  
1824  // Postgres User secrets
1825  type DBAASUserPostgresSecrets struct {
1826  	// Postgres password
1827  	Password string `json:"password,omitempty"`
1828  	// Postgres username
1829  	Username string `json:"username,omitempty"`
1830  }
1831  
1832  // Thanos User secrets
1833  type DBAASUserThanosSecrets struct {
1834  	// Thanos password
1835  	Password string `json:"password,omitempty"`
1836  	// Thanos username
1837  	Username string `json:"username,omitempty"`
1838  }
1839  
1840  type DBAASUserUsername string
1841  
1842  // Valkey User secrets
1843  type DBAASUserValkeySecrets struct {
1844  	// Valkey password
1845  	Password string `json:"password,omitempty"`
1846  	// Valkey username
1847  	Username string `json:"username,omitempty"`
1848  }
1849  
1850  // Model is in use: deletion forbidden
1851  type DeleteModelConflictResponse struct {
1852  	// Deployments using models
1853  	Deployments []string `json:"deployments,omitempty"`
1854  }
1855  
1856  type DeployTargetType string
1857  
1858  const (
1859  	DeployTargetTypeEdge      DeployTargetType = "edge"
1860  	DeployTargetTypeDedicated DeployTargetType = "dedicated"
1861  )
1862  
1863  // Deploy target
1864  type DeployTarget struct {
1865  	// Deploy Target description
1866  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
1867  	// Deploy Target ID
1868  	ID UUID `json:"id" validate:"required"`
1869  	// Deploy Target name
1870  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
1871  	// Deploy Target type
1872  	Type DeployTargetType `json:"type,omitempty"`
1873  }
1874  
1875  // DNS domain
1876  type DNSDomain struct {
1877  	// DNS domain creation date
1878  	CreatedAT time.Time `json:"created-at,omitempty"`
1879  	// DNS domain ID
1880  	ID UUID `json:"id,omitempty"`
1881  	// DNS domain unicode name
1882  	UnicodeName string `json:"unicode-name,omitempty" validate:"omitempty,gte=1,lte=255"`
1883  }
1884  
1885  type DNSDomainRecordType string
1886  
1887  const (
1888  	DNSDomainRecordTypeNS    DNSDomainRecordType = "NS"
1889  	DNSDomainRecordTypeCAA   DNSDomainRecordType = "CAA"
1890  	DNSDomainRecordTypeNAPTR DNSDomainRecordType = "NAPTR"
1891  	DNSDomainRecordTypePOOL  DNSDomainRecordType = "POOL"
1892  	DNSDomainRecordTypeA     DNSDomainRecordType = "A"
1893  	DNSDomainRecordTypeHINFO DNSDomainRecordType = "HINFO"
1894  	DNSDomainRecordTypeCNAME DNSDomainRecordType = "CNAME"
1895  	DNSDomainRecordTypeSOA   DNSDomainRecordType = "SOA"
1896  	DNSDomainRecordTypeSSHFP DNSDomainRecordType = "SSHFP"
1897  	DNSDomainRecordTypeSRV   DNSDomainRecordType = "SRV"
1898  	DNSDomainRecordTypeAAAA  DNSDomainRecordType = "AAAA"
1899  	DNSDomainRecordTypeMX    DNSDomainRecordType = "MX"
1900  	DNSDomainRecordTypeTXT   DNSDomainRecordType = "TXT"
1901  	DNSDomainRecordTypeALIAS DNSDomainRecordType = "ALIAS"
1902  	DNSDomainRecordTypeURL   DNSDomainRecordType = "URL"
1903  	DNSDomainRecordTypeSPF   DNSDomainRecordType = "SPF"
1904  )
1905  
1906  // DNS domain record
1907  type DNSDomainRecord struct {
1908  	// DNS domain record content
1909  	Content string `json:"content,omitempty"`
1910  	// DNS domain record creation date
1911  	CreatedAT time.Time `json:"created-at,omitempty"`
1912  	// DNS domain record ID
1913  	ID UUID `json:"id,omitempty"`
1914  	// DNS domain record name
1915  	Name string `json:"name,omitempty"`
1916  	// DNS domain record priority
1917  	Priority int64 `json:"priority,omitempty" validate:"omitempty,gte=0"`
1918  	// DNS domain record system status
1919  	SystemRecord *bool `json:"system-record,omitempty"`
1920  	// DNS domain record TTL
1921  	Ttl int64 `json:"ttl,omitempty" validate:"omitempty,gte=0"`
1922  	// DNS domain record type
1923  	Type DNSDomainRecordType `json:"type,omitempty"`
1924  	// DNS domain record update date
1925  	UpdatedAT time.Time `json:"updated-at,omitempty"`
1926  }
1927  
1928  type DomainName string
1929  
1930  type ElasticIPAddressfamily string
1931  
1932  const (
1933  	ElasticIPAddressfamilyInet4 ElasticIPAddressfamily = "inet4"
1934  	ElasticIPAddressfamilyInet6 ElasticIPAddressfamily = "inet6"
1935  )
1936  
1937  // Elastic IP
1938  type ElasticIP struct {
1939  	// Elastic IP address family
1940  	Addressfamily ElasticIPAddressfamily `json:"addressfamily,omitempty"`
1941  	// Elastic IP cidr
1942  	Cidr string `json:"cidr,omitempty"`
1943  	// Elastic IP description
1944  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
1945  	// Elastic IP address healthcheck
1946  	Healthcheck *ElasticIPHealthcheck `json:"healthcheck,omitempty"`
1947  	// Elastic IP ID
1948  	ID UUID `json:"id,omitempty"`
1949  	// Elastic IP address
1950  	IP     string `json:"ip,omitempty"`
1951  	Labels Labels `json:"labels,omitempty"`
1952  }
1953  
1954  type ElasticIPHealthcheckMode string
1955  
1956  const (
1957  	ElasticIPHealthcheckModeTCP   ElasticIPHealthcheckMode = "tcp"
1958  	ElasticIPHealthcheckModeHTTP  ElasticIPHealthcheckMode = "http"
1959  	ElasticIPHealthcheckModeHttps ElasticIPHealthcheckMode = "https"
1960  )
1961  
1962  // Elastic IP address healthcheck
1963  type ElasticIPHealthcheck struct {
1964  	// Interval between the checks in seconds (default: 10)
1965  	Interval int64 `json:"interval,omitempty" validate:"omitempty,gte=5,lte=300"`
1966  	// Health check mode
1967  	Mode ElasticIPHealthcheckMode `json:"mode" validate:"required"`
1968  	// Health check port
1969  	Port int64 `json:"port" validate:"required,gte=1,lte=65535"`
1970  	// Number of attempts before considering the target unhealthy (default: 3)
1971  	StrikesFail int64 `json:"strikes-fail,omitempty" validate:"omitempty,gte=1,lte=20"`
1972  	// Number of attempts before considering the target healthy (default: 2)
1973  	StrikesOk int64 `json:"strikes-ok,omitempty" validate:"omitempty,gte=1,lte=20"`
1974  	// Health check timeout value in seconds (default: 2)
1975  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=2,lte=60"`
1976  	// Skip TLS verification
1977  	TlsSkipVerify *bool `json:"tls-skip-verify,omitempty"`
1978  	// An optional domain or subdomain to check TLS against
1979  	TlsSNI string `json:"tls-sni,omitempty" validate:"omitempty,gte=1,lte=255"`
1980  	// An endpoint to use for the health check, for example '/status'
1981  	URI string `json:"uri,omitempty" validate:"omitempty,gte=1,lte=255"`
1982  }
1983  
1984  type EnumComponentRoute string
1985  
1986  const (
1987  	EnumComponentRouteDynamic     EnumComponentRoute = "dynamic"
1988  	EnumComponentRoutePrivate     EnumComponentRoute = "private"
1989  	EnumComponentRoutePublic      EnumComponentRoute = "public"
1990  	EnumComponentRoutePrivatelink EnumComponentRoute = "privatelink"
1991  )
1992  
1993  type EnumComponentUsage string
1994  
1995  const (
1996  	EnumComponentUsagePrimary EnumComponentUsage = "primary"
1997  	EnumComponentUsageReplica EnumComponentUsage = "replica"
1998  )
1999  
2000  type EnumDatadogSite string
2001  
2002  const (
2003  	EnumDatadogSiteUs3DatadoghqCom EnumDatadogSite = "us3.datadoghq.com"
2004  	EnumDatadogSiteDdogGovCom      EnumDatadogSite = "ddog-gov.com"
2005  	EnumDatadogSiteDatadoghqEU     EnumDatadogSite = "datadoghq.eu"
2006  	EnumDatadogSiteUs5DatadoghqCom EnumDatadogSite = "us5.datadoghq.com"
2007  	EnumDatadogSiteAp1DatadoghqCom EnumDatadogSite = "ap1.datadoghq.com"
2008  	EnumDatadogSiteDatadoghqCom    EnumDatadogSite = "datadoghq.com"
2009  )
2010  
2011  type EnumExternalEndpointTypes string
2012  
2013  const (
2014  	EnumExternalEndpointTypesPrometheus    EnumExternalEndpointTypes = "prometheus"
2015  	EnumExternalEndpointTypesOpensearch    EnumExternalEndpointTypes = "opensearch"
2016  	EnumExternalEndpointTypesRsyslog       EnumExternalEndpointTypes = "rsyslog"
2017  	EnumExternalEndpointTypesDatadog       EnumExternalEndpointTypes = "datadog"
2018  	EnumExternalEndpointTypesElasticsearch EnumExternalEndpointTypes = "elasticsearch"
2019  )
2020  
2021  type EnumIntegrationTypes string
2022  
2023  const (
2024  	EnumIntegrationTypesDatasource EnumIntegrationTypes = "datasource"
2025  	EnumIntegrationTypesLogs       EnumIntegrationTypes = "logs"
2026  	EnumIntegrationTypesMetrics    EnumIntegrationTypes = "metrics"
2027  )
2028  
2029  type EnumKafkaAuthMethod string
2030  
2031  const (
2032  	EnumKafkaAuthMethodCertificate EnumKafkaAuthMethod = "certificate"
2033  	EnumKafkaAuthMethodSasl        EnumKafkaAuthMethod = "sasl"
2034  )
2035  
2036  type EnumMasterLinkStatus string
2037  
2038  const (
2039  	EnumMasterLinkStatusUP   EnumMasterLinkStatus = "up"
2040  	EnumMasterLinkStatusDown EnumMasterLinkStatus = "down"
2041  )
2042  
2043  type EnumMigrationMethod string
2044  
2045  const (
2046  	EnumMigrationMethodDump        EnumMigrationMethod = "dump"
2047  	EnumMigrationMethodReplication EnumMigrationMethod = "replication"
2048  )
2049  
2050  type EnumMigrationStatus string
2051  
2052  const (
2053  	EnumMigrationStatusRunning EnumMigrationStatus = "running"
2054  	EnumMigrationStatusSyncing EnumMigrationStatus = "syncing"
2055  	EnumMigrationStatusFailed  EnumMigrationStatus = "failed"
2056  	EnumMigrationStatusDone    EnumMigrationStatus = "done"
2057  )
2058  
2059  type EnumMysqlAuthenticationPlugin string
2060  
2061  const (
2062  	EnumMysqlAuthenticationPluginCachingSha2Password EnumMysqlAuthenticationPlugin = "caching_sha2_password"
2063  	EnumMysqlAuthenticationPluginMysqlNativePassword EnumMysqlAuthenticationPlugin = "mysql_native_password"
2064  )
2065  
2066  type EnumOpensearchRulePermission string
2067  
2068  const (
2069  	EnumOpensearchRulePermissionAdmin     EnumOpensearchRulePermission = "admin"
2070  	EnumOpensearchRulePermissionRead      EnumOpensearchRulePermission = "read"
2071  	EnumOpensearchRulePermissionDeny      EnumOpensearchRulePermission = "deny"
2072  	EnumOpensearchRulePermissionReadwrite EnumOpensearchRulePermission = "readwrite"
2073  	EnumOpensearchRulePermissionWrite     EnumOpensearchRulePermission = "write"
2074  )
2075  
2076  type EnumPGPoolMode string
2077  
2078  const (
2079  	EnumPGPoolModeTransaction EnumPGPoolMode = "transaction"
2080  	EnumPGPoolModeStatement   EnumPGPoolMode = "statement"
2081  	EnumPGPoolModeSession     EnumPGPoolMode = "session"
2082  )
2083  
2084  type EnumPGSynchronousReplication string
2085  
2086  const (
2087  	EnumPGSynchronousReplicationQuorum EnumPGSynchronousReplication = "quorum"
2088  	EnumPGSynchronousReplicationOff    EnumPGSynchronousReplication = "off"
2089  )
2090  
2091  type EnumPGVariant string
2092  
2093  const (
2094  	EnumPGVariantTimescale EnumPGVariant = "timescale"
2095  	EnumPGVariantAiven     EnumPGVariant = "aiven"
2096  )
2097  
2098  type EnumRsyslogFormat string
2099  
2100  const (
2101  	EnumRsyslogFormatCustom  EnumRsyslogFormat = "custom"
2102  	EnumRsyslogFormatRfc3164 EnumRsyslogFormat = "rfc3164"
2103  	EnumRsyslogFormatRfc5424 EnumRsyslogFormat = "rfc5424"
2104  )
2105  
2106  type EnumServiceState string
2107  
2108  const (
2109  	EnumServiceStateRunning     EnumServiceState = "running"
2110  	EnumServiceStateRebuilding  EnumServiceState = "rebuilding"
2111  	EnumServiceStateRebalancing EnumServiceState = "rebalancing"
2112  	EnumServiceStatePoweroff    EnumServiceState = "poweroff"
2113  )
2114  
2115  type EnumSortOrder string
2116  
2117  const (
2118  	EnumSortOrderDesc EnumSortOrder = "desc"
2119  	EnumSortOrderAsc  EnumSortOrder = "asc"
2120  )
2121  
2122  type EnvImpactDetail struct {
2123  	// Amount
2124  	Amount float64 `json:"amount,omitempty"`
2125  	// Unit
2126  	Unit string `json:"unit,omitempty"`
2127  	// Value
2128  	Value string `json:"value,omitempty"`
2129  }
2130  
2131  type EnvImpactIndicator struct {
2132  	// Amount
2133  	Amount float64 `json:"amount,omitempty"`
2134  	// Details
2135  	Details []EnvImpactDetail `json:"details,omitempty"`
2136  	// Unit
2137  	Unit string `json:"unit,omitempty"`
2138  	// Value
2139  	Value string `json:"value,omitempty"`
2140  }
2141  
2142  type EnvImpactReport struct {
2143  	// Metadata
2144  	Metadata []EnvMetadataEntry `json:"metadata,omitempty"`
2145  	// Products
2146  	Products []EnvProduct `json:"products,omitempty"`
2147  }
2148  
2149  type EnvMetadataEntry struct {
2150  	// Amount
2151  	Amount float64 `json:"amount,omitempty"`
2152  	// Unit
2153  	Unit string `json:"unit,omitempty"`
2154  	// Value
2155  	Value string `json:"value,omitempty"`
2156  }
2157  
2158  type EnvProduct struct {
2159  	// Impacts
2160  	Impacts []EnvImpactIndicator `json:"impacts,omitempty"`
2161  	// Metadata
2162  	Metadata []EnvMetadataEntry `json:"metadata,omitempty"`
2163  	// Value
2164  	Value string `json:"value,omitempty"`
2165  }
2166  
2167  // Error
2168  type ErrorResponse struct {
2169  	// Error description
2170  	Error string `json:"error,omitempty"`
2171  }
2172  
2173  // A notable Mutation Event which happened on the infrastructure
2174  type Event struct {
2175  	// Body parameters (free form map)
2176  	BodyParams map[string]any `json:"body-params,omitempty"`
2177  	// Operation processing time
2178  	ElapsedMS int64 `json:"elapsed-ms,omitempty" validate:"omitempty,gt=0"`
2179  	// Query string parameters (free form map)
2180  	GetParams map[string]any `json:"get-params,omitempty"`
2181  	// Operation handler name
2182  	Handler string `json:"handler,omitempty"`
2183  	// IAM API Key
2184  	IAMAPIKey *IAMAPIKey `json:"iam-api-key,omitempty"`
2185  	// IAM Role
2186  	IAMRole *IAMRole `json:"iam-role,omitempty"`
2187  	// User
2188  	IAMUser *User `json:"iam-user,omitempty"`
2189  	// Operation message
2190  	Message string `json:"message,omitempty"`
2191  	// URI path parameters (free form map)
2192  	PathParams map[string]any `json:"path-params,omitempty"`
2193  	// Operation unique identifier
2194  	RequestID string `json:"request-id,omitempty"`
2195  	// Client IP address
2196  	SourceIP string `json:"source-ip,omitempty"`
2197  	// Operation HTTP status
2198  	Status int64 `json:"status,omitempty" validate:"omitempty,gt=0"`
2199  	// Time at which the event happened, millisecond resolution
2200  	Timestamp time.Time `json:"timestamp,omitempty"`
2201  	// Operation request URI
2202  	URI string `json:"uri,omitempty"`
2203  	// Operation targeted zone
2204  	Zone string `json:"zone,omitempty"`
2205  }
2206  
2207  type GetDeploymentLogsResponse string
2208  
2209  type GetDeploymentResponseStatus string
2210  
2211  const (
2212  	GetDeploymentResponseStatusReady     GetDeploymentResponseStatus = "ready"
2213  	GetDeploymentResponseStatusCreating  GetDeploymentResponseStatus = "creating"
2214  	GetDeploymentResponseStatusError     GetDeploymentResponseStatus = "error"
2215  	GetDeploymentResponseStatusDeploying GetDeploymentResponseStatus = "deploying"
2216  )
2217  
2218  // AI deployment
2219  type GetDeploymentResponse struct {
2220  	// Creation time
2221  	CreatedAT time.Time `json:"created-at,omitempty"`
2222  	// Deployment URL (nullable)
2223  	DeploymentURL string `json:"deployment-url,omitempty"`
2224  	// Number of GPUs
2225  	GpuCount int64 `json:"gpu-count,omitempty" validate:"omitempty,gt=0"`
2226  	// GPU type family
2227  	GpuType string `json:"gpu-type,omitempty" validate:"omitempty,gte=1"`
2228  	// Deployment ID
2229  	ID UUID `json:"id,omitempty"`
2230  	// Optional extra inference engine server CLI args
2231  	InferenceEngineParameters []string  `json:"inference-engine-parameters,omitempty"`
2232  	Model                     *ModelRef `json:"model,omitempty"`
2233  	// Deployment name
2234  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
2235  	// Number of replicas (>=0)
2236  	Replicas int64 `json:"replicas,omitempty" validate:"omitempty,gte=0"`
2237  	// Service level
2238  	ServiceLevel string `json:"service-level,omitempty" validate:"omitempty,gte=1"`
2239  	// Deployment status
2240  	Status GetDeploymentResponseStatus `json:"status,omitempty"`
2241  	// Update time
2242  	UpdatedAT time.Time `json:"updated-at,omitempty"`
2243  }
2244  
2245  // List of allowed inference-engine parameters
2246  type GetInferenceEngineHelpResponse struct {
2247  	Parameters []InferenceEngineParameterEntry `json:"parameters,omitempty"`
2248  }
2249  
2250  type GetModelResponseStatus string
2251  
2252  const (
2253  	GetModelResponseStatusReady       GetModelResponseStatus = "ready"
2254  	GetModelResponseStatusCreating    GetModelResponseStatus = "creating"
2255  	GetModelResponseStatusDownloading GetModelResponseStatus = "downloading"
2256  	GetModelResponseStatusError       GetModelResponseStatus = "error"
2257  )
2258  
2259  // AI model
2260  type GetModelResponse struct {
2261  	// Creation time
2262  	CreatedAT time.Time `json:"created-at,omitempty"`
2263  	// Model ID
2264  	ID UUID `json:"id,omitempty"`
2265  	// Model size (nullable)
2266  	ModelSize int64 `json:"model-size,omitempty" validate:"omitempty,gte=0"`
2267  	// Model name
2268  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
2269  	// Model status
2270  	Status GetModelResponseStatus `json:"status,omitempty"`
2271  	// Update time
2272  	UpdatedAT time.Time `json:"updated-at,omitempty"`
2273  }
2274  
2275  // IAM API Key
2276  type IAMAPIKey struct {
2277  	// IAM API Key
2278  	Key string `json:"key,omitempty"`
2279  	// IAM API Key name
2280  	Name string `json:"name,omitempty"`
2281  	// IAM API Key Role ID
2282  	RoleID UUID `json:"role-id,omitempty"`
2283  }
2284  
2285  // IAM API Key
2286  type IAMAPIKeyCreated struct {
2287  	// IAM API Key
2288  	Key string `json:"key,omitempty"`
2289  	// IAM API Key name
2290  	Name string `json:"name,omitempty"`
2291  	// IAM API Key Role ID
2292  	RoleID UUID `json:"role-id,omitempty"`
2293  	// IAM API Key Secret
2294  	Secret string `json:"secret,omitempty"`
2295  }
2296  
2297  type IAMPolicyDefaultServiceStrategy string
2298  
2299  const (
2300  	IAMPolicyDefaultServiceStrategyAllow IAMPolicyDefaultServiceStrategy = "allow"
2301  	IAMPolicyDefaultServiceStrategyDeny  IAMPolicyDefaultServiceStrategy = "deny"
2302  )
2303  
2304  // Policy
2305  type IAMPolicy struct {
2306  	// IAM default service strategy
2307  	DefaultServiceStrategy IAMPolicyDefaultServiceStrategy `json:"default-service-strategy" validate:"required"`
2308  	// IAM services
2309  	Services map[string]IAMServicePolicy `json:"services" validate:"required"`
2310  }
2311  
2312  // IAM Role
2313  type IAMRole struct {
2314  	// IAM Role description
2315  	Description string `json:"description,omitempty" validate:"omitempty,gte=1,lte=255"`
2316  	// IAM Role mutability
2317  	Editable *bool `json:"editable,omitempty"`
2318  	// IAM Role ID
2319  	ID     UUID   `json:"id,omitempty"`
2320  	Labels Labels `json:"labels,omitempty"`
2321  	// IAM Role name
2322  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
2323  	// IAM Role permissions
2324  	Permissions []string `json:"permissions,omitempty"`
2325  	// Policy
2326  	Policy *IAMPolicy `json:"policy,omitempty"`
2327  }
2328  
2329  type IAMServicePolicyType string
2330  
2331  const (
2332  	IAMServicePolicyTypeRules IAMServicePolicyType = "rules"
2333  	IAMServicePolicyTypeAllow IAMServicePolicyType = "allow"
2334  	IAMServicePolicyTypeDeny  IAMServicePolicyType = "deny"
2335  )
2336  
2337  type IAMServicePolicy struct {
2338  	Rules []IAMServicePolicyRule `json:"rules,omitempty"`
2339  	Type  IAMServicePolicyType   `json:"type,omitempty"`
2340  }
2341  
2342  type IAMServicePolicyRuleAction string
2343  
2344  const (
2345  	IAMServicePolicyRuleActionAllow IAMServicePolicyRuleAction = "allow"
2346  	IAMServicePolicyRuleActionDeny  IAMServicePolicyRuleAction = "deny"
2347  )
2348  
2349  type IAMServicePolicyRule struct {
2350  	Action     IAMServicePolicyRuleAction `json:"action,omitempty"`
2351  	Expression string                     `json:"expression,omitempty"`
2352  	Resources  []string                   `json:"resources,omitempty"`
2353  }
2354  
2355  // inference-engine parameter definition
2356  type InferenceEngineParameterEntry struct {
2357  	// Allowed values
2358  	AllowedValues []string `json:"allowed-values,omitempty"`
2359  	// Default value if nothing is specified
2360  	Default string `json:"default,omitempty"`
2361  	// Parameter description
2362  	Description string `json:"description,omitempty"`
2363  	// Flag name
2364  	Flags []string `json:"flags,omitempty"`
2365  	// Parameter name
2366  	Name string `json:"name,omitempty"`
2367  	// Section
2368  	Section string `json:"section,omitempty"`
2369  	// Parameter type
2370  	Type string `json:"type,omitempty"`
2371  }
2372  
2373  // Private Network
2374  type InstancePrivateNetworks struct {
2375  	// Private Network ID
2376  	ID UUID `json:"id,omitempty"`
2377  	// Private Network MAC address
2378  	MACAddress string `json:"mac-address,omitempty"`
2379  }
2380  
2381  // Instance
2382  type Instance struct {
2383  	// Instance Anti-affinity Groups
2384  	AntiAffinityGroups []AntiAffinityGroup `json:"anti-affinity-groups,omitempty"`
2385  	// Indicates if the instance will take application-consistent snapshots
2386  	ApplicationConsistentSnapshotEnabled *bool `json:"application-consistent-snapshot-enabled,omitempty"`
2387  	// Instance creation date
2388  	CreatedAT time.Time `json:"created-at,omitempty"`
2389  	// Deploy target
2390  	DeployTarget *DeployTarget `json:"deploy-target,omitempty"`
2391  	// Instance disk size in GiB
2392  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=10,lte=51200"`
2393  	// Instance Elastic IPs
2394  	ElasticIPS []ElasticIP `json:"elastic-ips,omitempty"`
2395  	// Instance ID
2396  	ID UUID `json:"id,omitempty"`
2397  	// Compute instance type
2398  	InstanceType *InstanceType `json:"instance-type,omitempty"`
2399  	// Instance IPv6 address
2400  	Ipv6Address string `json:"ipv6-address,omitempty"`
2401  	Labels      Labels `json:"labels,omitempty"`
2402  	// Instance MAC address
2403  	MACAddress string `json:"mac-address,omitempty"`
2404  	// Resource manager
2405  	Manager *Manager `json:"manager,omitempty"`
2406  	// Instance name
2407  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
2408  	// Instance Private Networks
2409  	PrivateNetworks []InstancePrivateNetworks `json:"private-networks,omitempty"`
2410  	// Instance public IPv4 address
2411  	PublicIP           net.IP             `json:"public-ip,omitempty"`
2412  	PublicIPAssignment PublicIPAssignment `json:"public-ip-assignment,omitempty"`
2413  	// Indicates if the instance has secure boot enabled
2414  	SecurebootEnabled *bool `json:"secureboot-enabled,omitempty"`
2415  	// Instance Security Groups
2416  	SecurityGroups []SecurityGroup `json:"security-groups,omitempty"`
2417  	// Instance Snapshots
2418  	Snapshots []Snapshot `json:"snapshots,omitempty"`
2419  	// SSH key
2420  	SSHKey *SSHKey `json:"ssh-key,omitempty"`
2421  	// Instance SSH Keys
2422  	SSHKeys []SSHKey      `json:"ssh-keys,omitempty"`
2423  	State   InstanceState `json:"state,omitempty"`
2424  	// Instance template
2425  	Template *Template `json:"template,omitempty"`
2426  	// Indicates if the instance has tpm enabled
2427  	TpmEnabled *bool `json:"tpm-enabled,omitempty"`
2428  	// Instance Cloud-init user-data (base64 encoded)
2429  	UserData string `json:"user-data,omitempty" validate:"omitempty,gte=1"`
2430  }
2431  
2432  // Instance password
2433  type InstancePassword struct {
2434  	// Password
2435  	Password string `json:"password,omitempty"`
2436  }
2437  
2438  type InstancePoolState string
2439  
2440  const (
2441  	InstancePoolStateScalingUP   InstancePoolState = "scaling-up"
2442  	InstancePoolStateScalingDown InstancePoolState = "scaling-down"
2443  	InstancePoolStateDestroying  InstancePoolState = "destroying"
2444  	InstancePoolStateCreating    InstancePoolState = "creating"
2445  	InstancePoolStateSuspended   InstancePoolState = "suspended"
2446  	InstancePoolStateRunning     InstancePoolState = "running"
2447  	InstancePoolStateUpdating    InstancePoolState = "updating"
2448  )
2449  
2450  // Instance Pool
2451  type InstancePool struct {
2452  	// Instance Pool Anti-affinity Groups
2453  	AntiAffinityGroups []AntiAffinityGroup `json:"anti-affinity-groups,omitempty"`
2454  	// Enable application consistent snapshots
2455  	ApplicationConsistentSnapshotEnabled *bool `json:"application-consistent-snapshot-enabled,omitempty"`
2456  	// Deploy target
2457  	DeployTarget *DeployTarget `json:"deploy-target,omitempty"`
2458  	// Instance Pool description
2459  	Description string `json:"description,omitempty" validate:"omitempty,gte=1,lte=255"`
2460  	// Instances disk size in GiB
2461  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=10,lte=51200"`
2462  	// Instances Elastic IPs
2463  	ElasticIPS []ElasticIP `json:"elastic-ips,omitempty"`
2464  	// Instance Pool ID
2465  	ID UUID `json:"id,omitempty"`
2466  	// The instances created by the Instance Pool will be prefixed with this value (default: pool)
2467  	InstancePrefix string `json:"instance-prefix,omitempty" validate:"omitempty,gte=1,lte=30"`
2468  	// Compute instance type
2469  	InstanceType *InstanceType `json:"instance-type,omitempty"`
2470  	// Instances
2471  	Instances []Instance `json:"instances,omitempty"`
2472  	// Enable IPv6 for instances
2473  	Ipv6Enabled *bool  `json:"ipv6-enabled,omitempty"`
2474  	Labels      Labels `json:"labels,omitempty"`
2475  	// Resource manager
2476  	Manager *Manager `json:"manager,omitempty"`
2477  	// Minimum number of running instances
2478  	MinAvailable int64 `json:"min-available,omitempty" validate:"omitempty,gte=0"`
2479  	// Instance Pool name
2480  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
2481  	// Instance Pool Private Networks
2482  	PrivateNetworks    []PrivateNetwork   `json:"private-networks,omitempty"`
2483  	PublicIPAssignment PublicIPAssignment `json:"public-ip-assignment,omitempty"`
2484  	// Instance Pool Security Groups
2485  	SecurityGroups []SecurityGroup `json:"security-groups,omitempty"`
2486  	// Number of instances
2487  	Size int64 `json:"size,omitempty" validate:"omitempty,gt=0"`
2488  	// SSH key
2489  	SSHKey *SSHKey `json:"ssh-key,omitempty"`
2490  	// Instances SSH keys
2491  	SSHKeys []SSHKey `json:"ssh-keys,omitempty"`
2492  	// Instance Pool state
2493  	State InstancePoolState `json:"state,omitempty"`
2494  	// Instance template
2495  	Template *Template `json:"template,omitempty"`
2496  	// Instances Cloud-init user-data
2497  	UserData string `json:"user-data,omitempty" validate:"omitempty,gte=1"`
2498  }
2499  
2500  type InstanceState string
2501  
2502  const (
2503  	InstanceStateExpunging  InstanceState = "expunging"
2504  	InstanceStateStarting   InstanceState = "starting"
2505  	InstanceStateDestroying InstanceState = "destroying"
2506  	InstanceStateRunning    InstanceState = "running"
2507  	InstanceStateStopping   InstanceState = "stopping"
2508  	InstanceStateStopped    InstanceState = "stopped"
2509  	InstanceStateMigrating  InstanceState = "migrating"
2510  	InstanceStateError      InstanceState = "error"
2511  	InstanceStateDestroyed  InstanceState = "destroyed"
2512  )
2513  
2514  // Target Instance
2515  type InstanceTarget struct {
2516  	// Instance ID
2517  	ID UUID `json:"id,omitempty"`
2518  }
2519  
2520  type InstanceTypeFamily string
2521  
2522  const (
2523  	InstanceTypeFamilyGpu3          InstanceTypeFamily = "gpu3"
2524  	InstanceTypeFamilyGpua30        InstanceTypeFamily = "gpua30"
2525  	InstanceTypeFamilyGpu3080ti     InstanceTypeFamily = "gpu3080ti"
2526  	InstanceTypeFamilyGpu2          InstanceTypeFamily = "gpu2"
2527  	InstanceTypeFamilyGpu           InstanceTypeFamily = "gpu"
2528  	InstanceTypeFamilyMemory        InstanceTypeFamily = "memory"
2529  	InstanceTypeFamilyGpua5000      InstanceTypeFamily = "gpua5000"
2530  	InstanceTypeFamilyGpurtx6000pro InstanceTypeFamily = "gpurtx6000pro"
2531  	InstanceTypeFamilyStorage       InstanceTypeFamily = "storage"
2532  	InstanceTypeFamilyStandard      InstanceTypeFamily = "standard"
2533  	InstanceTypeFamilyColossus      InstanceTypeFamily = "colossus"
2534  	InstanceTypeFamilyCPU           InstanceTypeFamily = "cpu"
2535  )
2536  
2537  type InstanceTypeSize string
2538  
2539  const (
2540  	InstanceTypeSizeLarge      InstanceTypeSize = "large"
2541  	InstanceTypeSizeHuge       InstanceTypeSize = "huge"
2542  	InstanceTypeSizeJumbo      InstanceTypeSize = "jumbo"
2543  	InstanceTypeSizeMedium     InstanceTypeSize = "medium"
2544  	InstanceTypeSizeMega       InstanceTypeSize = "mega"
2545  	InstanceTypeSizeSmall      InstanceTypeSize = "small"
2546  	InstanceTypeSizeExtraLarge InstanceTypeSize = "extra-large"
2547  	InstanceTypeSizeTitan48c   InstanceTypeSize = "titan48c"
2548  	InstanceTypeSizeTitan      InstanceTypeSize = "titan"
2549  	InstanceTypeSizeMicro      InstanceTypeSize = "micro"
2550  	InstanceTypeSizeColossus   InstanceTypeSize = "colossus"
2551  	InstanceTypeSizeTiny       InstanceTypeSize = "tiny"
2552  )
2553  
2554  // Compute instance type
2555  type InstanceType struct {
2556  	// Requires authorization or publicly available
2557  	Authorized *bool `json:"authorized,omitempty"`
2558  	// CPU count
2559  	Cpus int64 `json:"cpus,omitempty" validate:"omitempty,gt=0"`
2560  	// Instance type family
2561  	Family InstanceTypeFamily `json:"family,omitempty"`
2562  	// GPU count
2563  	Gpus int64 `json:"gpus,omitempty" validate:"omitempty,gt=0"`
2564  	// Instance type ID
2565  	ID UUID `json:"id,omitempty"`
2566  	// Available memory
2567  	Memory int64 `json:"memory,omitempty" validate:"omitempty,gt=0"`
2568  	// Instance type size
2569  	Size InstanceTypeSize `json:"size,omitempty"`
2570  	// Instance Type available zones
2571  	Zones []ZoneName `json:"zones,omitempty"`
2572  }
2573  
2574  type JSONSchemaGrafanaAlertingErrorORTimeout string
2575  
2576  const (
2577  	JSONSchemaGrafanaAlertingErrorORTimeoutAlerting  JSONSchemaGrafanaAlertingErrorORTimeout = "alerting"
2578  	JSONSchemaGrafanaAlertingErrorORTimeoutKeepState JSONSchemaGrafanaAlertingErrorORTimeout = "keep_state"
2579  )
2580  
2581  type JSONSchemaGrafanaAlertingNodataORNullvalues string
2582  
2583  const (
2584  	JSONSchemaGrafanaAlertingNodataORNullvaluesAlerting  JSONSchemaGrafanaAlertingNodataORNullvalues = "alerting"
2585  	JSONSchemaGrafanaAlertingNodataORNullvaluesNOData    JSONSchemaGrafanaAlertingNodataORNullvalues = "no_data"
2586  	JSONSchemaGrafanaAlertingNodataORNullvaluesKeepState JSONSchemaGrafanaAlertingNodataORNullvalues = "keep_state"
2587  	JSONSchemaGrafanaAlertingNodataORNullvaluesOk        JSONSchemaGrafanaAlertingNodataORNullvalues = "ok"
2588  )
2589  
2590  // Azure AD OAuth integration
2591  type JSONSchemaGrafanaAuthAzuread struct {
2592  	// Automatically sign-up users on successful sign-in
2593  	AllowSignUP *bool `json:"allow_sign_up,omitempty"`
2594  	// Allowed domains
2595  	AllowedDomains []string `json:"allowed_domains,omitempty"`
2596  	// Require users to belong to one of given groups
2597  	AllowedGroups []string `json:"allowed_groups,omitempty"`
2598  	// Authorization URL
2599  	AuthURL string `json:"auth_url" validate:"required,lte=2048"`
2600  	// Client ID from provider
2601  	ClientID string `json:"client_id" validate:"required,lte=1024"`
2602  	// Client secret from provider
2603  	ClientSecret string `json:"client_secret" validate:"required,lte=1024"`
2604  	// Token URL
2605  	TokenURL string `json:"token_url" validate:"required,lte=2048"`
2606  }
2607  
2608  // Generic OAuth integration
2609  type JSONSchemaGrafanaAuthGenericOauth struct {
2610  	// Automatically sign-up users on successful sign-in
2611  	AllowSignUP *bool `json:"allow_sign_up,omitempty"`
2612  	// Allowed domains
2613  	AllowedDomains []string `json:"allowed_domains,omitempty"`
2614  	// Require user to be member of one of the listed organizations
2615  	AllowedOrganizations []string `json:"allowed_organizations,omitempty"`
2616  	// API URL
2617  	APIURL string `json:"api_url" validate:"required,lte=2048"`
2618  	// Authorization URL
2619  	AuthURL string `json:"auth_url" validate:"required,lte=2048"`
2620  	// Allow users to bypass the login screen and automatically log in
2621  	AutoLogin *bool `json:"auto_login,omitempty"`
2622  	// Client ID from provider
2623  	ClientID string `json:"client_id" validate:"required,lte=1024"`
2624  	// Client secret from provider
2625  	ClientSecret string `json:"client_secret" validate:"required,lte=1024"`
2626  	// Name of the OAuth integration
2627  	Name string `json:"name,omitempty" validate:"omitempty,lte=128"`
2628  	// OAuth scopes
2629  	Scopes []string `json:"scopes,omitempty"`
2630  	// Token URL
2631  	TokenURL string `json:"token_url" validate:"required,lte=2048"`
2632  }
2633  
2634  // Github Auth integration
2635  type JSONSchemaGrafanaAuthGithub struct {
2636  	// Automatically sign-up users on successful sign-in
2637  	AllowSignUP *bool `json:"allow_sign_up,omitempty"`
2638  	// Require users to belong to one of given organizations
2639  	AllowedOrganizations []string `json:"allowed_organizations,omitempty"`
2640  	// Allow users to bypass the login screen and automatically log in
2641  	AutoLogin *bool `json:"auto_login,omitempty"`
2642  	// Client ID from provider
2643  	ClientID string `json:"client_id" validate:"required,lte=1024"`
2644  	// Client secret from provider
2645  	ClientSecret string `json:"client_secret" validate:"required,lte=1024"`
2646  	// Stop automatically syncing user roles
2647  	SkipOrgRoleSync *bool `json:"skip_org_role_sync,omitempty"`
2648  	// Require users to belong to one of given team IDs
2649  	TeamIDS []int `json:"team_ids,omitempty"`
2650  }
2651  
2652  // GitLab Auth integration
2653  type JSONSchemaGrafanaAuthGitlab struct {
2654  	// Automatically sign-up users on successful sign-in
2655  	AllowSignUP *bool `json:"allow_sign_up,omitempty"`
2656  	// Require users to belong to one of given groups
2657  	AllowedGroups []string `json:"allowed_groups" validate:"required"`
2658  	// API URL. This only needs to be set when using self hosted GitLab
2659  	APIURL string `json:"api_url,omitempty" validate:"omitempty,lte=2048"`
2660  	// Authorization URL. This only needs to be set when using self hosted GitLab
2661  	AuthURL string `json:"auth_url,omitempty" validate:"omitempty,lte=2048"`
2662  	// Client ID from provider
2663  	ClientID string `json:"client_id" validate:"required,lte=1024"`
2664  	// Client secret from provider
2665  	ClientSecret string `json:"client_secret" validate:"required,lte=1024"`
2666  	// Token URL. This only needs to be set when using self hosted GitLab
2667  	TokenURL string `json:"token_url,omitempty" validate:"omitempty,lte=2048"`
2668  }
2669  
2670  // Google Auth integration
2671  type JSONSchemaGrafanaAuthGoogle struct {
2672  	// Automatically sign-up users on successful sign-in
2673  	AllowSignUP *bool `json:"allow_sign_up,omitempty"`
2674  	// Domains allowed to sign-in to this Grafana
2675  	AllowedDomains []string `json:"allowed_domains" validate:"required"`
2676  	// Client ID from provider
2677  	ClientID string `json:"client_id" validate:"required,lte=1024"`
2678  	// Client secret from provider
2679  	ClientSecret string `json:"client_secret" validate:"required,lte=1024"`
2680  }
2681  
2682  type JSONSchemaGrafanaCookieSamesite string
2683  
2684  const (
2685  	JSONSchemaGrafanaCookieSamesiteLax    JSONSchemaGrafanaCookieSamesite = "lax"
2686  	JSONSchemaGrafanaCookieSamesiteStrict JSONSchemaGrafanaCookieSamesite = "strict"
2687  	JSONSchemaGrafanaCookieSamesiteNone   JSONSchemaGrafanaCookieSamesite = "none"
2688  )
2689  
2690  // Grafana date format specifications
2691  type JSONSchemaGrafanaDateFormats struct {
2692  	// Default time zone for user preferences. Value 'browser' uses browser local time zone.
2693  	DefaultTimezone string `json:"default_timezone,omitempty" validate:"omitempty,lte=64"`
2694  	// Moment.js style format string for cases where full date is shown
2695  	FullDate string `json:"full_date,omitempty" validate:"omitempty,lte=128"`
2696  	// Moment.js style format string used when a time requiring day accuracy is shown
2697  	IntervalDay string `json:"interval_day,omitempty" validate:"omitempty,lte=128"`
2698  	// Moment.js style format string used when a time requiring hour accuracy is shown
2699  	IntervalHour string `json:"interval_hour,omitempty" validate:"omitempty,lte=128"`
2700  	// Moment.js style format string used when a time requiring minute accuracy is shown
2701  	IntervalMinute string `json:"interval_minute,omitempty" validate:"omitempty,lte=128"`
2702  	// Moment.js style format string used when a time requiring month accuracy is shown
2703  	IntervalMonth string `json:"interval_month,omitempty" validate:"omitempty,lte=128"`
2704  	// Moment.js style format string used when a time requiring second accuracy is shown
2705  	IntervalSecond string `json:"interval_second,omitempty" validate:"omitempty,lte=128"`
2706  	// Moment.js style format string used when a time requiring year accuracy is shown
2707  	IntervalYear string `json:"interval_year,omitempty" validate:"omitempty,lte=128"`
2708  }
2709  
2710  type JSONSchemaGrafanaSMTPServerStarttlsPolicy string
2711  
2712  const (
2713  	JSONSchemaGrafanaSMTPServerStarttlsPolicyOpportunisticStartTLS JSONSchemaGrafanaSMTPServerStarttlsPolicy = "OpportunisticStartTLS"
2714  	JSONSchemaGrafanaSMTPServerStarttlsPolicyMandatoryStartTLS     JSONSchemaGrafanaSMTPServerStarttlsPolicy = "MandatoryStartTLS"
2715  	JSONSchemaGrafanaSMTPServerStarttlsPolicyNoStartTLS            JSONSchemaGrafanaSMTPServerStarttlsPolicy = "NoStartTLS"
2716  )
2717  
2718  // SMTP server settings
2719  type JSONSchemaGrafanaSMTPServer struct {
2720  	// Address used for sending emails
2721  	FromAddress string `json:"from_address" validate:"required,lte=319"`
2722  	// Name used in outgoing emails, defaults to Grafana
2723  	FromName *string `json:"from_name,omitempty" validate:"omitempty,lte=128"`
2724  	// Server hostname or IP
2725  	Host string `json:"host" validate:"required,lte=255"`
2726  	// Password for SMTP authentication
2727  	Password *string `json:"password,omitempty" validate:"omitempty,lte=255"`
2728  	// SMTP server port
2729  	Port int `json:"port" validate:"required,gte=1,lte=65535"`
2730  	// Skip verifying server certificate. Defaults to false
2731  	SkipVerify *bool `json:"skip_verify,omitempty"`
2732  	// Either OpportunisticStartTLS, MandatoryStartTLS or NoStartTLS. Default is OpportunisticStartTLS.
2733  	StarttlsPolicy JSONSchemaGrafanaSMTPServerStarttlsPolicy `json:"starttls_policy,omitempty"`
2734  	// Username for SMTP authentication
2735  	Username *string `json:"username,omitempty" validate:"omitempty,lte=255"`
2736  }
2737  
2738  type JSONSchemaGrafanaUserAutoAssignOrgRole string
2739  
2740  const (
2741  	JSONSchemaGrafanaUserAutoAssignOrgRoleViewer JSONSchemaGrafanaUserAutoAssignOrgRole = "Viewer"
2742  	JSONSchemaGrafanaUserAutoAssignOrgRoleAdmin  JSONSchemaGrafanaUserAutoAssignOrgRole = "Admin"
2743  	JSONSchemaGrafanaUserAutoAssignOrgRoleEditor JSONSchemaGrafanaUserAutoAssignOrgRole = "Editor"
2744  )
2745  
2746  // Grafana settings
2747  type JSONSchemaGrafana struct {
2748  	// Enable or disable Grafana legacy alerting functionality. This should not be enabled with unified_alerting_enabled.
2749  	AlertingEnabled *bool `json:"alerting_enabled,omitempty"`
2750  	// Default error or timeout setting for new alerting rules
2751  	AlertingErrorORTimeout JSONSchemaGrafanaAlertingErrorORTimeout `json:"alerting_error_or_timeout,omitempty"`
2752  	// Max number of alert annotations that Grafana stores. 0 (default) keeps all alert annotations.
2753  	AlertingMaxAnnotationsToKeep int `json:"alerting_max_annotations_to_keep,omitempty" validate:"omitempty,gte=0,lte=1e+06"`
2754  	// Default value for 'no data or null values' for new alerting rules
2755  	AlertingNodataORNullvalues JSONSchemaGrafanaAlertingNodataORNullvalues `json:"alerting_nodata_or_nullvalues,omitempty"`
2756  	// Allow embedding Grafana dashboards with iframe/frame/object/embed tags. Disabled by default to limit impact of clickjacking
2757  	AllowEmbedding *bool `json:"allow_embedding,omitempty"`
2758  	// Azure AD OAuth integration
2759  	AuthAzuread *JSONSchemaGrafanaAuthAzuread `json:"auth_azuread,omitempty"`
2760  	// Enable or disable basic authentication form, used by Grafana built-in login
2761  	AuthBasicEnabled *bool `json:"auth_basic_enabled,omitempty"`
2762  	// Generic OAuth integration
2763  	AuthGenericOauth *JSONSchemaGrafanaAuthGenericOauth `json:"auth_generic_oauth,omitempty"`
2764  	// Github Auth integration
2765  	AuthGithub *JSONSchemaGrafanaAuthGithub `json:"auth_github,omitempty"`
2766  	// GitLab Auth integration
2767  	AuthGitlab *JSONSchemaGrafanaAuthGitlab `json:"auth_gitlab,omitempty"`
2768  	// Google Auth integration
2769  	AuthGoogle *JSONSchemaGrafanaAuthGoogle `json:"auth_google,omitempty"`
2770  	// Cookie SameSite attribute: 'strict' prevents sending cookie for cross-site requests, effectively disabling direct linking from other sites to Grafana. 'lax' is the default value.
2771  	CookieSamesite JSONSchemaGrafanaCookieSamesite `json:"cookie_samesite,omitempty"`
2772  	// Serve the web frontend using a custom CNAME pointing to the Aiven DNS name
2773  	CustomDomain *string `json:"custom_domain,omitempty" validate:"omitempty,lte=255"`
2774  	// This feature is new in Grafana 9 and is quite resource intensive. It may cause low-end plans to work more slowly while the dashboard previews are rendering.
2775  	DashboardPreviewsEnabled *bool `json:"dashboard_previews_enabled,omitempty"`
2776  	// Signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s, 1h
2777  	DashboardsMinRefreshInterval string `json:"dashboards_min_refresh_interval,omitempty" validate:"omitempty,lte=16"`
2778  	// Dashboard versions to keep per dashboard
2779  	DashboardsVersionsToKeep int `json:"dashboards_versions_to_keep,omitempty" validate:"omitempty,gte=1,lte=100"`
2780  	// Send 'X-Grafana-User' header to data source
2781  	DataproxySendUserHeader *bool `json:"dataproxy_send_user_header,omitempty"`
2782  	// Timeout for data proxy requests in seconds
2783  	DataproxyTimeout int `json:"dataproxy_timeout,omitempty" validate:"omitempty,gte=15,lte=90"`
2784  	// Grafana date format specifications
2785  	DateFormats *JSONSchemaGrafanaDateFormats `json:"date_formats,omitempty"`
2786  	// Set to true to disable gravatar. Defaults to false (gravatar is enabled)
2787  	DisableGravatar *bool `json:"disable_gravatar,omitempty"`
2788  	// Editors can manage folders, teams and dashboards created by them
2789  	EditorsCanAdmin *bool `json:"editors_can_admin,omitempty"`
2790  	// Google Analytics ID
2791  	GoogleAnalyticsUAID string `json:"google_analytics_ua_id,omitempty" validate:"omitempty,lte=64"`
2792  	// Enable Grafana /metrics endpoint
2793  	MetricsEnabled *bool `json:"metrics_enabled,omitempty"`
2794  	// Enforce user lookup based on email instead of the unique ID provided by the IdP
2795  	OauthAllowInsecureEmailLookup *bool `json:"oauth_allow_insecure_email_lookup,omitempty"`
2796  	// Store logs for the service so that they are available in the HTTP API and console.
2797  	ServiceLog *bool `json:"service_log,omitempty"`
2798  	// SMTP server settings
2799  	SMTPServer *JSONSchemaGrafanaSMTPServer `json:"smtp_server,omitempty"`
2800  	// Enable or disable Grafana unified alerting functionality. By default this is enabled and any legacy alerts will be migrated on upgrade to Grafana 9+. To stay on legacy alerting, set unified_alerting_enabled to false and alerting_enabled to true. See https://grafana.com/docs/grafana/latest/alerting/set-up/migrating-alerts/ for more details.
2801  	UnifiedAlertingEnabled *bool `json:"unified_alerting_enabled,omitempty"`
2802  	// Auto-assign new users on signup to main organization. Defaults to false
2803  	UserAutoAssignOrg *bool `json:"user_auto_assign_org,omitempty"`
2804  	// Set role for new signups. Defaults to Viewer
2805  	UserAutoAssignOrgRole JSONSchemaGrafanaUserAutoAssignOrgRole `json:"user_auto_assign_org_role,omitempty"`
2806  	// Users with view-only permission can edit but not save dashboards
2807  	ViewersCanEdit *bool `json:"viewers_can_edit,omitempty"`
2808  	// Setting to enable/disable Write-Ahead Logging. The default value is false (disabled).
2809  	Wal *bool `json:"wal,omitempty"`
2810  }
2811  
2812  type JSONSchemaKafkaCompressionType string
2813  
2814  const (
2815  	JSONSchemaKafkaCompressionTypeGzip         JSONSchemaKafkaCompressionType = "gzip"
2816  	JSONSchemaKafkaCompressionTypeSnappy       JSONSchemaKafkaCompressionType = "snappy"
2817  	JSONSchemaKafkaCompressionTypeLz4          JSONSchemaKafkaCompressionType = "lz4"
2818  	JSONSchemaKafkaCompressionTypeZstd         JSONSchemaKafkaCompressionType = "zstd"
2819  	JSONSchemaKafkaCompressionTypeUncompressed JSONSchemaKafkaCompressionType = "uncompressed"
2820  	JSONSchemaKafkaCompressionTypeProducer     JSONSchemaKafkaCompressionType = "producer"
2821  )
2822  
2823  // Configure log cleaner for topic compaction
2824  type JSONSchemaKafkaLogCleanupAndCompaction struct {
2825  	// How long are delete records retained?
2826  	LogCleanerDeleteRetentionMS int `json:"log_cleaner_delete_retention_ms,omitempty" validate:"omitempty,gte=0,lte=3.1556926e+11"`
2827  	// The maximum amount of time message will remain uncompacted. Only applicable for logs that are being compacted
2828  	LogCleanerMaxCompactionLagMS int `json:"log_cleaner_max_compaction_lag_ms,omitempty" validate:"omitempty,gte=30000,lte=9.223372036854776e+18"`
2829  	// Controls log compactor frequency. Larger value means more frequent compactions but also more space wasted for logs. Consider setting log.cleaner.max.compaction.lag.ms to enforce compactions sooner, instead of setting a very high value for this option.
2830  	LogCleanerMinCleanableRatio float64 `json:"log_cleaner_min_cleanable_ratio,omitempty" validate:"omitempty,gte=0.2,lte=0.9"`
2831  	// The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.
2832  	LogCleanerMinCompactionLagMS int `json:"log_cleaner_min_compaction_lag_ms,omitempty" validate:"omitempty,gte=0,lte=9.223372036854776e+18"`
2833  	// The default cleanup policy for segments beyond the retention window
2834  	LogCleanupPolicy string `json:"log_cleanup_policy,omitempty"`
2835  }
2836  
2837  type JSONSchemaKafkaLogMessageTimestampType string
2838  
2839  const (
2840  	JSONSchemaKafkaLogMessageTimestampTypeCreateTime    JSONSchemaKafkaLogMessageTimestampType = "CreateTime"
2841  	JSONSchemaKafkaLogMessageTimestampTypeLogAppendTime JSONSchemaKafkaLogMessageTimestampType = "LogAppendTime"
2842  )
2843  
2844  // Kafka broker configuration values
2845  type JSONSchemaKafka struct {
2846  	// Enable auto creation of topics
2847  	AutoCreateTopicsEnable *bool `json:"auto_create_topics_enable,omitempty"`
2848  	// Specify the final compression type for a given topic. This configuration accepts the standard compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It additionally accepts 'uncompressed' which is equivalent to no compression; and 'producer' which means retain the original compression codec set by the producer.
2849  	CompressionType JSONSchemaKafkaCompressionType `json:"compression_type,omitempty"`
2850  	// Idle connections timeout: the server socket processor threads close the connections that idle for longer than this.
2851  	ConnectionsMaxIdleMS int `json:"connections_max_idle_ms,omitempty" validate:"omitempty,gte=1000,lte=3.6e+06"`
2852  	// Replication factor for autocreated topics
2853  	DefaultReplicationFactor int `json:"default_replication_factor,omitempty" validate:"omitempty,gte=1,lte=10"`
2854  	// The amount of time, in milliseconds, the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins. The default value for this is 3 seconds. During development and testing it might be desirable to set this to 0 in order to not delay test execution time.
2855  	GroupInitialRebalanceDelayMS int `json:"group_initial_rebalance_delay_ms,omitempty" validate:"omitempty,gte=0,lte=300000"`
2856  	// The maximum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.
2857  	GroupMaxSessionTimeoutMS int `json:"group_max_session_timeout_ms,omitempty" validate:"omitempty,gte=0,lte=1.8e+06"`
2858  	// The minimum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.
2859  	GroupMinSessionTimeoutMS int `json:"group_min_session_timeout_ms,omitempty" validate:"omitempty,gte=0,lte=60000"`
2860  	// Configure log cleaner for topic compaction
2861  	LogCleanupAndCompaction *JSONSchemaKafkaLogCleanupAndCompaction `json:"log-cleanup-and-compaction,omitempty"`
2862  	// The number of messages accumulated on a log partition before messages are flushed to disk
2863  	LogFlushIntervalMessages int `json:"log_flush_interval_messages,omitempty" validate:"omitempty,gte=1,lte=9.223372036854776e+18"`
2864  	// The maximum time in ms that a message in any topic is kept in memory before flushed to disk. If not set, the value in log.flush.scheduler.interval.ms is used
2865  	LogFlushIntervalMS int `json:"log_flush_interval_ms,omitempty" validate:"omitempty,gte=0,lte=9.223372036854776e+18"`
2866  	// The interval with which Kafka adds an entry to the offset index
2867  	LogIndexIntervalBytes int `json:"log_index_interval_bytes,omitempty" validate:"omitempty,gte=0,lte=1.048576e+08"`
2868  	// The maximum size in bytes of the offset index
2869  	LogIndexSizeMaxBytes int `json:"log_index_size_max_bytes,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.048576e+08"`
2870  	// The maximum size of local log segments that can grow for a partition before it gets eligible for deletion. If set to -2, the value of log.retention.bytes is used. The effective value should always be less than or equal to log.retention.bytes value.
2871  	LogLocalRetentionBytes int `json:"log_local_retention_bytes,omitempty" validate:"omitempty,gte=-2,lte=9.223372036854776e+18"`
2872  	// The number of milliseconds to keep the local log segments before it gets eligible for deletion. If set to -2, the value of log.retention.ms is used. The effective value should always be less than or equal to log.retention.ms value.
2873  	LogLocalRetentionMS int `json:"log_local_retention_ms,omitempty" validate:"omitempty,gte=-2,lte=9.223372036854776e+18"`
2874  	// This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests.
2875  	LogMessageDownconversionEnable *bool `json:"log_message_downconversion_enable,omitempty"`
2876  	// The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message
2877  	LogMessageTimestampDifferenceMaxMS int `json:"log_message_timestamp_difference_max_ms,omitempty" validate:"omitempty,gte=0,lte=9.223372036854776e+18"`
2878  	// Define whether the timestamp in the message is message create time or log append time.
2879  	LogMessageTimestampType JSONSchemaKafkaLogMessageTimestampType `json:"log_message_timestamp_type,omitempty"`
2880  	// Should pre allocate file when create new segment?
2881  	LogPreallocate *bool `json:"log_preallocate,omitempty"`
2882  	// The maximum size of the log before deleting messages
2883  	LogRetentionBytes int `json:"log_retention_bytes,omitempty" validate:"omitempty,gte=-1,lte=9.223372036854776e+18"`
2884  	// The number of hours to keep a log file before deleting it
2885  	LogRetentionHours int `json:"log_retention_hours,omitempty" validate:"omitempty,gte=-1,lte=2.147483647e+09"`
2886  	// The number of milliseconds to keep a log file before deleting it (in milliseconds), If not set, the value in log.retention.minutes is used. If set to -1, no time limit is applied.
2887  	LogRetentionMS int `json:"log_retention_ms,omitempty" validate:"omitempty,gte=-1,lte=9.223372036854776e+18"`
2888  	// The maximum jitter to subtract from logRollTimeMillis (in milliseconds). If not set, the value in log.roll.jitter.hours is used
2889  	LogRollJitterMS int `json:"log_roll_jitter_ms,omitempty" validate:"omitempty,gte=0,lte=9.223372036854776e+18"`
2890  	// The maximum time before a new log segment is rolled out (in milliseconds).
2891  	LogRollMS int `json:"log_roll_ms,omitempty" validate:"omitempty,gte=1,lte=9.223372036854776e+18"`
2892  	// The maximum size of a single log file
2893  	LogSegmentBytes int `json:"log_segment_bytes,omitempty" validate:"omitempty,gte=1.048576e+07,lte=1.073741824e+09"`
2894  	// The amount of time to wait before deleting a file from the filesystem
2895  	LogSegmentDeleteDelayMS int `json:"log_segment_delete_delay_ms,omitempty" validate:"omitempty,gte=0,lte=3.6e+06"`
2896  	// The maximum number of connections allowed from each ip address (defaults to 2147483647).
2897  	MaxConnectionsPerIP int `json:"max_connections_per_ip,omitempty" validate:"omitempty,gte=256,lte=2.147483647e+09"`
2898  	// The maximum number of incremental fetch sessions that the broker will maintain.
2899  	MaxIncrementalFetchSessionCacheSlots int `json:"max_incremental_fetch_session_cache_slots,omitempty" validate:"omitempty,gte=1000,lte=10000"`
2900  	// The maximum size of message that the server can receive.
2901  	MessageMaxBytes int `json:"message_max_bytes,omitempty" validate:"omitempty,gte=0,lte=1.000012e+08"`
2902  	// When a producer sets acks to 'all' (or '-1'), min.insync.replicas specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful.
2903  	MinInsyncReplicas int `json:"min_insync_replicas,omitempty" validate:"omitempty,gte=1,lte=7"`
2904  	// Number of partitions for autocreated topics
2905  	NumPartitions int `json:"num_partitions,omitempty" validate:"omitempty,gte=1,lte=1000"`
2906  	// Log retention window in minutes for offsets topic
2907  	OffsetsRetentionMinutes int `json:"offsets_retention_minutes,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
2908  	// The purge interval (in number of requests) of the producer request purgatory(defaults to 1000).
2909  	ProducerPurgatoryPurgeIntervalRequests int `json:"producer_purgatory_purge_interval_requests,omitempty" validate:"omitempty,gte=10,lte=10000"`
2910  	// The number of bytes of messages to attempt to fetch for each partition (defaults to 1048576). This is not an absolute maximum, if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that progress can be made.
2911  	ReplicaFetchMaxBytes int `json:"replica_fetch_max_bytes,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.048576e+08"`
2912  	// Maximum bytes expected for the entire fetch response (defaults to 10485760). Records are fetched in batches, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that progress can be made. As such, this is not an absolute maximum.
2913  	ReplicaFetchResponseMaxBytes int `json:"replica_fetch_response_max_bytes,omitempty" validate:"omitempty,gte=1.048576e+07,lte=1.048576e+09"`
2914  	// The (optional) comma-delimited setting for the broker to use to verify that the JWT was issued for one of the expected audiences.
2915  	SaslOauthbearerExpectedAudience string `json:"sasl_oauthbearer_expected_audience,omitempty" validate:"omitempty,lte=128"`
2916  	// Optional setting for the broker to use to verify that the JWT was created by the expected issuer.
2917  	SaslOauthbearerExpectedIssuer string `json:"sasl_oauthbearer_expected_issuer,omitempty" validate:"omitempty,lte=128"`
2918  	// OIDC JWKS endpoint URL. By setting this the SASL SSL OAuth2/OIDC authentication is enabled. See also other options for SASL OAuth2/OIDC.
2919  	SaslOauthbearerJwksEndpointURL string `json:"sasl_oauthbearer_jwks_endpoint_url,omitempty" validate:"omitempty,lte=2048"`
2920  	// Name of the scope from which to extract the subject claim from the JWT. Defaults to sub.
2921  	SaslOauthbearerSubClaimName string `json:"sasl_oauthbearer_sub_claim_name,omitempty" validate:"omitempty,lte=128"`
2922  	// The maximum number of bytes in a socket request (defaults to 104857600).
2923  	SocketRequestMaxBytes int `json:"socket_request_max_bytes,omitempty" validate:"omitempty,gte=1.048576e+07,lte=2.097152e+08"`
2924  	// Enable verification that checks that the partition has been added to the transaction before writing transactional records to the partition
2925  	TransactionPartitionVerificationEnable *bool `json:"transaction_partition_verification_enable,omitempty"`
2926  	// The interval at which to remove transactions that have expired due to transactional.id.expiration.ms passing (defaults to 3600000 (1 hour)).
2927  	TransactionRemoveExpiredTransactionCleanupIntervalMS int `json:"transaction_remove_expired_transaction_cleanup_interval_ms,omitempty" validate:"omitempty,gte=600000,lte=3.6e+06"`
2928  	// The transaction topic segment bytes should be kept relatively small in order to facilitate faster log compaction and cache loads (defaults to 104857600 (100 mebibytes)).
2929  	TransactionStateLogSegmentBytes int `json:"transaction_state_log_segment_bytes,omitempty" validate:"omitempty,gte=1.048576e+06,lte=2.147483647e+09"`
2930  }
2931  
2932  type JSONSchemaKafkaConnectConnectorClientConfigOverridePolicy string
2933  
2934  const (
2935  	JSONSchemaKafkaConnectConnectorClientConfigOverridePolicyNone JSONSchemaKafkaConnectConnectorClientConfigOverridePolicy = "None"
2936  	JSONSchemaKafkaConnectConnectorClientConfigOverridePolicyAll  JSONSchemaKafkaConnectConnectorClientConfigOverridePolicy = "All"
2937  )
2938  
2939  type JSONSchemaKafkaConnectConsumerAutoOffsetReset string
2940  
2941  const (
2942  	JSONSchemaKafkaConnectConsumerAutoOffsetResetEarliest JSONSchemaKafkaConnectConsumerAutoOffsetReset = "earliest"
2943  	JSONSchemaKafkaConnectConsumerAutoOffsetResetLatest   JSONSchemaKafkaConnectConsumerAutoOffsetReset = "latest"
2944  )
2945  
2946  type JSONSchemaKafkaConnectConsumerIsolationLevel string
2947  
2948  const (
2949  	JSONSchemaKafkaConnectConsumerIsolationLevelReadUncommitted JSONSchemaKafkaConnectConsumerIsolationLevel = "read_uncommitted"
2950  	JSONSchemaKafkaConnectConsumerIsolationLevelReadCommitted   JSONSchemaKafkaConnectConsumerIsolationLevel = "read_committed"
2951  )
2952  
2953  type JSONSchemaKafkaConnectProducerCompressionType string
2954  
2955  const (
2956  	JSONSchemaKafkaConnectProducerCompressionTypeGzip   JSONSchemaKafkaConnectProducerCompressionType = "gzip"
2957  	JSONSchemaKafkaConnectProducerCompressionTypeSnappy JSONSchemaKafkaConnectProducerCompressionType = "snappy"
2958  	JSONSchemaKafkaConnectProducerCompressionTypeLz4    JSONSchemaKafkaConnectProducerCompressionType = "lz4"
2959  	JSONSchemaKafkaConnectProducerCompressionTypeZstd   JSONSchemaKafkaConnectProducerCompressionType = "zstd"
2960  	JSONSchemaKafkaConnectProducerCompressionTypeNone   JSONSchemaKafkaConnectProducerCompressionType = "none"
2961  )
2962  
2963  // Kafka Connect configuration values
2964  type JSONSchemaKafkaConnect struct {
2965  	// Defines what client configurations can be overridden by the connector. Default is None
2966  	ConnectorClientConfigOverridePolicy JSONSchemaKafkaConnectConnectorClientConfigOverridePolicy `json:"connector_client_config_override_policy,omitempty"`
2967  	// What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server. Default is earliest
2968  	ConsumerAutoOffsetReset JSONSchemaKafkaConnectConsumerAutoOffsetReset `json:"consumer_auto_offset_reset,omitempty"`
2969  	// Records are fetched in batches by the consumer, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that the consumer can make progress. As such, this is not a absolute maximum.
2970  	ConsumerFetchMaxBytes int `json:"consumer_fetch_max_bytes,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.048576e+08"`
2971  	// Transaction read isolation level. read_uncommitted is the default, but read_committed can be used if consume-exactly-once behavior is desired.
2972  	ConsumerIsolationLevel JSONSchemaKafkaConnectConsumerIsolationLevel `json:"consumer_isolation_level,omitempty"`
2973  	// Records are fetched in batches by the consumer.If the first record batch in the first non-empty partition of the fetch is larger than this limit, the batch will still be returned to ensure that the consumer can make progress.
2974  	ConsumerMaxPartitionFetchBytes int `json:"consumer_max_partition_fetch_bytes,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.048576e+08"`
2975  	// The maximum delay in milliseconds between invocations of poll() when using consumer group management (defaults to 300000).
2976  	ConsumerMaxPollIntervalMS int `json:"consumer_max_poll_interval_ms,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
2977  	// The maximum number of records returned in a single call to poll() (defaults to 500).
2978  	ConsumerMaxPollRecords int `json:"consumer_max_poll_records,omitempty" validate:"omitempty,gte=1,lte=10000"`
2979  	// The interval at which to try committing offsets for tasks (defaults to 60000).
2980  	OffsetFlushIntervalMS int `json:"offset_flush_interval_ms,omitempty" validate:"omitempty,gte=1,lte=1e+08"`
2981  	// Maximum number of milliseconds to wait for records to flush and partition offset data to be committed to offset storage before cancelling the process and restoring the offset data to be committed in a future attempt (defaults to 5000).
2982  	OffsetFlushTimeoutMS int `json:"offset_flush_timeout_ms,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
2983  	// This setting gives the upper bound of the batch size to be sent. If there are fewer than this many bytes accumulated for this partition, the producer will 'linger' for the linger.ms time waiting for more records to show up. A batch size of zero will disable batching entirely (defaults to 16384).
2984  	ProducerBatchSize int `json:"producer_batch_size,omitempty" validate:"omitempty,gte=0,lte=5.24288e+06"`
2985  	// The total bytes of memory the producer can use to buffer records waiting to be sent to the broker (defaults to 33554432).
2986  	ProducerBufferMemory int `json:"producer_buffer_memory,omitempty" validate:"omitempty,gte=5.24288e+06,lte=1.34217728e+08"`
2987  	// Specify the default compression type for producers. This configuration accepts the standard compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It additionally accepts 'none' which is the default and equivalent to no compression.
2988  	ProducerCompressionType JSONSchemaKafkaConnectProducerCompressionType `json:"producer_compression_type,omitempty"`
2989  	// This setting gives the upper bound on the delay for batching: once there is batch.size worth of records for a partition it will be sent immediately regardless of this setting, however if there are fewer than this many bytes accumulated for this partition the producer will 'linger' for the specified time waiting for more records to show up. Defaults to 0.
2990  	ProducerLingerMS int `json:"producer_linger_ms,omitempty" validate:"omitempty,gte=0,lte=5000"`
2991  	// This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests.
2992  	ProducerMaxRequestSize int `json:"producer_max_request_size,omitempty" validate:"omitempty,gte=131072,lte=6.7108864e+07"`
2993  	// The maximum delay that is scheduled in order to wait for the return of one or more departed workers before rebalancing and reassigning their connectors and tasks to the group. During this period the connectors and tasks of the departed workers remain unassigned. Defaults to 5 minutes.
2994  	ScheduledRebalanceMaxDelayMS int `json:"scheduled_rebalance_max_delay_ms,omitempty" validate:"omitempty,gte=0,lte=600000"`
2995  	// The timeout in milliseconds used to detect failures when using Kafka’s group management facilities (defaults to 10000).
2996  	SessionTimeoutMS int `json:"session_timeout_ms,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
2997  }
2998  
2999  type JSONSchemaKafkaRestConsumerRequestTimeoutMS int
3000  
3001  const (
3002  	JSONSchemaKafkaRestConsumerRequestTimeoutMS1000  JSONSchemaKafkaRestConsumerRequestTimeoutMS = 1000
3003  	JSONSchemaKafkaRestConsumerRequestTimeoutMS15000 JSONSchemaKafkaRestConsumerRequestTimeoutMS = 15000
3004  	JSONSchemaKafkaRestConsumerRequestTimeoutMS30000 JSONSchemaKafkaRestConsumerRequestTimeoutMS = 30000
3005  )
3006  
3007  type JSONSchemaKafkaRestNameStrategy string
3008  
3009  const (
3010  	JSONSchemaKafkaRestNameStrategyTopicName       JSONSchemaKafkaRestNameStrategy = "topic_name"
3011  	JSONSchemaKafkaRestNameStrategyRecordName      JSONSchemaKafkaRestNameStrategy = "record_name"
3012  	JSONSchemaKafkaRestNameStrategyTopicRecordName JSONSchemaKafkaRestNameStrategy = "topic_record_name"
3013  )
3014  
3015  type JSONSchemaKafkaRestProducerCompressionType string
3016  
3017  const (
3018  	JSONSchemaKafkaRestProducerCompressionTypeGzip   JSONSchemaKafkaRestProducerCompressionType = "gzip"
3019  	JSONSchemaKafkaRestProducerCompressionTypeSnappy JSONSchemaKafkaRestProducerCompressionType = "snappy"
3020  	JSONSchemaKafkaRestProducerCompressionTypeLz4    JSONSchemaKafkaRestProducerCompressionType = "lz4"
3021  	JSONSchemaKafkaRestProducerCompressionTypeZstd   JSONSchemaKafkaRestProducerCompressionType = "zstd"
3022  	JSONSchemaKafkaRestProducerCompressionTypeNone   JSONSchemaKafkaRestProducerCompressionType = "none"
3023  )
3024  
3025  // Kafka REST configuration
3026  type JSONSchemaKafkaRest struct {
3027  	// If true the consumer's offset will be periodically committed to Kafka in the background
3028  	ConsumerEnableAutoCommit *bool `json:"consumer_enable_auto_commit,omitempty"`
3029  	// Maximum number of bytes in unencoded message keys and values by a single request
3030  	ConsumerRequestMaxBytes int `json:"consumer_request_max_bytes,omitempty" validate:"omitempty,gte=0,lte=6.7108864e+08"`
3031  	// The maximum total time to wait for messages for a request if the maximum number of messages has not yet been reached
3032  	ConsumerRequestTimeoutMS JSONSchemaKafkaRestConsumerRequestTimeoutMS `json:"consumer_request_timeout_ms,omitempty"`
3033  	// Name strategy to use when selecting subject for storing schemas
3034  	NameStrategy JSONSchemaKafkaRestNameStrategy `json:"name_strategy,omitempty"`
3035  	// If true, validate that given schema is registered under expected subject name by the used name strategy when producing messages.
3036  	NameStrategyValidation *bool `json:"name_strategy_validation,omitempty"`
3037  	// The number of acknowledgments the producer requires the leader to have received before considering a request complete. If set to 'all' or '-1', the leader will wait for the full set of in-sync replicas to acknowledge the record.
3038  	ProducerAcks string `json:"producer_acks,omitempty"`
3039  	// Specify the default compression type for producers. This configuration accepts the standard compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It additionally accepts 'none' which is the default and equivalent to no compression.
3040  	ProducerCompressionType JSONSchemaKafkaRestProducerCompressionType `json:"producer_compression_type,omitempty"`
3041  	// Wait for up to the given delay to allow batching records together
3042  	ProducerLingerMS int `json:"producer_linger_ms,omitempty" validate:"omitempty,gte=0,lte=5000"`
3043  	// The maximum size of a request in bytes. Note that Kafka broker can also cap the record batch size.
3044  	ProducerMaxRequestSize int `json:"producer_max_request_size,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3045  	// Maximum number of SimpleConsumers that can be instantiated per broker
3046  	SimpleconsumerPoolSizeMax int `json:"simpleconsumer_pool_size_max,omitempty" validate:"omitempty,gte=10,lte=250"`
3047  }
3048  
3049  type JSONSchemaMysqlInternalTmpMemStorageEngine string
3050  
3051  const (
3052  	JSONSchemaMysqlInternalTmpMemStorageEngineTempTable JSONSchemaMysqlInternalTmpMemStorageEngine = "TempTable"
3053  	JSONSchemaMysqlInternalTmpMemStorageEngineMEMORY    JSONSchemaMysqlInternalTmpMemStorageEngine = "MEMORY"
3054  )
3055  
3056  // mysql.conf configuration values
3057  type JSONSchemaMysql struct {
3058  	// The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake
3059  	ConnectTimeout int `json:"connect_timeout,omitempty" validate:"omitempty,gte=2,lte=3600"`
3060  	// Default server time zone as an offset from UTC (from -12:00 to +12:00), a time zone name, or 'SYSTEM' to use the MySQL server default.
3061  	DefaultTimeZone string `json:"default_time_zone,omitempty" validate:"omitempty,gte=2,lte=100"`
3062  	// The maximum permitted result length in bytes for the GROUP_CONCAT() function.
3063  	GroupConcatMaxLen int `json:"group_concat_max_len,omitempty" validate:"omitempty,gte=4,lte=1.8446744073709552e+19"`
3064  	// The time, in seconds, before cached statistics expire
3065  	InformationSchemaStatsExpiry int `json:"information_schema_stats_expiry,omitempty" validate:"omitempty,gte=900,lte=3.1536e+07"`
3066  	// Maximum size for the InnoDB change buffer, as a percentage of the total size of the buffer pool. Default is 25
3067  	InnodbChangeBufferMaxSize int `json:"innodb_change_buffer_max_size,omitempty" validate:"omitempty,gte=0,lte=50"`
3068  	// Specifies whether flushing a page from the InnoDB buffer pool also flushes other dirty pages in the same extent (default is 1): 0 - dirty pages in the same extent are not flushed, 1 - flush contiguous dirty pages in the same extent, 2 - flush dirty pages in the same extent
3069  	InnodbFlushNeighbors int `json:"innodb_flush_neighbors,omitempty" validate:"omitempty,gte=0,lte=2"`
3070  	// Minimum length of words that are stored in an InnoDB FULLTEXT index. Changing this parameter will lead to a restart of the MySQL service.
3071  	InnodbFTMinTokenSize int `json:"innodb_ft_min_token_size,omitempty" validate:"omitempty,gte=0,lte=16"`
3072  	// This option is used to specify your own InnoDB FULLTEXT index stopword list for all InnoDB tables.
3073  	InnodbFTServerStopwordTable *string `json:"innodb_ft_server_stopword_table,omitempty" validate:"omitempty,lte=1024"`
3074  	// The length of time in seconds an InnoDB transaction waits for a row lock before giving up. Default is 120.
3075  	InnodbLockWaitTimeout int `json:"innodb_lock_wait_timeout,omitempty" validate:"omitempty,gte=1,lte=3600"`
3076  	// The size in bytes of the buffer that InnoDB uses to write to the log files on disk.
3077  	InnodbLogBufferSize int `json:"innodb_log_buffer_size,omitempty" validate:"omitempty,gte=1.048576e+06,lte=4.294967295e+09"`
3078  	// The upper limit in bytes on the size of the temporary log files used during online DDL operations for InnoDB tables.
3079  	InnodbOnlineAlterLogMaxSize int `json:"innodb_online_alter_log_max_size,omitempty" validate:"omitempty,gte=65536,lte=1.099511627776e+12"`
3080  	// When enabled, information about all deadlocks in InnoDB user transactions is recorded in the error log. Disabled by default.
3081  	InnodbPrintAllDeadlocks *bool `json:"innodb_print_all_deadlocks,omitempty"`
3082  	// The number of I/O threads for read operations in InnoDB. Default is 4. Changing this parameter will lead to a restart of the MySQL service.
3083  	InnodbReadIoThreads int `json:"innodb_read_io_threads,omitempty" validate:"omitempty,gte=1,lte=64"`
3084  	// When enabled a transaction timeout causes InnoDB to abort and roll back the entire transaction. Changing this parameter will lead to a restart of the MySQL service.
3085  	InnodbRollbackOnTimeout *bool `json:"innodb_rollback_on_timeout,omitempty"`
3086  	// Defines the maximum number of threads permitted inside of InnoDB. Default is 0 (infinite concurrency - no limit)
3087  	InnodbThreadConcurrency int `json:"innodb_thread_concurrency,omitempty" validate:"omitempty,gte=0,lte=1000"`
3088  	// The number of I/O threads for write operations in InnoDB. Default is 4. Changing this parameter will lead to a restart of the MySQL service.
3089  	InnodbWriteIoThreads int `json:"innodb_write_io_threads,omitempty" validate:"omitempty,gte=1,lte=64"`
3090  	// The number of seconds the server waits for activity on an interactive connection before closing it.
3091  	InteractiveTimeout int `json:"interactive_timeout,omitempty" validate:"omitempty,gte=30,lte=604800"`
3092  	// The storage engine for in-memory internal temporary tables.
3093  	InternalTmpMemStorageEngine JSONSchemaMysqlInternalTmpMemStorageEngine `json:"internal_tmp_mem_storage_engine,omitempty"`
3094  	// The slow log output destination when slow_query_log is ON. To enable MySQL AI Insights, choose INSIGHTS. To use MySQL AI Insights and the mysql.slow_log table at the same time, choose INSIGHTS,TABLE. To only use the mysql.slow_log table, choose TABLE. To silence slow logs, choose NONE.
3095  	LogOutput string `json:"log_output,omitempty"`
3096  	// The slow_query_logs work as SQL statements that take more than long_query_time seconds to execute. Default is 10s
3097  	LongQueryTime float64 `json:"long_query_time,omitempty" validate:"omitempty,gte=0,lte=3600"`
3098  	// Size of the largest message in bytes that can be received by the server. Default is 67108864 (64M)
3099  	MaxAllowedPacket int `json:"max_allowed_packet,omitempty" validate:"omitempty,gte=102400,lte=1.073741824e+09"`
3100  	// Limits the size of internal in-memory tables. Also set tmp_table_size. Default is 16777216 (16M)
3101  	MaxHeapTableSize int `json:"max_heap_table_size,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.073741824e+09"`
3102  	// Start sizes of connection buffer and result buffer. Default is 16384 (16K). Changing this parameter will lead to a restart of the MySQL service.
3103  	NetBufferLength int `json:"net_buffer_length,omitempty" validate:"omitempty,gte=1024,lte=1.048576e+06"`
3104  	// The number of seconds to wait for more data from a connection before aborting the read.
3105  	NetReadTimeout int `json:"net_read_timeout,omitempty" validate:"omitempty,gte=1,lte=3600"`
3106  	// The number of seconds to wait for a block to be written to a connection before aborting the write.
3107  	NetWriteTimeout int `json:"net_write_timeout,omitempty" validate:"omitempty,gte=1,lte=3600"`
3108  	// Slow query log enables capturing of slow queries. Setting slow_query_log to false also truncates the mysql.slow_log table. Default is off
3109  	SlowQueryLog *bool `json:"slow_query_log,omitempty"`
3110  	// Sort buffer size in bytes for ORDER BY optimization. Default is 262144 (256K)
3111  	SortBufferSize int `json:"sort_buffer_size,omitempty" validate:"omitempty,gte=32768,lte=1.073741824e+09"`
3112  	// Global SQL mode. Set to empty to use MySQL server defaults. When creating a new service and not setting this field Aiven default SQL mode (strict, SQL standard compliant) will be assigned.
3113  	SQLMode string `json:"sql_mode,omitempty" validate:"omitempty,lte=1024"`
3114  	// Require primary key to be defined for new tables or old tables modified with ALTER TABLE and fail if missing. It is recommended to always have primary keys because various functionality may break if any large table is missing them.
3115  	SQLRequirePrimaryKey *bool `json:"sql_require_primary_key,omitempty"`
3116  	// Limits the size of internal in-memory tables. Also set max_heap_table_size. Default is 16777216 (16M)
3117  	TmpTableSize int `json:"tmp_table_size,omitempty" validate:"omitempty,gte=1.048576e+06,lte=1.073741824e+09"`
3118  	// The number of seconds the server waits for activity on a noninteractive connection before closing it.
3119  	WaitTimeout int `json:"wait_timeout,omitempty" validate:"omitempty,gte=1,lte=2.147483e+06"`
3120  }
3121  
3122  type JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingAuthenticationBackend string
3123  
3124  const (
3125  	JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingAuthenticationBackendInternal JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingAuthenticationBackend = "internal"
3126  )
3127  
3128  type JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingType string
3129  
3130  const (
3131  	JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingTypeUsername JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingType = "username"
3132  )
3133  
3134  // Internal Authentication Backend Limiting
3135  type JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimiting struct {
3136  	// The number of login attempts allowed before login is blocked
3137  	AllowedTries int `json:"allowed_tries,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3138  	// The internal backend. Enter `internal`
3139  	AuthenticationBackend JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingAuthenticationBackend `json:"authentication_backend,omitempty" validate:"omitempty,lte=1024"`
3140  	// The duration of time that login remains blocked after a failed login
3141  	BlockExpirySeconds int `json:"block_expiry_seconds,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3142  	// The maximum number of blocked IP addresses
3143  	MaxBlockedClients int `json:"max_blocked_clients,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3144  	// The maximum number of tracked IP addresses that have failed login
3145  	MaxTrackedClients int `json:"max_tracked_clients,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3146  	// The window of time in which the value for `allowed_tries` is enforced
3147  	TimeWindowSeconds int `json:"time_window_seconds,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3148  	// The type of rate limiting
3149  	Type JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimitingType `json:"type,omitempty" validate:"omitempty,lte=1024"`
3150  }
3151  
3152  type JSONSchemaOpensearchAuthFailureListenersIPRateLimitingType string
3153  
3154  const (
3155  	JSONSchemaOpensearchAuthFailureListenersIPRateLimitingTypeIP JSONSchemaOpensearchAuthFailureListenersIPRateLimitingType = "ip"
3156  )
3157  
3158  // IP address rate limiting settings
3159  type JSONSchemaOpensearchAuthFailureListenersIPRateLimiting struct {
3160  	// The number of login attempts allowed before login is blocked
3161  	AllowedTries int `json:"allowed_tries,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
3162  	// The duration of time that login remains blocked after a failed login
3163  	BlockExpirySeconds int `json:"block_expiry_seconds,omitempty" validate:"omitempty,gte=1,lte=36000"`
3164  	// The maximum number of blocked IP addresses
3165  	MaxBlockedClients int `json:"max_blocked_clients,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3166  	// The maximum number of tracked IP addresses that have failed login
3167  	MaxTrackedClients int `json:"max_tracked_clients,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3168  	// The window of time in which the value for `allowed_tries` is enforced
3169  	TimeWindowSeconds int `json:"time_window_seconds,omitempty" validate:"omitempty,gte=1,lte=36000"`
3170  	// The type of rate limiting
3171  	Type JSONSchemaOpensearchAuthFailureListenersIPRateLimitingType `json:"type,omitempty" validate:"omitempty,lte=1024"`
3172  }
3173  
3174  // Opensearch Security Plugin Settings
3175  type JSONSchemaOpensearchAuthFailureListeners struct {
3176  	// Internal Authentication Backend Limiting
3177  	InternalAuthenticationBackendLimiting *JSONSchemaOpensearchAuthFailureListenersInternalAuthenticationBackendLimiting `json:"internal_authentication_backend_limiting,omitempty"`
3178  	// IP address rate limiting settings
3179  	IPRateLimiting *JSONSchemaOpensearchAuthFailureListenersIPRateLimiting `json:"ip_rate_limiting,omitempty"`
3180  }
3181  
3182  // Opensearch Email Sender Settings
3183  type JSONSchemaOpensearchEmailSender struct {
3184  	// This should be identical to the Sender name defined in Opensearch dashboards
3185  	EmailSenderName string `json:"email_sender_name" validate:"required,lte=40"`
3186  	// Sender password for Opensearch alerts to authenticate with SMTP server
3187  	EmailSenderPassword string `json:"email_sender_password" validate:"required,lte=1024"`
3188  	// Sender username for Opensearch alerts
3189  	EmailSenderUsername string `json:"email_sender_username" validate:"required,lte=320"`
3190  }
3191  
3192  // Opensearch ISM History Settings
3193  type JSONSchemaOpensearchIsmHistory struct {
3194  	// Specifies whether ISM is enabled or not
3195  	IsmEnabled *bool `json:"ism_enabled" validate:"required"`
3196  	// Specifies whether audit history is enabled or not. The logs from ISM are automatically indexed to a logs document.
3197  	IsmHistoryEnabled *bool `json:"ism_history_enabled,omitempty"`
3198  	// The maximum age before rolling over the audit history index in hours
3199  	IsmHistoryMaxAge int `json:"ism_history_max_age,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
3200  	// The maximum number of documents before rolling over the audit history index.
3201  	IsmHistoryMaxDocs int `json:"ism_history_max_docs,omitempty" validate:"omitempty,gte=1,lte=9.223372036854776e+18"`
3202  	// The time between rollover checks for the audit history index in hours.
3203  	IsmHistoryRolloverCheckPeriod int `json:"ism_history_rollover_check_period,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
3204  	// How long audit history indices are kept in days.
3205  	IsmHistoryRolloverRetentionPeriod int `json:"ism_history_rollover_retention_period,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
3206  }
3207  
3208  type JSONSchemaOpensearchSearchBackpressureMode string
3209  
3210  const (
3211  	JSONSchemaOpensearchSearchBackpressureModeMonitorOnly JSONSchemaOpensearchSearchBackpressureMode = "monitor_only"
3212  	JSONSchemaOpensearchSearchBackpressureModeEnforced    JSONSchemaOpensearchSearchBackpressureMode = "enforced"
3213  	JSONSchemaOpensearchSearchBackpressureModeDisabled    JSONSchemaOpensearchSearchBackpressureMode = "disabled"
3214  )
3215  
3216  // Node duress settings
3217  type JSONSchemaOpensearchSearchBackpressureNodeDuress struct {
3218  	// The CPU usage threshold (as a percentage) required for a node to be considered to be under duress. Default is 0.9
3219  	CPUThreshold float64 `json:"cpu_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3220  	// The heap usage threshold (as a percentage) required for a node to be considered to be under duress. Default is 0.7
3221  	HeapThreshold float64 `json:"heap_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3222  	// The number of successive limit breaches after which the node is considered to be under duress. Default is 3
3223  	NumSuccessiveBreaches int `json:"num_successive_breaches,omitempty" validate:"omitempty,gte=1"`
3224  }
3225  
3226  // Search shard settings
3227  type JSONSchemaOpensearchSearchBackpressureSearchShardTask struct {
3228  	// The maximum number of search tasks to cancel in a single iteration of the observer thread. Default is 10.0
3229  	CancellationBurst float64 `json:"cancellation_burst,omitempty" validate:"omitempty,gte=1"`
3230  	// The maximum number of tasks to cancel per millisecond of elapsed time. Default is 0.003
3231  	CancellationRate float64 `json:"cancellation_rate,omitempty" validate:"omitempty,gte=0"`
3232  	// The maximum number of tasks to cancel, as a percentage of successful task completions. Default is 0.1
3233  	CancellationRatio float64 `json:"cancellation_ratio,omitempty" validate:"omitempty,gte=0,lte=1"`
3234  	// The CPU usage threshold (in milliseconds) required for a single search shard task before it is considered for cancellation. Default is 15000
3235  	CPUTimeMillisThreshold int `json:"cpu_time_millis_threshold,omitempty" validate:"omitempty,gte=0"`
3236  	// The elapsed time threshold (in milliseconds) required for a single search shard task before it is considered for cancellation. Default is 30000
3237  	ElapsedTimeMillisThreshold int `json:"elapsed_time_millis_threshold,omitempty" validate:"omitempty,gte=0"`
3238  	// The number of previously completed search shard tasks to consider when calculating the rolling average of heap usage. Default is 100
3239  	HeapMovingAverageWindowSize int `json:"heap_moving_average_window_size,omitempty" validate:"omitempty,gte=0"`
3240  	// The heap usage threshold (as a percentage) required for a single search shard task before it is considered for cancellation. Default is 0.5
3241  	HeapPercentThreshold float64 `json:"heap_percent_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3242  	// The minimum variance required for a single search shard task’s heap usage compared to the rolling average of previously completed tasks before it is considered for cancellation. Default is 2.0
3243  	HeapVariance float64 `json:"heap_variance,omitempty" validate:"omitempty,gte=0"`
3244  	// The heap usage threshold (as a percentage) required for the sum of heap usages of all search shard tasks before cancellation is applied. Default is 0.5
3245  	TotalHeapPercentThreshold float64 `json:"total_heap_percent_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3246  }
3247  
3248  // Search task settings
3249  type JSONSchemaOpensearchSearchBackpressureSearchTask struct {
3250  	// The maximum number of search tasks to cancel in a single iteration of the observer thread. Default is 5.0
3251  	CancellationBurst float64 `json:"cancellation_burst,omitempty" validate:"omitempty,gte=1"`
3252  	// The maximum number of search tasks to cancel per millisecond of elapsed time. Default is 0.003
3253  	CancellationRate float64 `json:"cancellation_rate,omitempty" validate:"omitempty,gte=0"`
3254  	// The maximum number of search tasks to cancel, as a percentage of successful search task completions. Default is 0.1
3255  	CancellationRatio float64 `json:"cancellation_ratio,omitempty" validate:"omitempty,gte=0,lte=1"`
3256  	// The CPU usage threshold (in milliseconds) required for an individual parent task before it is considered for cancellation. Default is 30000
3257  	CPUTimeMillisThreshold int `json:"cpu_time_millis_threshold,omitempty" validate:"omitempty,gte=0"`
3258  	// The elapsed time threshold (in milliseconds) required for an individual parent task before it is considered for cancellation. Default is 45000
3259  	ElapsedTimeMillisThreshold int `json:"elapsed_time_millis_threshold,omitempty" validate:"omitempty,gte=0"`
3260  	// The window size used to calculate the rolling average of the heap usage for the completed parent tasks. Default is 10
3261  	HeapMovingAverageWindowSize int `json:"heap_moving_average_window_size,omitempty" validate:"omitempty,gte=0"`
3262  	// The heap usage threshold (as a percentage) required for an individual parent task before it is considered for cancellation. Default is 0.2
3263  	HeapPercentThreshold float64 `json:"heap_percent_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3264  	// The heap usage variance required for an individual parent task before it is considered for cancellation. A task is considered for cancellation when taskHeapUsage is greater than or equal to heapUsageMovingAverage * variance. Default is 2.0
3265  	HeapVariance float64 `json:"heap_variance,omitempty" validate:"omitempty,gte=0"`
3266  	// The heap usage threshold (as a percentage) required for the sum of heap usages of all search tasks before cancellation is applied. Default is 0.5
3267  	TotalHeapPercentThreshold float64 `json:"total_heap_percent_threshold,omitempty" validate:"omitempty,gte=0,lte=1"`
3268  }
3269  
3270  // Search Backpressure Settings
3271  type JSONSchemaOpensearchSearchBackpressure struct {
3272  	// The search backpressure mode. Valid values are monitor_only, enforced, or disabled. Default is monitor_only
3273  	Mode JSONSchemaOpensearchSearchBackpressureMode `json:"mode,omitempty"`
3274  	// Node duress settings
3275  	NodeDuress *JSONSchemaOpensearchSearchBackpressureNodeDuress `json:"node_duress,omitempty"`
3276  	// Search shard settings
3277  	SearchShardTask *JSONSchemaOpensearchSearchBackpressureSearchShardTask `json:"search_shard_task,omitempty"`
3278  	// Search task settings
3279  	SearchTask *JSONSchemaOpensearchSearchBackpressureSearchTask `json:"search_task,omitempty"`
3280  }
3281  
3282  // Operating factor
3283  type JSONSchemaOpensearchShardIndexingPressureOperatingFactor struct {
3284  	// Specify the lower occupancy limit of the allocated quota of memory for the shard. If the total memory usage of a shard is below this limit, shard indexing backpressure decreases the current allocated memory for that shard. Default is 0.75
3285  	Lower float64 `json:"lower,omitempty" validate:"omitempty,gte=0"`
3286  	// Specify the optimal occupancy of the allocated quota of memory for the shard. If the total memory usage of a shard is at this level, shard indexing backpressure doesn’t change the current allocated memory for that shard. Default is 0.85
3287  	Optimal float64 `json:"optimal,omitempty" validate:"omitempty,gte=0"`
3288  	// Specify the upper occupancy limit of the allocated quota of memory for the shard. If the total memory usage of a shard is above this limit, shard indexing backpressure increases the current allocated memory for that shard. Default is 0.95
3289  	Upper float64 `json:"upper,omitempty" validate:"omitempty,gte=0"`
3290  }
3291  
3292  type JSONSchemaOpensearchShardIndexingPressurePrimaryParameterNode struct {
3293  	// Define the percentage of the node-level memory threshold that acts as a soft indicator for strain on a node. Default is 0.7
3294  	SoftLimit float64 `json:"soft_limit,omitempty" validate:"omitempty,gte=0"`
3295  }
3296  
3297  type JSONSchemaOpensearchShardIndexingPressurePrimaryParameterShard struct {
3298  	// Specify the minimum assigned quota for a new shard in any role (coordinator, primary, or replica). Shard indexing backpressure increases or decreases this allocated quota based on the inflow of traffic for the shard. Default is 0.001
3299  	MinLimit float64 `json:"min_limit,omitempty" validate:"omitempty,gte=0"`
3300  }
3301  
3302  // Primary parameter
3303  type JSONSchemaOpensearchShardIndexingPressurePrimaryParameter struct {
3304  	Node  *JSONSchemaOpensearchShardIndexingPressurePrimaryParameterNode  `json:"node,omitempty"`
3305  	Shard *JSONSchemaOpensearchShardIndexingPressurePrimaryParameterShard `json:"shard,omitempty"`
3306  }
3307  
3308  // Shard indexing back pressure settings
3309  type JSONSchemaOpensearchShardIndexingPressure struct {
3310  	// Enable or disable shard indexing backpressure. Default is false
3311  	Enabled *bool `json:"enabled,omitempty"`
3312  	// Run shard indexing backpressure in shadow mode or enforced mode. In shadow mode (value set as false), shard indexing backpressure tracks all granular-level metrics, but it doesn’t actually reject any indexing requests. In enforced mode (value set as true), shard indexing backpressure rejects any requests to the cluster that might cause a dip in its performance. Default is false
3313  	Enforced *bool `json:"enforced,omitempty"`
3314  	// Operating factor
3315  	OperatingFactor *JSONSchemaOpensearchShardIndexingPressureOperatingFactor `json:"operating_factor,omitempty"`
3316  	// Primary parameter
3317  	PrimaryParameter *JSONSchemaOpensearchShardIndexingPressurePrimaryParameter `json:"primary_parameter,omitempty"`
3318  }
3319  
3320  // OpenSearch settings
3321  type JSONSchemaOpensearch struct {
3322  	// Explicitly allow or block automatic creation of indices. Defaults to true
3323  	ActionAutoCreateIndexEnabled *bool `json:"action_auto_create_index_enabled,omitempty"`
3324  	// Require explicit index names when deleting
3325  	ActionDestructiveRequiresName *bool `json:"action_destructive_requires_name,omitempty"`
3326  	// Opensearch Security Plugin Settings
3327  	AuthFailureListeners *JSONSchemaOpensearchAuthFailureListeners `json:"auth_failure_listeners,omitempty"`
3328  	// Controls the number of shards allowed in the cluster per data node
3329  	ClusterMaxShardsPerNode int `json:"cluster_max_shards_per_node,omitempty" validate:"omitempty,gte=100,lte=10000"`
3330  	// How many concurrent incoming/outgoing shard recoveries (normally replicas) are allowed to happen on a node. Defaults to 2.
3331  	ClusterRoutingAllocationNodeConcurrentRecoveries int `json:"cluster_routing_allocation_node_concurrent_recoveries,omitempty" validate:"omitempty,gte=2,lte=16"`
3332  	// Opensearch Email Sender Settings
3333  	EmailSender *JSONSchemaOpensearchEmailSender `json:"email-sender,omitempty"`
3334  	// Enable/Disable security audit
3335  	EnableSecurityAudit *bool `json:"enable_security_audit,omitempty"`
3336  	// Maximum content length for HTTP requests to the OpenSearch HTTP API, in bytes.
3337  	HTTPMaxContentLength int `json:"http_max_content_length,omitempty" validate:"omitempty,gte=1,lte=2.147483647e+09"`
3338  	// The max size of allowed headers, in bytes
3339  	HTTPMaxHeaderSize int `json:"http_max_header_size,omitempty" validate:"omitempty,gte=1024,lte=262144"`
3340  	// The max length of an HTTP URL, in bytes
3341  	HTTPMaxInitialLineLength int `json:"http_max_initial_line_length,omitempty" validate:"omitempty,gte=1024,lte=65536"`
3342  	// Relative amount. Maximum amount of heap memory used for field data cache. This is an expert setting; decreasing the value too much will increase overhead of loading field data; too much memory used for field data cache will decrease amount of heap available for other operations.
3343  	IndicesFielddataCacheSize *int `json:"indices_fielddata_cache_size,omitempty" validate:"omitempty,gte=3,lte=100"`
3344  	// Percentage value. Default is 10%. Total amount of heap used for indexing buffer, before writing segments to disk. This is an expert setting. Too low value will slow down indexing; too high value will increase indexing performance but causes performance issues for query performance.
3345  	IndicesMemoryIndexBufferSize int `json:"indices_memory_index_buffer_size,omitempty" validate:"omitempty,gte=3,lte=40"`
3346  	// Absolute value. Default is unbound. Doesn't work without indices.memory.index_buffer_size. Maximum amount of heap used for query cache, an absolute indices.memory.index_buffer_size maximum hard limit.
3347  	IndicesMemoryMaxIndexBufferSize int `json:"indices_memory_max_index_buffer_size,omitempty" validate:"omitempty,gte=3,lte=2048"`
3348  	// Absolute value. Default is 48mb. Doesn't work without indices.memory.index_buffer_size. Minimum amount of heap used for query cache, an absolute indices.memory.index_buffer_size minimal hard limit.
3349  	IndicesMemoryMinIndexBufferSize int `json:"indices_memory_min_index_buffer_size,omitempty" validate:"omitempty,gte=3,lte=2048"`
3350  	// Percentage value. Default is 10%. Maximum amount of heap used for query cache. This is an expert setting. Too low value will decrease query performance and increase performance for other operations; too high value will cause issues with other OpenSearch functionality.
3351  	IndicesQueriesCacheSize int `json:"indices_queries_cache_size,omitempty" validate:"omitempty,gte=3,lte=40"`
3352  	// Maximum number of clauses Lucene BooleanQuery can have. The default value (1024) is relatively high, and increasing it may cause performance issues. Investigate other approaches first before increasing this value.
3353  	IndicesQueryBoolMaxClauseCount int `json:"indices_query_bool_max_clause_count,omitempty" validate:"omitempty,gte=64,lte=4096"`
3354  	// Limits total inbound and outbound recovery traffic for each node. Applies to both peer recoveries as well as snapshot recoveries (i.e., restores from a snapshot). Defaults to 40mb
3355  	IndicesRecoveryMaxBytesPerSec int `json:"indices_recovery_max_bytes_per_sec,omitempty" validate:"omitempty,gte=40,lte=400"`
3356  	// Number of file chunks sent in parallel for each recovery. Defaults to 2.
3357  	IndicesRecoveryMaxConcurrentFileChunks int `json:"indices_recovery_max_concurrent_file_chunks,omitempty" validate:"omitempty,gte=2,lte=5"`
3358  	// Opensearch ISM History Settings
3359  	IsmHistory *JSONSchemaOpensearchIsmHistory `json:"ism-history,omitempty"`
3360  	// Enable or disable KNN memory circuit breaker. Defaults to true.
3361  	KnnMemoryCircuitBreakerEnabled *bool `json:"knn_memory_circuit_breaker_enabled,omitempty"`
3362  	// Maximum amount of memory that can be used for KNN index. Defaults to 50% of the JVM heap size.
3363  	KnnMemoryCircuitBreakerLimit int `json:"knn_memory_circuit_breaker_limit,omitempty" validate:"omitempty,gte=3,lte=100"`
3364  	// Compatibility mode sets OpenSearch to report its version as 7.10 so clients continue to work. Default is false
3365  	OverrideMainResponseVersion *bool `json:"override_main_response_version,omitempty"`
3366  	// Enable or disable filtering of alerting by backend roles. Requires Security plugin. Defaults to false
3367  	PluginsAlertingFilterByBackendRoles *bool `json:"plugins_alerting_filter_by_backend_roles,omitempty"`
3368  	// Whitelisted addresses for reindexing. Changing this value will cause all OpenSearch instances to restart.
3369  	ReindexRemoteWhitelist []string `json:"reindex_remote_whitelist"`
3370  	// Script compilation circuit breaker limits the number of inline script compilations within a period of time. Default is use-context
3371  	ScriptMaxCompilationsRate string `json:"script_max_compilations_rate,omitempty" validate:"omitempty,lte=1024"`
3372  	// Search Backpressure Settings
3373  	SearchBackpressure *JSONSchemaOpensearchSearchBackpressure `json:"search_backpressure,omitempty"`
3374  	// Maximum number of aggregation buckets allowed in a single response. OpenSearch default value is used when this is not defined.
3375  	SearchMaxBuckets *int `json:"search_max_buckets,omitempty" validate:"omitempty,gte=1,lte=1e+06"`
3376  	// Shard indexing back pressure settings
3377  	ShardIndexingPressure *JSONSchemaOpensearchShardIndexingPressure `json:"shard_indexing_pressure,omitempty"`
3378  	// Size for the thread pool queue. See documentation for exact details.
3379  	ThreadPoolAnalyzeQueueSize int `json:"thread_pool_analyze_queue_size,omitempty" validate:"omitempty,gte=10,lte=2000"`
3380  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3381  	ThreadPoolAnalyzeSize int `json:"thread_pool_analyze_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3382  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3383  	ThreadPoolForceMergeSize int `json:"thread_pool_force_merge_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3384  	// Size for the thread pool queue. See documentation for exact details.
3385  	ThreadPoolGetQueueSize int `json:"thread_pool_get_queue_size,omitempty" validate:"omitempty,gte=10,lte=2000"`
3386  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3387  	ThreadPoolGetSize int `json:"thread_pool_get_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3388  	// Size for the thread pool queue. See documentation for exact details.
3389  	ThreadPoolSearchQueueSize int `json:"thread_pool_search_queue_size,omitempty" validate:"omitempty,gte=10,lte=2000"`
3390  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3391  	ThreadPoolSearchSize int `json:"thread_pool_search_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3392  	// Size for the thread pool queue. See documentation for exact details.
3393  	ThreadPoolSearchThrottledQueueSize int `json:"thread_pool_search_throttled_queue_size,omitempty" validate:"omitempty,gte=10,lte=2000"`
3394  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3395  	ThreadPoolSearchThrottledSize int `json:"thread_pool_search_throttled_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3396  	// Size for the thread pool queue. See documentation for exact details.
3397  	ThreadPoolWriteQueueSize int `json:"thread_pool_write_queue_size,omitempty" validate:"omitempty,gte=10,lte=2000"`
3398  	// Size for the thread pool. See documentation for exact details. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.
3399  	ThreadPoolWriteSize int `json:"thread_pool_write_size,omitempty" validate:"omitempty,gte=1,lte=128"`
3400  }
3401  
3402  // Autovacuum settings
3403  type JSONSchemaPGAutovacuum struct {
3404  	// Specifies a fraction of the table size to add to autovacuum_analyze_threshold when deciding whether to trigger an ANALYZE (e.g. `0.2` for 20% of the table size). The default is `0.2`.
3405  	AutovacuumAnalyzeScaleFactor float64 `json:"autovacuum_analyze_scale_factor,omitempty" validate:"omitempty,gte=0,lte=1"`
3406  	// Specifies the minimum number of inserted, updated or deleted tuples needed to trigger an ANALYZE in any one table. The default is `50`.
3407  	AutovacuumAnalyzeThreshold int `json:"autovacuum_analyze_threshold,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3408  	// Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table. The system launches autovacuum processes to prevent wraparound even when autovacuum is otherwise disabled. Changing this parameter causes a service restart.
3409  	AutovacuumFreezeMaxAge int `json:"autovacuum_freeze_max_age,omitempty" validate:"omitempty,gte=2e+08,lte=1.5e+09"`
3410  	// Specifies the maximum number of autovacuum processes (other than the autovacuum launcher) that may be running at any one time. The default is `3`. Changing this parameter causes a service restart.
3411  	AutovacuumMaxWorkers int `json:"autovacuum_max_workers,omitempty" validate:"omitempty,gte=1,lte=20"`
3412  	// Specifies the minimum delay between autovacuum runs on any given database. The delay is measured in seconds. The default is `60`.
3413  	AutovacuumNaptime int `json:"autovacuum_naptime,omitempty" validate:"omitempty,gte=1,lte=86400"`
3414  	// Specifies the cost delay value that will be used in automatic VACUUM operations. If `-1` is specified, the regular vacuum_cost_delay value will be used. The default is `2` (upstream default).
3415  	AutovacuumVacuumCostDelay int `json:"autovacuum_vacuum_cost_delay,omitempty" validate:"omitempty,gte=-1,lte=100"`
3416  	// Specifies the cost limit value that will be used in automatic VACUUM operations. If `-1` is specified, the regular vacuum_cost_limit value will be used. The default is `-1` (upstream default).
3417  	AutovacuumVacuumCostLimit int `json:"autovacuum_vacuum_cost_limit,omitempty" validate:"omitempty,gte=-1,lte=10000"`
3418  	// Specifies a fraction of the table size to add to autovacuum_vacuum_threshold when deciding whether to trigger a VACUUM (e.g. `0.2` for 20% of the table size). The default is `0.2`.
3419  	AutovacuumVacuumScaleFactor float64 `json:"autovacuum_vacuum_scale_factor,omitempty" validate:"omitempty,gte=0,lte=1"`
3420  	// Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is `50`.
3421  	AutovacuumVacuumThreshold int `json:"autovacuum_vacuum_threshold,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3422  	// Causes each action executed by autovacuum to be logged if it ran for at least the specified number of milliseconds. Setting this to zero logs all autovacuum actions. Minus-one disables logging autovacuum actions. The default is `1000`.
3423  	LogAutovacuumMinDuration int `json:"log_autovacuum_min_duration,omitempty" validate:"omitempty,gte=-1,lte=2.147483647e+09"`
3424  }
3425  
3426  // Background (BG) writer settings
3427  type JSONSchemaPGBGWriter struct {
3428  	// Specifies the delay between activity rounds for the background writer in milliseconds. The default is `200`.
3429  	BgwriterDelay int `json:"bgwriter_delay,omitempty" validate:"omitempty,gte=10,lte=10000"`
3430  	// Whenever more than bgwriter_flush_after bytes have been written by the background writer, attempt to force the OS to issue these writes to the underlying storage. Specified in kilobytes. Setting of 0 disables forced writeback. The default is `512`.
3431  	BgwriterFlushAfter int `json:"bgwriter_flush_after,omitempty" validate:"omitempty,gte=0,lte=2048"`
3432  	// In each round, no more than this many buffers will be written by the background writer. Setting this to zero disables background writing. The default is `100`.
3433  	BgwriterLruMaxpages int `json:"bgwriter_lru_maxpages,omitempty" validate:"omitempty,gte=0,lte=1.073741823e+09"`
3434  	// The average recent need for new buffers is multiplied by bgwriter_lru_multiplier to arrive at an estimate of the number that will be needed during the next round, (up to bgwriter_lru_maxpages). 1.0 represents a “just in time” policy of writing exactly the number of buffers predicted to be needed. Larger values provide some cushion against spikes in demand, while smaller values intentionally leave writes to be done by server processes. The default is `2.0`.
3435  	BgwriterLruMultiplier float64 `json:"bgwriter_lru_multiplier,omitempty" validate:"omitempty,gte=0,lte=10"`
3436  }
3437  
3438  type JSONSchemaPGDefaultToastCompression string
3439  
3440  const (
3441  	JSONSchemaPGDefaultToastCompressionLz4  JSONSchemaPGDefaultToastCompression = "lz4"
3442  	JSONSchemaPGDefaultToastCompressionPglz JSONSchemaPGDefaultToastCompression = "pglz"
3443  )
3444  
3445  type JSONSchemaPGIoMethod string
3446  
3447  const (
3448  	JSONSchemaPGIoMethodWorker  JSONSchemaPGIoMethod = "worker"
3449  	JSONSchemaPGIoMethodSync    JSONSchemaPGIoMethod = "sync"
3450  	JSONSchemaPGIoMethodIoUring JSONSchemaPGIoMethod = "io_uring"
3451  )
3452  
3453  type JSONSchemaPGLogErrorVerbosity string
3454  
3455  const (
3456  	JSONSchemaPGLogErrorVerbosityTERSE   JSONSchemaPGLogErrorVerbosity = "TERSE"
3457  	JSONSchemaPGLogErrorVerbosityDEFAULT JSONSchemaPGLogErrorVerbosity = "DEFAULT"
3458  	JSONSchemaPGLogErrorVerbosityVERBOSE JSONSchemaPGLogErrorVerbosity = "VERBOSE"
3459  )
3460  
3461  type JSONSchemaPGPasswordEncryption string
3462  
3463  const (
3464  	JSONSchemaPGPasswordEncryptionMd5         JSONSchemaPGPasswordEncryption = "md5"
3465  	JSONSchemaPGPasswordEncryptionScramSha256 JSONSchemaPGPasswordEncryption = "scram-sha-256"
3466  )
3467  
3468  type JSONSchemaPGPGStatStatementsTrack string
3469  
3470  const (
3471  	JSONSchemaPGPGStatStatementsTrackAll  JSONSchemaPGPGStatStatementsTrack = "all"
3472  	JSONSchemaPGPGStatStatementsTrackTop  JSONSchemaPGPGStatStatementsTrack = "top"
3473  	JSONSchemaPGPGStatStatementsTrackNone JSONSchemaPGPGStatStatementsTrack = "none"
3474  )
3475  
3476  type JSONSchemaPGTrackCommitTimestamp string
3477  
3478  const (
3479  	JSONSchemaPGTrackCommitTimestampOff JSONSchemaPGTrackCommitTimestamp = "off"
3480  	JSONSchemaPGTrackCommitTimestampOn  JSONSchemaPGTrackCommitTimestamp = "on"
3481  )
3482  
3483  type JSONSchemaPGTrackFunctions string
3484  
3485  const (
3486  	JSONSchemaPGTrackFunctionsAll  JSONSchemaPGTrackFunctions = "all"
3487  	JSONSchemaPGTrackFunctionsPL   JSONSchemaPGTrackFunctions = "pl"
3488  	JSONSchemaPGTrackFunctionsNone JSONSchemaPGTrackFunctions = "none"
3489  )
3490  
3491  type JSONSchemaPGTrackIoTiming string
3492  
3493  const (
3494  	JSONSchemaPGTrackIoTimingOff JSONSchemaPGTrackIoTiming = "off"
3495  	JSONSchemaPGTrackIoTimingOn  JSONSchemaPGTrackIoTiming = "on"
3496  )
3497  
3498  // Write-ahead log (WAL) settings
3499  type JSONSchemaPGWal struct {
3500  	// PostgreSQL maximum WAL size (MB) reserved for replication slots. If `-1` is specified, replication slots may retain an unlimited amount of WAL files. The default is `-1` (upstream default). wal_keep_size minimum WAL size setting takes precedence over this.
3501  	MaxSlotWalKeepSize int `json:"max_slot_wal_keep_size,omitempty" validate:"omitempty,gte=-1,lte=2.147483647e+09"`
3502  	// PostgreSQL maximum WAL senders. The default is `20`. Changing this parameter causes a service restart.
3503  	MaxWalSenders int `json:"max_wal_senders,omitempty" validate:"omitempty,gte=20,lte=256"`
3504  	// Terminate replication connections that are inactive for longer than this amount of time, in milliseconds.
3505  	WalSenderTimeout int `json:"wal_sender_timeout,omitempty" validate:"omitempty,gte=0,lte=1.08e+07"`
3506  	// WAL flush interval in milliseconds. The default is `200`. Setting this parameter to a lower value may negatively impact performance.
3507  	WalWriterDelay int `json:"wal_writer_delay,omitempty" validate:"omitempty,gte=10,lte=200"`
3508  }
3509  
3510  // postgresql.conf configuration values
3511  type JSONSchemaPG struct {
3512  	// Autovacuum settings
3513  	Autovacuum *JSONSchemaPGAutovacuum `json:"autovacuum,omitempty"`
3514  	// Background (BG) writer settings
3515  	BGWriter *JSONSchemaPGBGWriter `json:"bg-writer,omitempty"`
3516  	// This is the amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition. The default is `1000` (upstream default).
3517  	DeadlockTimeout int `json:"deadlock_timeout,omitempty" validate:"omitempty,gte=500,lte=1.8e+06"`
3518  	// Specifies the default TOAST compression method for values of compressible columns. The default is `lz4`. Only available for PostgreSQL 14+.
3519  	DefaultToastCompression JSONSchemaPGDefaultToastCompression `json:"default_toast_compression,omitempty"`
3520  	// Time out sessions with open transactions after this number of milliseconds
3521  	IdleInTransactionSessionTimeout int `json:"idle_in_transaction_session_timeout,omitempty" validate:"omitempty,gte=0,lte=6.048e+08"`
3522  	// EXPERIMENTAL: Controls the largest I/O size in operations that combine I/O in 8kB units. Version 17 and up only.
3523  	IoCombineLimit int `json:"io_combine_limit,omitempty" validate:"omitempty,gte=1,lte=32"`
3524  	// EXPERIMENTAL: Controls the largest I/O size in operations that combine I/O in 8kB units, and silently limits the user-settable parameter io_combine_limit. Version 18 and up only. Changing this parameter causes a service restart.
3525  	IoMaxCombineLimit int `json:"io_max_combine_limit,omitempty" validate:"omitempty,gte=1,lte=128"`
3526  	// EXPERIMENTAL: Controls the maximum number of I/O operations that one process can execute simultaneously. Version 18 and up only. Changing this parameter causes a service restart.
3527  	IoMaxConcurrency int `json:"io_max_concurrency,omitempty" validate:"omitempty,gte=-1,lte=1024"`
3528  	// EXPERIMENTAL: Controls the maximum number of I/O operations that one process can execute simultaneously. Version 18 and up only. Changing this parameter causes a service restart.
3529  	IoMethod JSONSchemaPGIoMethod `json:"io_method,omitempty"`
3530  	// EXPERIMENTAL: Number of IO worker processes, for io_method=worker. Version 18 and up only. Changing this parameter causes a service restart.
3531  	IoWorkers int `json:"io_workers,omitempty" validate:"omitempty,gte=1,lte=32"`
3532  	// Controls system-wide use of Just-in-Time Compilation (JIT).
3533  	Jit *bool `json:"jit,omitempty"`
3534  	// Controls the amount of detail written in the server log for each message that is logged.
3535  	LogErrorVerbosity JSONSchemaPGLogErrorVerbosity `json:"log_error_verbosity,omitempty"`
3536  	// Choose from one of the available log formats.
3537  	LogLinePrefix string `json:"log_line_prefix,omitempty"`
3538  	// Log statements that take more than this number of milliseconds to run, -1 disables
3539  	LogMinDurationStatement int `json:"log_min_duration_statement,omitempty" validate:"omitempty,gte=-1,lte=8.64e+07"`
3540  	// Log statements for each temporary file created larger than this number of kilobytes, -1 disables
3541  	LogTempFiles int `json:"log_temp_files,omitempty" validate:"omitempty,gte=-1,lte=2.147483647e+09"`
3542  	// PostgreSQL maximum number of files that can be open per process. The default is `1000` (upstream default). Changing this parameter causes a service restart.
3543  	MaxFilesPerProcess int `json:"max_files_per_process,omitempty" validate:"omitempty,gte=1000,lte=4096"`
3544  	// PostgreSQL maximum locks per transaction. Changing this parameter causes a service restart.
3545  	MaxLocksPerTransaction int `json:"max_locks_per_transaction,omitempty" validate:"omitempty,gte=64,lte=6400"`
3546  	// PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers). The default is `4` (upstream default). Changing this parameter causes a service restart.
3547  	MaxLogicalReplicationWorkers int `json:"max_logical_replication_workers,omitempty" validate:"omitempty,gte=4,lte=256"`
3548  	// Sets the maximum number of workers that the system can support for parallel queries. The default is `8` (upstream default).
3549  	MaxParallelWorkers int `json:"max_parallel_workers,omitempty" validate:"omitempty,gte=0,lte=96"`
3550  	// Sets the maximum number of workers that can be started by a single Gather or Gather Merge node. The default is `2` (upstream default).
3551  	MaxParallelWorkersPerGather int `json:"max_parallel_workers_per_gather,omitempty" validate:"omitempty,gte=0,lte=96"`
3552  	// PostgreSQL maximum predicate locks per transaction. The default is `64` (upstream default). Changing this parameter causes a service restart.
3553  	MaxPredLocksPerTransaction int `json:"max_pred_locks_per_transaction,omitempty" validate:"omitempty,gte=64,lte=5120"`
3554  	// PostgreSQL maximum prepared transactions. The default is `0`. Changing this parameter causes a service restart.
3555  	MaxPreparedTransactions int `json:"max_prepared_transactions,omitempty" validate:"omitempty,gte=0,lte=10000"`
3556  	// PostgreSQL maximum replication slots. The default is `20`. Changing this parameter causes a service restart.
3557  	MaxReplicationSlots int `json:"max_replication_slots,omitempty" validate:"omitempty,gte=8,lte=256"`
3558  	// Maximum depth of the stack in bytes. The default is `2097152` (upstream default).
3559  	MaxStackDepth int `json:"max_stack_depth,omitempty" validate:"omitempty,gte=2.097152e+06,lte=6.291456e+06"`
3560  	// Max standby archive delay in milliseconds. The default is `30000` (upstream default).
3561  	MaxStandbyArchiveDelay int `json:"max_standby_archive_delay,omitempty" validate:"omitempty,gte=1,lte=4.32e+07"`
3562  	// Max standby streaming delay in milliseconds. The default is `30000` (upstream default).
3563  	MaxStandbyStreamingDelay int `json:"max_standby_streaming_delay,omitempty" validate:"omitempty,gte=1,lte=4.32e+07"`
3564  	// Maximum number of synchronization workers per subscription. The default is `2`.
3565  	MaxSyncWorkersPerSubscription int `json:"max_sync_workers_per_subscription,omitempty" validate:"omitempty,gte=2,lte=8"`
3566  	// Sets the maximum number of background processes that the system can support. The default is `8`. Changing this parameter causes a service restart.
3567  	MaxWorkerProcesses int `json:"max_worker_processes,omitempty" validate:"omitempty,gte=8,lte=288"`
3568  	// Chooses the algorithm for encrypting passwords.
3569  	PasswordEncryption JSONSchemaPGPasswordEncryption `json:"password_encryption,omitempty"`
3570  	// Sets the time interval in seconds to run pg_partman's scheduled tasks. The default is `3600`.
3571  	PGPartmanBgwInterval int `json:"pg_partman_bgw.interval,omitempty" validate:"omitempty,gte=3600,lte=604800"`
3572  	// Controls which role to use for pg_partman's scheduled background tasks.
3573  	PGPartmanBgwRole string `json:"pg_partman_bgw.role,omitempty" validate:"omitempty,lte=64"`
3574  	// Enables or disables query plan monitoring. Changing this parameter causes a service restart. Only available for PostgreSQL 13+.
3575  	PGStatMonitorPgsmEnableQueryPlan *bool `json:"pg_stat_monitor.pgsm_enable_query_plan,omitempty"`
3576  	// Sets the maximum number of buckets. Changing this parameter causes a service restart. Only available for PostgreSQL 13+.
3577  	PGStatMonitorPgsmMaxBuckets int `json:"pg_stat_monitor.pgsm_max_buckets,omitempty" validate:"omitempty,gte=1,lte=10"`
3578  	// Controls which statements are counted. Specify top to track top-level statements (those issued directly by clients), all to also track nested statements (such as statements invoked within functions), or none to disable statement statistics collection. The default is `top`.
3579  	PGStatStatementsTrack JSONSchemaPGPGStatStatementsTrack `json:"pg_stat_statements.track,omitempty"`
3580  	// PostgreSQL temporary file limit in KiB, -1 for unlimited
3581  	TempFileLimit int `json:"temp_file_limit,omitempty" validate:"omitempty,gte=-1,lte=2.147483647e+09"`
3582  	// PostgreSQL service timezone
3583  	Timezone string `json:"timezone,omitempty" validate:"omitempty,lte=64"`
3584  	// Specifies the number of bytes reserved to track the currently executing command for each active session. Changing this parameter causes a service restart.
3585  	TrackActivityQuerySize int `json:"track_activity_query_size,omitempty" validate:"omitempty,gte=1024,lte=10240"`
3586  	// Record commit time of transactions. Changing this parameter causes a service restart.
3587  	TrackCommitTimestamp JSONSchemaPGTrackCommitTimestamp `json:"track_commit_timestamp,omitempty"`
3588  	// Enables tracking of function call counts and time used.
3589  	TrackFunctions JSONSchemaPGTrackFunctions `json:"track_functions,omitempty"`
3590  	// Enables timing of database I/O calls. The default is `off`. When on, it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms.
3591  	TrackIoTiming JSONSchemaPGTrackIoTiming `json:"track_io_timing,omitempty"`
3592  	// Write-ahead log (WAL) settings
3593  	Wal *JSONSchemaPGWal `json:"wal,omitempty"`
3594  }
3595  
3596  type JSONSchemaPgbouncerAutodbPoolMode string
3597  
3598  const (
3599  	JSONSchemaPgbouncerAutodbPoolModeTransaction JSONSchemaPgbouncerAutodbPoolMode = "transaction"
3600  	JSONSchemaPgbouncerAutodbPoolModeSession     JSONSchemaPgbouncerAutodbPoolMode = "session"
3601  	JSONSchemaPgbouncerAutodbPoolModeStatement   JSONSchemaPgbouncerAutodbPoolMode = "statement"
3602  )
3603  
3604  // System-wide settings for pgbouncer.
3605  type JSONSchemaPgbouncer struct {
3606  	// If the automatically created database pools have been unused this many seconds, they are freed. If 0 then timeout is disabled. [seconds]
3607  	AutodbIdleTimeout int `json:"autodb_idle_timeout,omitempty" validate:"omitempty,gte=0,lte=86400"`
3608  	// Do not allow more than this many server connections per database (regardless of user). Setting it to 0 means unlimited.
3609  	AutodbMaxDBConnections int `json:"autodb_max_db_connections,omitempty" validate:"omitempty,gte=0,lte=2.147483647e+09"`
3610  	// PGBouncer pool mode
3611  	AutodbPoolMode JSONSchemaPgbouncerAutodbPoolMode `json:"autodb_pool_mode,omitempty"`
3612  	// If non-zero then create automatically a pool of that size per user when a pool doesn't exist.
3613  	AutodbPoolSize int `json:"autodb_pool_size,omitempty" validate:"omitempty,gte=0,lte=10000"`
3614  	// List of parameters to ignore when given in startup packet
3615  	IgnoreStartupParameters []string `json:"ignore_startup_parameters,omitempty"`
3616  	// PgBouncer tracks protocol-level named prepared statements related commands sent by the client in transaction and statement pooling modes when max_prepared_statements is set to a non-zero value. Setting it to 0 disables prepared statements. max_prepared_statements defaults to 100, and its maximum is 3000.
3617  	MaxPreparedStatements int `json:"max_prepared_statements,omitempty" validate:"omitempty,gte=0,lte=3000"`
3618  	// Add more server connections to pool if below this number. Improves behavior when usual load comes suddenly back after period of total inactivity. The value is effectively capped at the pool size.
3619  	MinPoolSize int `json:"min_pool_size,omitempty" validate:"omitempty,gte=0,lte=10000"`
3620  	// If a server connection has been idle more than this many seconds it will be dropped. If 0 then timeout is disabled. [seconds]
3621  	ServerIdleTimeout int `json:"server_idle_timeout,omitempty" validate:"omitempty,gte=0,lte=86400"`
3622  	// The pooler will close an unused server connection that has been connected longer than this. [seconds]
3623  	ServerLifetime int `json:"server_lifetime,omitempty" validate:"omitempty,gte=60,lte=86400"`
3624  	// Run server_reset_query (DISCARD ALL) in all pooling modes
3625  	ServerResetQueryAlways *bool `json:"server_reset_query_always,omitempty"`
3626  }
3627  
3628  // System-wide settings for pglookout.
3629  type JSONSchemaPglookout struct {
3630  	// Number of seconds of master unavailability before triggering database failover to standby
3631  	MaxFailoverReplicationTimeLag int `json:"max_failover_replication_time_lag,omitempty" validate:"omitempty,gte=10,lte=9.223372036854776e+18"`
3632  }
3633  
3634  // Schema Registry configuration
3635  type JSONSchemaSchemaRegistry struct {
3636  	// If true, Karapace / Schema Registry on the service nodes can participate in leader election. It might be needed to disable this when the schemas topic is replicated to a secondary cluster and Karapace / Schema Registry there must not participate in leader election. Defaults to `true`.
3637  	LeaderEligibility *bool `json:"leader_eligibility,omitempty"`
3638  	// The durable single partition topic that acts as the durable log for the data. This topic must be compacted to avoid losing data due to retention policy. Please note that changing this configuration in an existing Schema Registry / Karapace setup leads to previous schemas being inaccessible, data encoded with them potentially unreadable and schema ID sequence put out of order. It's only possible to do the switch while Schema Registry / Karapace is disabled. Defaults to `_schemas`.
3639  	TopicName string `json:"topic_name,omitempty" validate:"omitempty,gte=1,lte=249"`
3640  }
3641  
3642  // Configuration options for Thanos Compactor.
3643  type JSONSchemaThanosCompactor struct {
3644  	// Retention time for data in days for each resolution (5m, 1h, raw)
3645  	RetentionDays int `json:"retention.days,omitempty" validate:"omitempty,gte=0"`
3646  }
3647  
3648  // Configuration options for Thanos Query.
3649  type JSONSchemaThanosQuery struct {
3650  	// Set the default evaluation interval for subqueries.
3651  	QueryDefaultEvaluationInterval string `json:"query.default-evaluation-interval,omitempty" validate:"omitempty,lte=20"`
3652  	// The maximum lookback duration for retrieving metrics during expression evaluations in PromQL. PromQL always evaluates the query for a certain timestamp, and it looks back for the given amount of time to get the latest sample. If it exceeds the maximum lookback delta, it assumes the series is stale and returns none (a gap). The lookback delta should be set to at least 2 times the slowest scrape interval. If unset, it will use the promql default of 5m.
3653  	QueryLookbackDelta string `json:"query.lookback-delta,omitempty" validate:"omitempty,lte=20"`
3654  	// The default metadata time range duration for retrieving labels through Labels and Series API when the range parameters are not specified. The zero value means the range covers the time since the beginning.
3655  	QueryMetadataDefaultTimeRange string `json:"query.metadata.default-time-range,omitempty" validate:"omitempty,lte=20"`
3656  	// Maximum time to process a query by the query node.
3657  	QueryTimeout string `json:"query.timeout,omitempty" validate:"omitempty,lte=20"`
3658  	// The maximum samples allowed for a single Series request. The Series call fails if this limit is exceeded. Set to 0 for no limit. NOTE: For efficiency, the limit is internally implemented as 'chunks limit' considering each chunk contains a maximum of 120 samples. The default value is 100 * store.limits.request-series.
3659  	StoreLimitsRequestSamples int `json:"store.limits.request-samples,omitempty" validate:"omitempty,gte=0,lte=1e+08"`
3660  	// The maximum series allowed for a single Series request. The Series call fails if this limit is exceeded. Set to 0 for no limit. The default value is 1000 * cpu_count.
3661  	StoreLimitsRequestSeries int `json:"store.limits.request-series,omitempty" validate:"omitempty,gte=0,lte=1e+08"`
3662  }
3663  
3664  // Configuration options for Thanos Query Frontend.
3665  type JSONSchemaThanosQueryFrontend struct {
3666  	// Whether to align the query range boundaries with the step. If enabled, the query range boundaries will be aligned to the step, providing more accurate results for queries with high-resolution data.
3667  	QueryRangeAlignRangeWithStep *bool `json:"query-range.align-range-with-step,omitempty"`
3668  }
3669  
3670  // Thanos settings
3671  type JSONSchemaThanos struct {
3672  	// Configuration options for Thanos Compactor.
3673  	Compactor *JSONSchemaThanosCompactor `json:"compactor,omitempty"`
3674  	// Configuration options for Thanos Query.
3675  	Query *JSONSchemaThanosQuery `json:"query,omitempty"`
3676  	// Configuration options for Thanos Query Frontend.
3677  	QueryFrontend *JSONSchemaThanosQueryFrontend `json:"query-frontend,omitempty"`
3678  }
3679  
3680  // System-wide settings for the timescaledb extension
3681  type JSONSchemaTimescaledb struct {
3682  	// The number of background workers for timescaledb operations. You should configure this setting to the sum of your number of databases and the total number of concurrent background workers you want running at any given point in time. Changing this parameter causes a service restart.
3683  	MaxBackgroundWorkers int `json:"max_background_workers,omitempty" validate:"omitempty,gte=1,lte=4096"`
3684  }
3685  
3686  type JSONSchemaValkeyAclChannelsDefault string
3687  
3688  const (
3689  	JSONSchemaValkeyAclChannelsDefaultAllchannels   JSONSchemaValkeyAclChannelsDefault = "allchannels"
3690  	JSONSchemaValkeyAclChannelsDefaultResetchannels JSONSchemaValkeyAclChannelsDefault = "resetchannels"
3691  )
3692  
3693  type JSONSchemaValkeyMaxmemoryPolicy string
3694  
3695  const (
3696  	JSONSchemaValkeyMaxmemoryPolicyNoeviction     JSONSchemaValkeyMaxmemoryPolicy = "noeviction"
3697  	JSONSchemaValkeyMaxmemoryPolicyAllkeysLru     JSONSchemaValkeyMaxmemoryPolicy = "allkeys-lru"
3698  	JSONSchemaValkeyMaxmemoryPolicyVolatileLru    JSONSchemaValkeyMaxmemoryPolicy = "volatile-lru"
3699  	JSONSchemaValkeyMaxmemoryPolicyAllkeysRandom  JSONSchemaValkeyMaxmemoryPolicy = "allkeys-random"
3700  	JSONSchemaValkeyMaxmemoryPolicyVolatileRandom JSONSchemaValkeyMaxmemoryPolicy = "volatile-random"
3701  	JSONSchemaValkeyMaxmemoryPolicyVolatileTtl    JSONSchemaValkeyMaxmemoryPolicy = "volatile-ttl"
3702  	JSONSchemaValkeyMaxmemoryPolicyVolatileLfu    JSONSchemaValkeyMaxmemoryPolicy = "volatile-lfu"
3703  	JSONSchemaValkeyMaxmemoryPolicyAllkeysLfu     JSONSchemaValkeyMaxmemoryPolicy = "allkeys-lfu"
3704  )
3705  
3706  type JSONSchemaValkeyPersistence string
3707  
3708  const (
3709  	JSONSchemaValkeyPersistenceOff JSONSchemaValkeyPersistence = "off"
3710  	JSONSchemaValkeyPersistenceRdb JSONSchemaValkeyPersistence = "rdb"
3711  )
3712  
3713  // Valkey settings
3714  type JSONSchemaValkey struct {
3715  	// Determines default pub/sub channels' ACL for new users if ACL is not supplied. When this option is not defined, all_channels is assumed to keep backward compatibility. This option doesn't affect Valkey configuration acl-pubsub-default.
3716  	AclChannelsDefault JSONSchemaValkeyAclChannelsDefault `json:"acl_channels_default,omitempty"`
3717  	// Set Valkey IO thread count. Changing this will cause a restart of the Valkey service.
3718  	IoThreads int `json:"io_threads,omitempty" validate:"omitempty,gte=1,lte=32"`
3719  	// LFU maxmemory-policy counter decay time in minutes
3720  	LfuDecayTime int `json:"lfu_decay_time,omitempty" validate:"omitempty,gte=1,lte=120"`
3721  	// Counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory-policies
3722  	LfuLogFactor int `json:"lfu_log_factor,omitempty" validate:"omitempty,gte=0,lte=100"`
3723  	// Valkey maxmemory-policy
3724  	MaxmemoryPolicy JSONSchemaValkeyMaxmemoryPolicy `json:"maxmemory_policy,omitempty"`
3725  	// Set notify-keyspace-events option
3726  	NotifyKeyspaceEvents string `json:"notify_keyspace_events,omitempty" validate:"omitempty,lte=32"`
3727  	// Set number of Valkey databases. Changing this will cause a restart of the Valkey service.
3728  	NumberOfDatabases int `json:"number_of_databases,omitempty" validate:"omitempty,gte=1,lte=128"`
3729  	// When persistence is 'rdb', Valkey does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.
3730  	Persistence JSONSchemaValkeyPersistence `json:"persistence,omitempty"`
3731  	// Set output buffer limit for pub / sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.
3732  	PubsubClientOutputBufferLimit int `json:"pubsub_client_output_buffer_limit,omitempty" validate:"omitempty,gte=32,lte=512"`
3733  	// Require SSL to access Valkey
3734  	SSL *bool `json:"ssl,omitempty"`
3735  	// Valkey idle connection timeout in seconds
3736  	Timeout int `json:"timeout,omitempty" validate:"omitempty,gte=0,lte=3.1536e+07"`
3737  }
3738  
3739  // Kubelet image GC options
3740  type KubeletImageGC struct {
3741  	HighThreshold int64  `json:"high-threshold,omitempty" validate:"omitempty,gte=0"`
3742  	LowThreshold  int64  `json:"low-threshold,omitempty" validate:"omitempty,gte=0"`
3743  	MinAge        string `json:"min-age,omitempty"`
3744  }
3745  
3746  type Labels map[string]string
3747  
3748  // AI model list
3749  type ListDeploymentsResponse struct {
3750  	Deployments []ListDeploymentsResponseEntry `json:"deployments,omitempty"`
3751  }
3752  
3753  type ListDeploymentsResponseEntryStatus string
3754  
3755  const (
3756  	ListDeploymentsResponseEntryStatusReady     ListDeploymentsResponseEntryStatus = "ready"
3757  	ListDeploymentsResponseEntryStatusCreating  ListDeploymentsResponseEntryStatus = "creating"
3758  	ListDeploymentsResponseEntryStatusError     ListDeploymentsResponseEntryStatus = "error"
3759  	ListDeploymentsResponseEntryStatusDeploying ListDeploymentsResponseEntryStatus = "deploying"
3760  )
3761  
3762  // AI deployment
3763  type ListDeploymentsResponseEntry struct {
3764  	// Creation time
3765  	CreatedAT time.Time `json:"created-at,omitempty"`
3766  	// Deployment URL (nullable)
3767  	DeploymentURL string `json:"deployment-url,omitempty"`
3768  	// Number of GPUs
3769  	GpuCount int64 `json:"gpu-count,omitempty" validate:"omitempty,gt=0"`
3770  	// GPU type family
3771  	GpuType string `json:"gpu-type,omitempty" validate:"omitempty,gte=1"`
3772  	// Deployment ID
3773  	ID    UUID      `json:"id,omitempty"`
3774  	Model *ModelRef `json:"model,omitempty"`
3775  	// Deployment name
3776  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
3777  	// Number of replicas (>=0)
3778  	Replicas int64 `json:"replicas,omitempty" validate:"omitempty,gte=0"`
3779  	// Service level
3780  	ServiceLevel string `json:"service-level,omitempty" validate:"omitempty,gte=1"`
3781  	// Deployment status
3782  	Status ListDeploymentsResponseEntryStatus `json:"status,omitempty"`
3783  	// Update time
3784  	UpdatedAT time.Time `json:"updated-at,omitempty"`
3785  }
3786  
3787  // AI model list
3788  type ListModelsResponse struct {
3789  	Models []ListModelsResponseEntry `json:"models,omitempty"`
3790  }
3791  
3792  type ListModelsResponseEntryStatus string
3793  
3794  const (
3795  	ListModelsResponseEntryStatusReady       ListModelsResponseEntryStatus = "ready"
3796  	ListModelsResponseEntryStatusCreating    ListModelsResponseEntryStatus = "creating"
3797  	ListModelsResponseEntryStatusDownloading ListModelsResponseEntryStatus = "downloading"
3798  	ListModelsResponseEntryStatusError       ListModelsResponseEntryStatus = "error"
3799  )
3800  
3801  // AI model
3802  type ListModelsResponseEntry struct {
3803  	// Creation time
3804  	CreatedAT time.Time `json:"created-at,omitempty"`
3805  	// Model ID
3806  	ID UUID `json:"id,omitempty"`
3807  	// Model size (nullable)
3808  	ModelSize int64 `json:"model-size,omitempty" validate:"omitempty,gte=0"`
3809  	// Model name
3810  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
3811  	// Model status
3812  	Status ListModelsResponseEntryStatus `json:"status,omitempty"`
3813  	// Update time
3814  	UpdatedAT time.Time `json:"updated-at,omitempty"`
3815  }
3816  
3817  type LoadBalancerState string
3818  
3819  const (
3820  	LoadBalancerStateCreating  LoadBalancerState = "creating"
3821  	LoadBalancerStateMigrated  LoadBalancerState = "migrated"
3822  	LoadBalancerStateDeleting  LoadBalancerState = "deleting"
3823  	LoadBalancerStateRunning   LoadBalancerState = "running"
3824  	LoadBalancerStateMigrating LoadBalancerState = "migrating"
3825  	LoadBalancerStateError     LoadBalancerState = "error"
3826  )
3827  
3828  // Load Balancer
3829  type LoadBalancer struct {
3830  	// Load Balancer creation date
3831  	CreatedAT time.Time `json:"created-at,omitempty"`
3832  	// Load Balancer description
3833  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
3834  	// Load Balancer ID
3835  	ID UUID `json:"id,omitempty"`
3836  	// Load Balancer public IP
3837  	IP     net.IP `json:"ip,omitempty"`
3838  	Labels Labels `json:"labels,omitempty"`
3839  	// Load Balancer name
3840  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
3841  	// Load Balancer Services
3842  	Services []LoadBalancerService `json:"services,omitempty"`
3843  	// Load Balancer state
3844  	State LoadBalancerState `json:"state,omitempty"`
3845  }
3846  
3847  type LoadBalancerServerStatusStatus string
3848  
3849  const (
3850  	LoadBalancerServerStatusStatusFailure LoadBalancerServerStatusStatus = "failure"
3851  	LoadBalancerServerStatusStatusSuccess LoadBalancerServerStatusStatus = "success"
3852  )
3853  
3854  // Load Balancer Service status
3855  type LoadBalancerServerStatus struct {
3856  	// Backend server public IP
3857  	PublicIP net.IP `json:"public-ip,omitempty"`
3858  	// Status of the instance's healthcheck
3859  	Status LoadBalancerServerStatusStatus `json:"status,omitempty"`
3860  }
3861  
3862  type LoadBalancerServiceProtocol string
3863  
3864  const (
3865  	LoadBalancerServiceProtocolTCP LoadBalancerServiceProtocol = "tcp"
3866  	LoadBalancerServiceProtocolUDP LoadBalancerServiceProtocol = "udp"
3867  )
3868  
3869  type LoadBalancerServiceState string
3870  
3871  const (
3872  	LoadBalancerServiceStateCreating LoadBalancerServiceState = "creating"
3873  	LoadBalancerServiceStateDeleting LoadBalancerServiceState = "deleting"
3874  	LoadBalancerServiceStateRunning  LoadBalancerServiceState = "running"
3875  	LoadBalancerServiceStateUpdating LoadBalancerServiceState = "updating"
3876  	LoadBalancerServiceStateError    LoadBalancerServiceState = "error"
3877  )
3878  
3879  type LoadBalancerServiceStrategy string
3880  
3881  const (
3882  	LoadBalancerServiceStrategyRoundRobin LoadBalancerServiceStrategy = "round-robin"
3883  	LoadBalancerServiceStrategyMaglevHash LoadBalancerServiceStrategy = "maglev-hash"
3884  	LoadBalancerServiceStrategySourceHash LoadBalancerServiceStrategy = "source-hash"
3885  )
3886  
3887  // Load Balancer Service
3888  type LoadBalancerService struct {
3889  	// Load Balancer Service description
3890  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
3891  	// Load Balancer Service healthcheck
3892  	Healthcheck *LoadBalancerServiceHealthcheck `json:"healthcheck,omitempty"`
3893  	// Healthcheck status per backend server
3894  	HealthcheckStatus []LoadBalancerServerStatus `json:"healthcheck-status,omitempty"`
3895  	// Load Balancer Service ID
3896  	ID UUID `json:"id,omitempty"`
3897  	// Instance Pool
3898  	InstancePool *InstancePool `json:"instance-pool,omitempty"`
3899  	// Load Balancer Service name
3900  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
3901  	// Port exposed on the Load Balancer's public IP
3902  	Port int64 `json:"port,omitempty" validate:"omitempty,gt=0"`
3903  	// Network traffic protocol
3904  	Protocol LoadBalancerServiceProtocol `json:"protocol,omitempty"`
3905  	// Load Balancer Service state
3906  	State LoadBalancerServiceState `json:"state,omitempty"`
3907  	// Load balancing strategy
3908  	Strategy LoadBalancerServiceStrategy `json:"strategy,omitempty"`
3909  	// Port on which the network traffic will be forwarded to on the receiving instance
3910  	TargetPort int64 `json:"target-port,omitempty" validate:"omitempty,gt=0"`
3911  }
3912  
3913  type LoadBalancerServiceHealthcheckMode string
3914  
3915  const (
3916  	LoadBalancerServiceHealthcheckModeTCP   LoadBalancerServiceHealthcheckMode = "tcp"
3917  	LoadBalancerServiceHealthcheckModeHTTP  LoadBalancerServiceHealthcheckMode = "http"
3918  	LoadBalancerServiceHealthcheckModeHttps LoadBalancerServiceHealthcheckMode = "https"
3919  )
3920  
3921  // Load Balancer Service healthcheck
3922  type LoadBalancerServiceHealthcheck struct {
3923  	// Healthcheck interval (default: 10). Must be greater than or equal to Timeout
3924  	Interval int64 `json:"interval,omitempty" validate:"omitempty,gte=5,lte=300"`
3925  	// Healthcheck mode
3926  	Mode LoadBalancerServiceHealthcheckMode `json:"mode,omitempty"`
3927  	// Healthcheck port
3928  	Port int64 `json:"port,omitempty" validate:"omitempty,gte=1,lte=65535"`
3929  	// Number of retries before considering a Service failed
3930  	Retries int64 `json:"retries,omitempty" validate:"omitempty,gte=1,lte=20"`
3931  	// Healthcheck timeout value (default: 2). Must be lower than or equal to Interval
3932  	Timeout int64 `json:"timeout,omitempty" validate:"omitempty,gte=2,lte=60"`
3933  	// SNI domain for HTTPS healthchecks
3934  	TlsSNI string `json:"tls-sni,omitempty" validate:"omitempty,gte=1,lte=255"`
3935  	// An endpoint to use for the HTTP healthcheck, e.g. '/status'
3936  	URI string `json:"uri,omitempty" validate:"omitempty,gte=1,lte=255"`
3937  }
3938  
3939  type ManagerType string
3940  
3941  const (
3942  	ManagerTypeSKSNodepool  ManagerType = "sks-nodepool"
3943  	ManagerTypeInstancePool ManagerType = "instance-pool"
3944  )
3945  
3946  // Resource manager
3947  type Manager struct {
3948  	// Manager ID
3949  	ID UUID `json:"id,omitempty"`
3950  	// Manager type
3951  	Type ManagerType `json:"type,omitempty"`
3952  }
3953  
3954  type ModelRef struct {
3955  	// Associated model ID
3956  	ID UUID `json:"id,omitempty"`
3957  	// Associated model name
3958  	Name string `json:"name,omitempty" validate:"omitempty,gte=1"`
3959  }
3960  
3961  // Cluster networking configuration.
3962  type Networking struct {
3963  	// CIDR Range for Pods in cluster. This must not overlap with any IP ranges assigned to pods. Max of two, comma-separated, dual-stack CIDRs is allowed.
3964  	// If not specified, defaults to 192.168.0.0/16.
3965  	ClusterCidr string `json:"cluster-cidr,omitempty"`
3966  	// Mask size for node cidr in cluster. It must be larger than the Pod CIDR subnet mask. Defaults to 24
3967  	NodeCidrMaskSizeIpv4 int64 `json:"node-cidr-mask-size-ipv4,omitempty" validate:"omitempty,gt=0"`
3968  	// Mask size for node cidr in cluster. It must be larger than the Pod CIDR subnet mask. Defaults to 64
3969  	NodeCidrMaskSizeIpv6 int64 `json:"node-cidr-mask-size-ipv6,omitempty" validate:"omitempty,gt=0"`
3970  	// CIDR range for service cluster IPs. This must not overlap with any IP ranges assigned to nodes or pods. Max of two, comma-separated, dual-stack CIDRs is allowed.
3971  	// If not specified, defaults to 10.96.0.0/12.
3972  	ServiceClusterIPRange string `json:"service-cluster-ip-range,omitempty"`
3973  }
3974  
3975  type OperationReason string
3976  
3977  const (
3978  	OperationReasonIncorrect   OperationReason = "incorrect"
3979  	OperationReasonUnknown     OperationReason = "unknown"
3980  	OperationReasonUnavailable OperationReason = "unavailable"
3981  	OperationReasonForbidden   OperationReason = "forbidden"
3982  	OperationReasonBusy        OperationReason = "busy"
3983  	OperationReasonFault       OperationReason = "fault"
3984  	OperationReasonPartial     OperationReason = "partial"
3985  	OperationReasonNotFound    OperationReason = "not-found"
3986  	OperationReasonInterrupted OperationReason = "interrupted"
3987  	OperationReasonUnsupported OperationReason = "unsupported"
3988  	OperationReasonConflict    OperationReason = "conflict"
3989  )
3990  
3991  // Related resource reference
3992  type OperationReference struct {
3993  	// Command name
3994  	Command string `json:"command,omitempty"`
3995  	// Reference ID
3996  	ID UUID `json:"id,omitempty"`
3997  	// Link to the referenced resource
3998  	Link string `json:"link,omitempty"`
3999  }
4000  
4001  type OperationState string
4002  
4003  const (
4004  	OperationStateFailure OperationState = "failure"
4005  	OperationStatePending OperationState = "pending"
4006  	OperationStateSuccess OperationState = "success"
4007  	OperationStateTimeout OperationState = "timeout"
4008  )
4009  
4010  // Operation
4011  type Operation struct {
4012  	// Operation ID
4013  	ID UUID `json:"id,omitempty"`
4014  	// Operation message
4015  	Message string `json:"message,omitempty"`
4016  	// Operation failure reason
4017  	Reason OperationReason `json:"reason,omitempty"`
4018  	// Related resource reference
4019  	Reference *OperationReference `json:"reference,omitempty"`
4020  	// Operation status
4021  	State OperationState `json:"state,omitempty"`
4022  }
4023  
4024  // Organization
4025  type Organization struct {
4026  	// Organization address
4027  	Address string `json:"address,omitempty"`
4028  	// Organization balance
4029  	Balance float64 `json:"balance,omitempty"`
4030  	// Organization city
4031  	City string `json:"city,omitempty"`
4032  	// Organization country
4033  	Country string `json:"country,omitempty"`
4034  	// Organization currency
4035  	Currency string `json:"currency,omitempty"`
4036  	// Organization ID
4037  	ID UUID `json:"id,omitempty"`
4038  	// Organization name
4039  	Name string `json:"name,omitempty"`
4040  	// Organization postcode
4041  	Postcode string `json:"postcode,omitempty"`
4042  }
4043  
4044  // Private Network
4045  type PrivateNetwork struct {
4046  	// Private Network description
4047  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4048  	// Private Network end IP address
4049  	EndIP net.IP `json:"end-ip,omitempty"`
4050  	// Private Network ID
4051  	ID     UUID   `json:"id,omitempty"`
4052  	Labels Labels `json:"labels,omitempty"`
4053  	// Private Network leased IP addresses
4054  	Leases []PrivateNetworkLease `json:"leases,omitempty"`
4055  	// Private Network name
4056  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4057  	// Private Network netmask
4058  	Netmask net.IP `json:"netmask,omitempty"`
4059  	// Private Network DHCP Options
4060  	Options *PrivateNetworkOptions `json:"options,omitempty"`
4061  	// Private Network start IP address
4062  	StartIP net.IP `json:"start-ip,omitempty"`
4063  	// Private Network VXLAN ID
4064  	Vni int64 `json:"vni,omitempty" validate:"omitempty,gt=0"`
4065  }
4066  
4067  // Private Network leased IP address
4068  type PrivateNetworkLease struct {
4069  	// Attached instance ID
4070  	InstanceID UUID `json:"instance-id,omitempty"`
4071  	// Private Network IP address
4072  	IP net.IP `json:"ip,omitempty"`
4073  }
4074  
4075  // Private Network DHCP Options
4076  type PrivateNetworkOptions struct {
4077  	// DNS Servers
4078  	DNSServers []net.IP `json:"dns-servers,omitempty"`
4079  	// Domain search list, limited to 255 octets
4080  	DomainSearch []string `json:"domain-search,omitempty"`
4081  	// NTP Servers
4082  	NtpServers []net.IP `json:"ntp-servers,omitempty"`
4083  	// Routers
4084  	Routers []net.IP `json:"routers,omitempty"`
4085  }
4086  
4087  type PublicIPAssignment string
4088  
4089  const (
4090  	PublicIPAssignmentInet4 PublicIPAssignment = "inet4"
4091  	PublicIPAssignmentDual  PublicIPAssignment = "dual"
4092  	PublicIPAssignmentNone  PublicIPAssignment = "none"
4093  )
4094  
4095  // Organization Quota
4096  type Quota struct {
4097  	// Resource Limit. -1 for Unlimited
4098  	Limit int64 `json:"limit,omitempty"`
4099  	// Resource Name
4100  	Resource string `json:"resource,omitempty"`
4101  	// Resource Usage
4102  	Usage int64 `json:"usage,omitempty"`
4103  }
4104  
4105  // Resource
4106  type Resource struct {
4107  	// Resource ID
4108  	ID UUID `json:"id,omitempty"`
4109  	// Resource name
4110  	Name string `json:"name,omitempty"`
4111  }
4112  
4113  // AI deployment inference endpoint authentication key
4114  type RevealDeploymentAPIKeyResponse struct {
4115  	APIKey string `json:"api-key,omitempty"`
4116  }
4117  
4118  type ReverseDNSRecord struct {
4119  	DomainName DomainName `json:"domain-name,omitempty" validate:"omitempty,gte=1,lte=253"`
4120  }
4121  
4122  // Scale AI deployment
4123  type ScaleDeploymentRequest struct {
4124  	// Number of replicas (>=0)
4125  	Replicas int64 `json:"replicas" validate:"required,gte=0"`
4126  }
4127  
4128  // Security Group
4129  type SecurityGroup struct {
4130  	// Security Group description
4131  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4132  	// Security Group external sources
4133  	ExternalSources []string `json:"external-sources,omitempty"`
4134  	// Security Group ID
4135  	ID UUID `json:"id,omitempty"`
4136  	// Security Group name
4137  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4138  	// Security Group rules
4139  	Rules []SecurityGroupRule `json:"rules,omitempty"`
4140  }
4141  
4142  type SecurityGroupResourceVisibility string
4143  
4144  const (
4145  	SecurityGroupResourceVisibilityPrivate SecurityGroupResourceVisibility = "private"
4146  	SecurityGroupResourceVisibilityPublic  SecurityGroupResourceVisibility = "public"
4147  )
4148  
4149  // Security Group
4150  type SecurityGroupResource struct {
4151  	// Security Group ID
4152  	ID UUID `json:"id,omitempty"`
4153  	// Security Group name
4154  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4155  	// Whether this points to a public security group. This is only valid when in the context of
4156  	// a rule addition which uses a public security group as a source or destination.
4157  	Visibility SecurityGroupResourceVisibility `json:"visibility,omitempty"`
4158  }
4159  
4160  type SecurityGroupRuleFlowDirection string
4161  
4162  const (
4163  	SecurityGroupRuleFlowDirectionIngress SecurityGroupRuleFlowDirection = "ingress"
4164  	SecurityGroupRuleFlowDirectionEgress  SecurityGroupRuleFlowDirection = "egress"
4165  )
4166  
4167  // ICMP details
4168  type SecurityGroupRuleICMP struct {
4169  	Code int64 `json:"code,omitempty" validate:"omitempty,gte=-1,lte=254"`
4170  	Type int64 `json:"type,omitempty" validate:"omitempty,gte=-1,lte=254"`
4171  }
4172  
4173  type SecurityGroupRuleProtocol string
4174  
4175  const (
4176  	SecurityGroupRuleProtocolTCP    SecurityGroupRuleProtocol = "tcp"
4177  	SecurityGroupRuleProtocolEsp    SecurityGroupRuleProtocol = "esp"
4178  	SecurityGroupRuleProtocolICMP   SecurityGroupRuleProtocol = "icmp"
4179  	SecurityGroupRuleProtocolUDP    SecurityGroupRuleProtocol = "udp"
4180  	SecurityGroupRuleProtocolGre    SecurityGroupRuleProtocol = "gre"
4181  	SecurityGroupRuleProtocolAh     SecurityGroupRuleProtocol = "ah"
4182  	SecurityGroupRuleProtocolIpip   SecurityGroupRuleProtocol = "ipip"
4183  	SecurityGroupRuleProtocolIcmpv6 SecurityGroupRuleProtocol = "icmpv6"
4184  )
4185  
4186  // Security Group rule
4187  type SecurityGroupRule struct {
4188  	// Security Group rule description
4189  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4190  	// End port of the range
4191  	EndPort int64 `json:"end-port,omitempty" validate:"omitempty,gte=1,lte=65535"`
4192  	// Network flow direction to match
4193  	FlowDirection SecurityGroupRuleFlowDirection `json:"flow-direction,omitempty"`
4194  	// ICMP details
4195  	ICMP *SecurityGroupRuleICMP `json:"icmp,omitempty"`
4196  	// Security Group rule ID
4197  	ID UUID `json:"id,omitempty"`
4198  	// CIDR-formatted network allowed
4199  	Network string `json:"network,omitempty"`
4200  	// Network protocol
4201  	Protocol SecurityGroupRuleProtocol `json:"protocol,omitempty"`
4202  	// Security Group
4203  	SecurityGroup *SecurityGroupResource `json:"security-group,omitempty"`
4204  	// Start port of the range
4205  	StartPort int64 `json:"start-port,omitempty" validate:"omitempty,gte=1,lte=65535"`
4206  }
4207  
4208  // Kubernetes Audit parameters
4209  type SKSAudit struct {
4210  	// Enabled
4211  	Enabled        *bool                  `json:"enabled,omitempty"`
4212  	Endpoint       SKSAuditEndpoint       `json:"endpoint,omitempty" validate:"omitempty,gte=1,lte=2000"`
4213  	InitialBackoff SKSAuditInitialBackoff `json:"initial-backoff,omitempty" validate:"omitempty,gte=1,lte=10"`
4214  }
4215  
4216  type SKSAuditBearerToken string
4217  
4218  // Kubernetes Audit parameters
4219  type SKSAuditCreate struct {
4220  	BearerToken    SKSAuditBearerToken    `json:"bearer-token" validate:"required,gte=1,lte=2000"`
4221  	Endpoint       SKSAuditEndpoint       `json:"endpoint" validate:"required,gte=1,lte=2000"`
4222  	InitialBackoff SKSAuditInitialBackoff `json:"initial-backoff,omitempty" validate:"omitempty,gte=1,lte=10"`
4223  }
4224  
4225  type SKSAuditEndpoint string
4226  
4227  type SKSAuditInitialBackoff string
4228  
4229  // Kubernetes Audit parameters
4230  type SKSAuditUpdate struct {
4231  	BearerToken SKSAuditBearerToken `json:"bearer-token,omitempty" validate:"omitempty,gte=1,lte=2000"`
4232  	// Enable or Disable Kubernetes Audit
4233  	Enabled        *bool                  `json:"enabled,omitempty"`
4234  	Endpoint       SKSAuditEndpoint       `json:"endpoint,omitempty" validate:"omitempty,gte=1,lte=2000"`
4235  	InitialBackoff SKSAuditInitialBackoff `json:"initial-backoff,omitempty" validate:"omitempty,gte=1,lte=10"`
4236  }
4237  
4238  type SKSClusterCni string
4239  
4240  const (
4241  	SKSClusterCniCalico SKSClusterCni = "calico"
4242  	SKSClusterCniCilium SKSClusterCni = "cilium"
4243  )
4244  
4245  type SKSClusterLevel string
4246  
4247  const (
4248  	SKSClusterLevelStarter SKSClusterLevel = "starter"
4249  	SKSClusterLevelPro     SKSClusterLevel = "pro"
4250  )
4251  
4252  type SKSClusterState string
4253  
4254  const (
4255  	SKSClusterStateRotatingCsiCredentials       SKSClusterState = "rotating-csi-credentials"
4256  	SKSClusterStateRotatingCcmCredentials       SKSClusterState = "rotating-ccm-credentials"
4257  	SKSClusterStateCreating                     SKSClusterState = "creating"
4258  	SKSClusterStateUpgrading                    SKSClusterState = "upgrading"
4259  	SKSClusterStateDeleting                     SKSClusterState = "deleting"
4260  	SKSClusterStateRunning                      SKSClusterState = "running"
4261  	SKSClusterStateSuspending                   SKSClusterState = "suspending"
4262  	SKSClusterStateUpdating                     SKSClusterState = "updating"
4263  	SKSClusterStateError                        SKSClusterState = "error"
4264  	SKSClusterStateRotatingKarpenterCredentials SKSClusterState = "rotating-karpenter-credentials"
4265  	SKSClusterStateResuming                     SKSClusterState = "resuming"
4266  )
4267  
4268  // SKS Cluster
4269  type SKSCluster struct {
4270  	// Cluster addons
4271  	Addons []string `json:"addons,omitempty"`
4272  	// Kubernetes Audit parameters
4273  	Audit *SKSAudit `json:"audit,omitempty"`
4274  	// Enable auto upgrade of the control plane to the latest patch version available
4275  	AutoUpgrade *bool `json:"auto-upgrade,omitempty"`
4276  	// Cluster CNI
4277  	Cni SKSClusterCni `json:"cni,omitempty"`
4278  	// Cluster creation date
4279  	CreatedAT time.Time `json:"created-at,omitempty"`
4280  	// Cluster description
4281  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4282  	// Indicates whether to deploy the Kubernetes network proxy.
4283  	EnableKubeProxy *bool `json:"enable-kube-proxy,omitempty"`
4284  	// Indicates whether to add operators certificate authority (CA) as part of trusted CAs for the API server.
4285  	EnableOperatorsCA *bool `json:"enable-operators-ca,omitempty"`
4286  	// Cluster endpoint
4287  	Endpoint string `json:"endpoint,omitempty"`
4288  	// A list of Kubernetes-only Alpha features to enable for API server component
4289  	FeatureGates []string `json:"feature-gates,omitempty"`
4290  	// Cluster ID
4291  	ID     UUID             `json:"id,omitempty"`
4292  	Labels SKSClusterLabels `json:"labels,omitempty"`
4293  	// Cluster level
4294  	Level SKSClusterLevel `json:"level,omitempty"`
4295  	// Cluster name
4296  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4297  	// Cluster Nodepools
4298  	Nodepools []SKSNodepool `json:"nodepools,omitempty"`
4299  	// Cluster state
4300  	State SKSClusterState `json:"state,omitempty"`
4301  	// Control plane Kubernetes version
4302  	Version string `json:"version,omitempty"`
4303  }
4304  
4305  type SKSClusterDeprecatedResource struct {
4306  	Group          string `json:"group,omitempty"`
4307  	RemovedRelease string `json:"removed-release,omitempty"`
4308  	Resource       string `json:"resource,omitempty"`
4309  	Subresource    string `json:"subresource,omitempty"`
4310  	Version        string `json:"version,omitempty"`
4311  }
4312  
4313  type SKSClusterLabels map[string]string
4314  
4315  // Kubeconfig request for a SKS cluster
4316  type SKSKubeconfigRequest struct {
4317  	// List of roles. The certificate present in the Kubeconfig will have these roles set in the Org field.
4318  	Groups []string `json:"groups" validate:"required"`
4319  	// Validity in seconds of the Kubeconfig user certificate (default: 30 days)
4320  	Ttl int64 `json:"ttl,omitempty" validate:"omitempty,gt=0"`
4321  	// User name in the generated Kubeconfig. The certificate present in the Kubeconfig will also have this name set for the CN field.
4322  	User string `json:"user" validate:"required"`
4323  }
4324  
4325  type SKSNodepoolPublicIPAssignment string
4326  
4327  const (
4328  	SKSNodepoolPublicIPAssignmentInet4 SKSNodepoolPublicIPAssignment = "inet4"
4329  	SKSNodepoolPublicIPAssignmentDual  SKSNodepoolPublicIPAssignment = "dual"
4330  )
4331  
4332  type SKSNodepoolState string
4333  
4334  const (
4335  	SKSNodepoolStateRenewingToken SKSNodepoolState = "renewing-token"
4336  	SKSNodepoolStateCreating      SKSNodepoolState = "creating"
4337  	SKSNodepoolStateDeleting      SKSNodepoolState = "deleting"
4338  	SKSNodepoolStateRunning       SKSNodepoolState = "running"
4339  	SKSNodepoolStateScaling       SKSNodepoolState = "scaling"
4340  	SKSNodepoolStateUpdating      SKSNodepoolState = "updating"
4341  	SKSNodepoolStateError         SKSNodepoolState = "error"
4342  )
4343  
4344  // SKS Nodepool
4345  type SKSNodepool struct {
4346  	// Nodepool addons
4347  	Addons []string `json:"addons,omitempty"`
4348  	// Nodepool Anti-affinity Groups
4349  	AntiAffinityGroups []AntiAffinityGroup `json:"anti-affinity-groups,omitempty"`
4350  	// Nodepool creation date
4351  	CreatedAT time.Time `json:"created-at,omitempty"`
4352  	// Deploy target
4353  	DeployTarget *DeployTarget `json:"deploy-target,omitempty"`
4354  	// Nodepool description
4355  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4356  	// Nodepool instances disk size in GiB
4357  	DiskSize int64 `json:"disk-size,omitempty" validate:"omitempty,gte=20,lte=51200"`
4358  	// Nodepool ID
4359  	ID UUID `json:"id,omitempty"`
4360  	// Instance Pool
4361  	InstancePool *InstancePool `json:"instance-pool,omitempty"`
4362  	// The instances created by the Nodepool will be prefixed with this value (default: pool)
4363  	InstancePrefix string `json:"instance-prefix,omitempty" validate:"omitempty,gte=1,lte=30"`
4364  	// Compute instance type
4365  	InstanceType *InstanceType `json:"instance-type,omitempty"`
4366  	// Kubelet image GC options
4367  	KubeletImageGC *KubeletImageGC   `json:"kubelet-image-gc,omitempty"`
4368  	Labels         SKSNodepoolLabels `json:"labels,omitempty"`
4369  	// Nodepool name
4370  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4371  	// Nodepool Private Networks
4372  	PrivateNetworks []PrivateNetwork `json:"private-networks,omitempty"`
4373  	// Nodepool public IP assignment of the Instances:
4374  	// * IPv4 and IPv6 (`dual`) addressing.
4375  	// * IPv4 and IPv6 (`dual`) addressing.
4376  	PublicIPAssignment SKSNodepoolPublicIPAssignment `json:"public-ip-assignment,omitempty"`
4377  	// Nodepool Security Groups
4378  	SecurityGroups []SecurityGroup `json:"security-groups,omitempty"`
4379  	// Number of instances
4380  	Size int64 `json:"size,omitempty" validate:"omitempty,gte=0"`
4381  	// Nodepool state
4382  	State  SKSNodepoolState  `json:"state,omitempty"`
4383  	Taints SKSNodepoolTaints `json:"taints,omitempty"`
4384  	// Instance template
4385  	Template *Template `json:"template,omitempty"`
4386  	// Nodepool version
4387  	Version string `json:"version,omitempty"`
4388  }
4389  
4390  type SKSNodepoolLabels map[string]string
4391  
4392  type SKSNodepoolTaintEffect string
4393  
4394  const (
4395  	SKSNodepoolTaintEffectNoExecute        SKSNodepoolTaintEffect = "NoExecute"
4396  	SKSNodepoolTaintEffectNoSchedule       SKSNodepoolTaintEffect = "NoSchedule"
4397  	SKSNodepoolTaintEffectPreferNoSchedule SKSNodepoolTaintEffect = "PreferNoSchedule"
4398  )
4399  
4400  // Nodepool taint
4401  type SKSNodepoolTaint struct {
4402  	// Nodepool taint effect
4403  	Effect SKSNodepoolTaintEffect `json:"effect" validate:"required"`
4404  	// Nodepool taint value
4405  	Value string `json:"value" validate:"required,gte=1,lte=255"`
4406  }
4407  
4408  type SKSNodepoolTaints map[string]SKSNodepoolTaint
4409  
4410  // SKS Cluster OpenID config map
4411  type SKSOidc struct {
4412  	// OpenID client ID
4413  	ClientID string `json:"client-id" validate:"required,gte=1,lte=255"`
4414  	// JWT claim to use as the user's group
4415  	GroupsClaim string `json:"groups-claim,omitempty" validate:"omitempty,gte=1,lte=255"`
4416  	// Prefix prepended to group claims
4417  	GroupsPrefix string `json:"groups-prefix,omitempty" validate:"omitempty,gte=1,lte=255"`
4418  	// OpenID provider URL
4419  	IssuerURL string `json:"issuer-url" validate:"required,gte=1,lte=255"`
4420  	// A key value map that describes a required claim in the ID Token
4421  	RequiredClaim map[string]string `json:"required-claim,omitempty"`
4422  	// JWT claim to use as the user name
4423  	UsernameClaim string `json:"username-claim,omitempty" validate:"omitempty,gte=1,lte=255"`
4424  	// Prefix prepended to username claims
4425  	UsernamePrefix string `json:"username-prefix,omitempty" validate:"omitempty,gte=1,lte=255"`
4426  }
4427  
4428  // Exported snapshot information
4429  type SnapshotExport struct {
4430  	// Exported snapshot disk file MD5 checksum
4431  	Md5sum string `json:"md5sum,omitempty"`
4432  	// Exported snapshot disk file pre-signed URL
4433  	PresignedURL string `json:"presigned-url,omitempty"`
4434  }
4435  
4436  type SnapshotState string
4437  
4438  const (
4439  	SnapshotStateSnapshotting SnapshotState = "snapshotting"
4440  	SnapshotStateDeleted      SnapshotState = "deleted"
4441  	SnapshotStateExporting    SnapshotState = "exporting"
4442  	SnapshotStateReady        SnapshotState = "ready"
4443  	SnapshotStateDeleting     SnapshotState = "deleting"
4444  	SnapshotStateError        SnapshotState = "error"
4445  	SnapshotStateExported     SnapshotState = "exported"
4446  )
4447  
4448  // Snapshot
4449  type Snapshot struct {
4450  	// Indicates whether the snapshot was taken using an application-consistent method
4451  	ApplicationConsistent *bool `json:"application-consistent,omitempty"`
4452  	// Snapshot creation date
4453  	CreatedAT time.Time `json:"created-at,omitempty"`
4454  	// Exported snapshot information
4455  	Export *SnapshotExport `json:"export,omitempty"`
4456  	// Snapshot ID
4457  	ID UUID `json:"id,omitempty"`
4458  	// Instance
4459  	Instance *Instance `json:"instance,omitempty"`
4460  	// Snapshot name
4461  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4462  	// Snapshot size in GiB
4463  	Size int64 `json:"size,omitempty" validate:"omitempty,gte=10,lte=51200"`
4464  	// Snapshot state
4465  	State SnapshotState `json:"state,omitempty"`
4466  }
4467  
4468  // SOS Bucket usage
4469  type SOSBucketUsage struct {
4470  	// SOS Bucket creation date
4471  	CreatedAT time.Time `json:"created-at,omitempty"`
4472  	// SOS Bucket name
4473  	Name string `json:"name,omitempty"`
4474  	// SOS Bucket size in B
4475  	Size     int64    `json:"size,omitempty" validate:"omitempty,gte=0"`
4476  	ZoneName ZoneName `json:"zone-name,omitempty"`
4477  }
4478  
4479  // SSH key
4480  type SSHKey struct {
4481  	// SSH key fingerprint
4482  	Fingerprint string `json:"fingerprint,omitempty"`
4483  	// SSH key name
4484  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4485  }
4486  
4487  type TemplateBootMode string
4488  
4489  const (
4490  	TemplateBootModeLegacy TemplateBootMode = "legacy"
4491  	TemplateBootModeUefi   TemplateBootMode = "uefi"
4492  )
4493  
4494  type TemplateVisibility string
4495  
4496  const (
4497  	TemplateVisibilityPrivate TemplateVisibility = "private"
4498  	TemplateVisibilityPublic  TemplateVisibility = "public"
4499  )
4500  
4501  // Instance template
4502  type Template struct {
4503  	// Template with Qemu Guest Agent installed for application consistent snapshot
4504  	ApplicationConsistentSnapshotEnabled *bool `json:"application-consistent-snapshot-enabled,omitempty"`
4505  	// Boot mode (default: legacy)
4506  	BootMode TemplateBootMode `json:"boot-mode,omitempty"`
4507  	// Template build
4508  	Build string `json:"build,omitempty"`
4509  	// Template MD5 checksum
4510  	Checksum string `json:"checksum,omitempty"`
4511  	// Template creation date
4512  	CreatedAT time.Time `json:"created-at,omitempty"`
4513  	// Template default user
4514  	DefaultUser string `json:"default-user,omitempty" validate:"omitempty,gte=1,lte=255"`
4515  	// Template description
4516  	Description string `json:"description,omitempty" validate:"omitempty,lte=255"`
4517  	// Template family
4518  	Family string `json:"family,omitempty"`
4519  	// Template ID
4520  	ID UUID `json:"id,omitempty"`
4521  	// Template maintainer
4522  	Maintainer string `json:"maintainer,omitempty"`
4523  	// Template name
4524  	Name string `json:"name,omitempty" validate:"omitempty,gte=1,lte=255"`
4525  	// Enable password-based login
4526  	PasswordEnabled *bool `json:"password-enabled,omitempty"`
4527  	// Template size
4528  	Size int64 `json:"size,omitempty" validate:"omitempty,gt=0"`
4529  	// Enable SSH key-based login
4530  	SSHKeyEnabled *bool `json:"ssh-key-enabled,omitempty"`
4531  	// Template source URL
4532  	URL string `json:"url,omitempty"`
4533  	// Template version
4534  	Version string `json:"version,omitempty"`
4535  	// Template visibility
4536  	Visibility TemplateVisibility `json:"visibility,omitempty"`
4537  	// Zones availability
4538  	Zones []ZoneName `json:"zones,omitempty"`
4539  }
4540  
4541  // User
4542  type User struct {
4543  	// User Email
4544  	Email string `json:"email" validate:"required"`
4545  	// User ID
4546  	ID UUID `json:"id,omitempty"`
4547  	// True if the user has not yet created an Exoscale account
4548  	Pending *bool `json:"pending,omitempty"`
4549  	// IAM Role
4550  	Role *IAMRole `json:"role" validate:"required"`
4551  	// SSO enabled
4552  	Sso *bool `json:"sso,omitempty"`
4553  	// Two Factor Authentication enabled
4554  	TwoFactorAuthentication *bool `json:"two-factor-authentication,omitempty"`
4555  }
4556  
4557  // Zone
4558  type Zone struct {
4559  	// Zone API endpoint
4560  	APIEndpoint Endpoint `json:"api-endpoint,omitempty"`
4561  	Name        ZoneName `json:"name,omitempty"`
4562  	// Zone SOS endpoint
4563  	SOSEndpoint Endpoint `json:"sos-endpoint,omitempty"`
4564  }
4565  
4566  type ZoneName string
4567  
4568  const (
4569  	ZoneNameCHDk2  ZoneName = "ch-dk-2"
4570  	ZoneNameDEMuc1 ZoneName = "de-muc-1"
4571  	ZoneNameCHGva2 ZoneName = "ch-gva-2"
4572  	ZoneNameATVie1 ZoneName = "at-vie-1"
4573  	ZoneNameDEFra1 ZoneName = "de-fra-1"
4574  	ZoneNameBGSof1 ZoneName = "bg-sof-1"
4575  	ZoneNameATVie2 ZoneName = "at-vie-2"
4576  	ZoneNameHrZag1 ZoneName = "hr-zag-1"
4577  )
4578