// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) Go Code Generator. DO NOT EDIT.

package armhorizondb

import "time"

// Cluster - Represents the HorizonDb cluster.
type Cluster struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *ClusterProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// ClusterForPatchUpdate - HorizonDb cluster for update operations.
type ClusterForPatchUpdate struct {
	// The properties that can be updated for a HorizonDb cluster.
	Properties *ClusterPropertiesForPatchUpdate

	// Resource tags.
	Tags map[string]*string
}

// ClusterListResult - The response of a HorizonDbCluster list operation.
type ClusterListResult struct {
	// REQUIRED; The HorizonDbCluster items on this page
	Value []*Cluster

	// The link to the next page of items
	NextLink *string
}

// ClusterParameterGroupConnectionProperties - Connection information for HorizonDb parameter group.
type ClusterParameterGroupConnectionProperties struct {
	// Indicates whether the parameters should be applied immediately.
	ApplyImmediately *bool

	// The resource ID of the connected parameter group.
	ID *string

	// READ-ONLY; Indication of if parameter group is applied on HorizonDb resource.
	SyncStatus *string
}

// ClusterProperties - Properties of a HorizonDb cluster.
type ClusterProperties struct {
	// REQUIRED; The administrator login name.
	AdministratorLogin *string

	// The administrator login password.
	AdministratorLoginPassword *string

	// The mode to create a new HorizonDb cluster.
	CreateMode *CreateModeCluster

	// The network related info.
	Network *Network

	// Defines connection to a parameter group.
	ParameterGroup *ClusterParameterGroupConnectionProperties

	// Restore point creation time specifying the time to restore from.
	PointInTimeUTC *time.Time

	// The pool name for restore or replica operations.
	PoolName *string

	// The processor type for the HorizonDb cluster.
	ProcessorType *string

	// Number of replicas.
	ReplicaCount *int32

	// The source cluster resource ID for restore or replica creation.
	SourceClusterResourceID *string

	// Number of vCores.
	VCores *int32

	// The version of the HorizonDb cluster.
	Version *string

	// Defines how replicas are placed across availability zones.
	ZonePlacementPolicy *ZonePlacementPolicy

	// READ-ONLY; The fully qualified domain name of the cluster.
	FullyQualifiedDomainName *string

	// READ-ONLY; The provisioning state of the cluster.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The fully qualified domain name used for readonly endpoint for the cluster.
	ReadonlyEndpoint *string

	// READ-ONLY; Current state of the cluster.
	State *State
}

// ClusterPropertiesForPatchUpdate - Properties of a HorizonDb cluster for update operations.
type ClusterPropertiesForPatchUpdate struct {
	// The administrator login password.
	AdministratorLoginPassword *string

	// Defines connection to a parameter group.
	ParameterGroup *ClusterParameterGroupConnectionProperties

	// Number of vCores.
	VCores *int32
}

// FirewallRule - Represents the HorizonDb firewall rule.
type FirewallRule struct {
	// The resource-specific properties for this resource.
	Properties *FirewallRuleProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// FirewallRuleListResult - The response of a HorizonDbFirewallRule list operation.
type FirewallRuleListResult struct {
	// REQUIRED; The HorizonDbFirewallRule items on this page
	Value []*FirewallRule

	// The link to the next page of items
	NextLink *string
}

// FirewallRuleProperties - Properties of a HorizonDb firewall rule.
type FirewallRuleProperties struct {
	// REQUIRED; The end IP address of the firewall rule (IPv4).
	EndIPAddress *string

	// REQUIRED; The start IP address of the firewall rule (IPv4).
	StartIPAddress *string

	// The description of the HorizonDb firewall rule.
	Description *string

	// READ-ONLY; The provisioning state of the firewall rule.
	ProvisioningState *ProvisioningState
}

// Network properties.
type Network struct {
	// READ-ONLY; The flag indicating whether public ip is requested.
	PublicNetworkAccess *PublicNetworkAccessState
}

// Operation - REST API Operation
//
// Details of a REST API operation, returned from the Resource Provider Operations API
type Operation struct {
	// Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
	ActionType *ActionType

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure
	// Resource Manager/control-plane operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action"
	Name *string

	// READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
	// value is "user,system"
	Origin *Origin
}

// OperationDisplay - Localized display information for an operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to
// get the next set of results.
type OperationListResult struct {
	// REQUIRED; The Operation items on this page
	Value []*Operation

	// The link to the next page of items
	NextLink *string
}

// OptionalPropertiesUpdateableProperties - The template for adding optional properties.
type OptionalPropertiesUpdateableProperties struct {
	// The private endpoint resource.
	PrivateEndpoint *PrivateEndpoint

	// A collection of information about the state of the connection between service consumer and provider.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState
}

// ParameterGroup - Represents the HorizonDb parameter group.
type ParameterGroup struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *ParameterGroupProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// ParameterGroupConnectionProperties - Connection information for HorizonDb parameter group.
type ParameterGroupConnectionProperties struct {
	// READ-ONLY; The resource ID of the connected resource.
	ID *string

	// READ-ONLY; The name of the connected resource.
	Name *string

	// READ-ONLY; The type of the resource.
	Type *string
}

// ParameterGroupConnectionPropertiesListResult - The response of a HorizonDbParameterGroupConnectionProperties list operation.
type ParameterGroupConnectionPropertiesListResult struct {
	// REQUIRED; The HorizonDbParameterGroupConnectionProperties items on this page
	Value []*ParameterGroupConnectionProperties

	// The link to the next page of items
	NextLink *string
}

// ParameterGroupForPatchUpdate - HorizonDb parameter group for update operations.
type ParameterGroupForPatchUpdate struct {
	// The properties that can be updated for a HorizonDb parameter group.
	Properties *ParameterGroupPropertiesForPatchUpdate

	// Resource tags.
	Tags map[string]*string
}

// ParameterGroupListResult - The response of a HorizonDbParameterGroup list operation.
type ParameterGroupListResult struct {
	// REQUIRED; The HorizonDbParameterGroup items on this page
	Value []*ParameterGroup

	// The link to the next page of items
	NextLink *string
}

// ParameterGroupProperties - Properties of a HorizonDb parameter group.
type ParameterGroupProperties struct {
	// Indicates whether the parameters should be applied immediately.
	ApplyImmediately *bool

	// Description of the parameter group.
	Description *string

	// Parameters in the parameter group.
	Parameters []*ParameterProperties

	// PostgreSQL version for the parameter group.
	PgVersion *int32

	// READ-ONLY; The provisioning state of the parameter group.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Current version of the parameter group.
	Version *int32
}

// ParameterGroupPropertiesForPatchUpdate - Properties of a HorizonDb parameter group for update operations.
type ParameterGroupPropertiesForPatchUpdate struct {
	// Indicates whether the parameters should be applied immediately.
	ApplyImmediately *bool

	// Description of the parameter group.
	Description *string

	// Parameters in the parameter group.
	Parameters []*ParameterProperties
}

// ParameterProperties - Properties of a HorizonDb parameters.
type ParameterProperties struct {
	// The name of the parameter.
	Name *string

	// The value of the configuration.
	Value *string

	// READ-ONLY; The allowed values for the parameter.
	AllowedValues *string

	// READ-ONLY; The data type of the parameter.
	DataType *string

	// READ-ONLY; The description of the parameter.
	Description *string

	// READ-ONLY; Link to parameter documentation.
	DocumentationLink *string

	// READ-ONLY; Whether the parameter can be changed dynamically.
	IsDynamic *bool

	// READ-ONLY; Whether the parameter is a read-only parameter.
	IsReadOnly *bool

	// READ-ONLY; The unit of measurement for the parameter.
	Unit *string
}

// Pool - Represents the HorizonDb pool.
type Pool struct {
	// The resource-specific properties for this resource.
	Properties *PoolProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PoolListResult - The response of a HorizonDbPool list operation.
type PoolListResult struct {
	// REQUIRED; The HorizonDbPool items on this page
	Value []*Pool

	// The link to the next page of items
	NextLink *string
}

// PoolProperties - Properties of a HorizonDb pool.
type PoolProperties struct {
	// The location of the HorizonDb pool.
	Location *string

	// READ-ONLY; The create mode for the pool.
	CreateMode *CreateModePool

	// READ-ONLY; The provisioning state of the pool.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Number of replicas in the pool.
	ReplicaCount *int32

	// READ-ONLY; Current state of the pool.
	State *State

	// READ-ONLY; The version of the HorizonDb pool.
	Version *string
}

// PrivateEndpoint - The private endpoint resource.
type PrivateEndpoint struct {
	// READ-ONLY; The resource identifier of the private endpoint
	ID *string
}

// PrivateEndpointConnection - The private endpoint connection resource
type PrivateEndpointConnection struct {
	// The private endpoint connection properties
	Properties *PrivateEndpointConnectionProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PrivateEndpointConnectionProperties - Properties of the private endpoint connection.
type PrivateEndpointConnectionProperties struct {
	// REQUIRED; A collection of information about the state of the connection between service consumer and provider.
	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState

	// The private endpoint resource.
	PrivateEndpoint *PrivateEndpoint

	// READ-ONLY; The group ids for the private endpoint resource.
	GroupIDs []*string

	// READ-ONLY; The provisioning state of the private endpoint connection resource.
	ProvisioningState *PrivateEndpointConnectionProvisioningState
}

// PrivateEndpointConnectionResource - A private endpoint connection resource
type PrivateEndpointConnectionResource struct {
	// The private endpoint connection properties
	Properties *PrivateEndpointConnectionProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PrivateEndpointConnectionResourceListResult - The response of a PrivateEndpointConnectionResource list operation.
type PrivateEndpointConnectionResourceListResult struct {
	// REQUIRED; The PrivateEndpointConnectionResource items on this page
	Value []*PrivateEndpointConnectionResource

	// The link to the next page of items
	NextLink *string
}

// PrivateEndpointConnectionUpdate - PATCH model for private endpoint connections
type PrivateEndpointConnectionUpdate struct {
	// The private endpoint connection properties
	Properties *OptionalPropertiesUpdateableProperties
}

// PrivateLinkResource - Represents the HorizonDb private link resource.
type PrivateLinkResource struct {
	// The resource-specific properties for this resource.
	Properties *PrivateLinkResourceProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// PrivateLinkResourceListResult - The response of a HorizonDbPrivateLinkResource list operation.
type PrivateLinkResourceListResult struct {
	// REQUIRED; The HorizonDbPrivateLinkResource items on this page
	Value []*PrivateLinkResource

	// The link to the next page of items
	NextLink *string
}

// PrivateLinkResourceProperties - Properties of a private link resource.
type PrivateLinkResourceProperties struct {
	// The private link resource private link DNS zone name.
	RequiredZoneNames []*string

	// READ-ONLY; The private link resource group id.
	GroupID *string

	// READ-ONLY; The private link resource required member names.
	RequiredMembers []*string
}

// PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer
// and provider.
type PrivateLinkServiceConnectionState struct {
	// A message indicating if changes on the service provider require any updates on the consumer.
	ActionsRequired *string

	// The reason for approval/rejection of the connection.
	Description *string

	// Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
	Status *PrivateEndpointServiceConnectionStatus
}

// Replica - Represents the HorizonDb replica.
type Replica struct {
	// The resource-specific properties for this resource.
	Properties *ReplicaProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// ReplicaForPatchUpdate - HorizonDb replica for update operations.
type ReplicaForPatchUpdate struct {
	// Properties of a HorizonDb replica for update operations.
	Properties *ReplicaPropertiesForPatchUpdate
}

// ReplicaListResult - The response of a HorizonDbReplica list operation.
type ReplicaListResult struct {
	// REQUIRED; The HorizonDbReplica items on this page
	Value []*Replica

	// The link to the next page of items
	NextLink *string
}

// ReplicaProperties - Properties of a HorizonDb replica.
type ReplicaProperties struct {
	// The availability zone of the replica.
	AvailabilityZone *string

	// Role of the replica.
	Role *ReplicaRole

	// READ-ONLY; The fully qualified domain name of the replica.
	FullyQualifiedDomainName *string

	// READ-ONLY; The provisioning state of the replica.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Current status of the replica.
	Status *State
}

// ReplicaPropertiesForPatchUpdate - Properties of a HorizonDb replica for update operations.
type ReplicaPropertiesForPatchUpdate struct {
	// Role of the replica.
	Role *ReplicaRole
}

// SystemData - Metadata pertaining to creation and last modification of the resource.
type SystemData struct {
	// The timestamp of resource creation (UTC).
	CreatedAt *time.Time

	// The identity that created the resource.
	CreatedBy *string

	// The type of identity that created the resource.
	CreatedByType *CreatedByType

	// The timestamp of resource last modification (UTC)
	LastModifiedAt *time.Time

	// The identity that last modified the resource.
	LastModifiedBy *string

	// The type of identity that last modified the resource.
	LastModifiedByType *CreatedByType
}
