// 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 armhybridconnectivity

import "time"

// AADProfileProperties - The AAD Profile
type AADProfileProperties struct {
	// REQUIRED; The arc ingress gateway server app id.
	ServerID *string

	// REQUIRED; The target resource home tenant id.
	TenantID *string
}

// AwsCloudProfile - cloud profile for AWS.
type AwsCloudProfile struct {
	// REQUIRED; Account id for the AWS account.
	AccountID *string

	// List of AWS accounts which need to be excluded.
	ExcludedAccounts []*string

	// Boolean value that indicates whether the account is organizational or not. True represents organization account, whereas
	// false represents a single account.
	IsOrganizationalAccount *bool
}

// EndpointAccessResource - The endpoint access for the target resource.
type EndpointAccessResource struct {
	// Azure relay hybrid connection access properties
	Relay *RelayNamespaceAccessProperties
}

// EndpointProperties - Endpoint details
type EndpointProperties struct {
	// REQUIRED; The type of endpoint.
	Type *Type

	// The resource Id of the connectivity endpoint (optional).
	ResourceID *string

	// READ-ONLY; The resource provisioning state.
	ProvisioningState *string
}

// EndpointResource - The endpoint for the target resource.
type EndpointResource struct {
	// The endpoint properties.
	Properties *EndpointProperties

	// READ-ONLY; The endpoint name.
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

// EndpointsList - The list of endpoints.
type EndpointsList struct {
	// REQUIRED; The list of endpoint.
	Value []*EndpointResource

	// The link used to get the next page of endpoints list.
	NextLink *string
}

// ErrorAdditionalInfo - The resource management error additional info.
type ErrorAdditionalInfo struct {
	// READ-ONLY; The additional info.
	Info *ErrorAdditionalInfoInfo

	// READ-ONLY; The additional info type.
	Type *string
}

type ErrorAdditionalInfoInfo struct {
}

// ErrorDetail - The error detail.
type ErrorDetail struct {
	// READ-ONLY; The error additional info.
	AdditionalInfo []*ErrorAdditionalInfo

	// READ-ONLY; The error code.
	Code *string

	// READ-ONLY; The error details.
	Details []*ErrorDetail

	// READ-ONLY; The error message.
	Message *string

	// READ-ONLY; The error target.
	Target *string
}

// GenerateAwsTemplateRequest - ConnectorId and SolutionTypes and their properties to Generate AWS CFT Template.
type GenerateAwsTemplateRequest struct {
	// REQUIRED; The name of public cloud connector
	ConnectorID *string

	// The list of solution types and their settings
	SolutionTypes []*SolutionTypeSettings
}

// IngressGatewayResource - The ingress gateway access credentials
type IngressGatewayResource struct {
	// Ingress gateway profile
	Ingress *IngressProfileProperties

	// Azure relay hybrid connection access properties
	Relay *RelayNamespaceAccessProperties
}

// IngressProfileProperties - Ingress gateway profile
type IngressProfileProperties struct {
	// REQUIRED; The AAD Profile
	AADProfile *AADProfileProperties

	// REQUIRED; The ingress hostname.
	Hostname *string
}

// InventoryProperties - Definition of inventory.
type InventoryProperties struct {
	// Gets or sets the mapped azure resource id.
	AzureResourceID *string

	// Gets or sets the cloud native resource name.
	CloudNativeResourceID *string

	// Gets or sets the cloud native resource type.
	CloudNativeType *CloudNativeType

	// Gets or sets the status of the inventory.
	Status *SolutionConfigurationStatus

	// Gets or sets the status details.
	StatusDetails *string

	// READ-ONLY; The resource provisioning state.
	ProvisioningState *ResourceProvisioningState
}

// InventoryResource - Concrete proxy resource types can be created by aliasing this type using a specific property type.
type InventoryResource struct {
	// The resource-specific properties for this resource.
	Properties *InventoryProperties

	// READ-ONLY; Inventory resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

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

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

// ListCredentialsRequest - The details of the service for which credentials needs to be returned.
type ListCredentialsRequest struct {
	// The name of the service. If not provided, the request will by pass the generation of service configuration token
	ServiceName *ServiceName
}

// ListIngressGatewayCredentialsRequest - Represent ListIngressGatewayCredentials Request object.
type ListIngressGatewayCredentialsRequest struct {
	// The name of the service. If not provided, the request will by pass the generation of service configuration token.
	ServiceName *ServiceName
}

// ManagedProxyRequest - Represent ManageProxy Request object.
type ManagedProxyRequest struct {
	// REQUIRED; The name of the service.
	Service *string

	// The target host name.
	Hostname *string

	// The name of the service. It is an optional property, if not provided, service configuration tokens issue code would be
	// by passed.
	ServiceName *ServiceName
}

// ManagedProxyResource - Managed Proxy
type ManagedProxyResource struct {
	// REQUIRED; The expiration time of short lived proxy name in unix epoch.
	ExpiresOn *int64

	// REQUIRED; The short lived proxy name.
	Proxy *string
}

// 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 and 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
}

// OperationStatusResult - The current status of an async operation.
type OperationStatusResult struct {
	// REQUIRED; Operation status.
	Status *string

	// The end time of the operation.
	EndTime *time.Time

	// If present, details of the operation error.
	Error *ErrorDetail

	// Fully qualified ID for the async operation.
	ID *string

	// Name of the async operation.
	Name *string

	// The operations list.
	Operations []*OperationStatusResult

	// Percent of the operation that is complete.
	PercentComplete *float64

	// The start time of the operation.
	StartTime *time.Time

	// READ-ONLY; Fully qualified ID of the resource against which the original async operation was started.
	ResourceID *string
}

type PostResponse struct {
}

// PublicCloudConnector - Public Cloud Connector
type PublicCloudConnector struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

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

	// READ-ONLY; Represent public cloud connectors resource.
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

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

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

// PublicCloudConnectorProperties - Properties of public cloud connectors.
type PublicCloudConnectorProperties struct {
	// REQUIRED; Cloud profile for AWS.
	AwsCloudProfile *AwsCloudProfile

	// REQUIRED; Host cloud the public cloud connector.
	HostType *HostType

	// READ-ONLY; Connector primary identifier.
	ConnectorPrimaryIdentifier *string

	// READ-ONLY; The resource provisioning state.
	ProvisioningState *ResourceProvisioningState
}

// RelayNamespaceAccessProperties - Azure relay hybrid connection access properties
type RelayNamespaceAccessProperties struct {
	// REQUIRED; Azure Relay hybrid connection name for the resource.
	HybridConnectionName *string

	// REQUIRED; The namespace name.
	NamespaceName *string

	// REQUIRED; The suffix domain name of relay namespace.
	NamespaceNameSuffix *string

	// The expiration of access key in unix time.
	ExpiresOn *int64

	// The token to access the enabled service.
	ServiceConfigurationToken *string

	// READ-ONLY; Access key for hybrid connection.
	AccessKey *string
}

// ServiceConfigurationList - The paginated list of serviceConfigurations
type ServiceConfigurationList struct {
	// REQUIRED; The list of service configuration
	Value []*ServiceConfigurationResource

	// The link to fetch the next page of connected cluster
	NextLink *string
}

// ServiceConfigurationProperties - Service configuration details
type ServiceConfigurationProperties struct {
	// REQUIRED; Name of the service.
	ServiceName *ServiceName

	// The port on which service is enabled.
	Port *int64

	// The resource Id of the connectivity endpoint (optional).
	ResourceID *string

	// READ-ONLY; The resource provisioning state.
	ProvisioningState *ProvisioningState
}

// ServiceConfigurationPropertiesPatch - Service configuration details
type ServiceConfigurationPropertiesPatch struct {
	// The port on which service is enabled.
	Port *int64
}

// ServiceConfigurationResource - The service configuration details associated with the target resource.
type ServiceConfigurationResource struct {
	// The service configuration properties.
	Properties *ServiceConfigurationProperties

	// READ-ONLY; The service name.
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

// ServiceConfigurationResourcePatch - The service details under service configuration for the target endpoint resource.
type ServiceConfigurationResourcePatch struct {
	// The service configuration properties.
	Properties *ServiceConfigurationPropertiesPatch
}

// SolutionConfiguration - Solution Configuration
type SolutionConfiguration struct {
	// The resource-specific properties for this resource.
	Properties *SolutionConfigurationProperties

	// READ-ONLY; Represent Solution Configuration Resource.
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

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

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

// SolutionConfigurationProperties - Solution configuration resource.
type SolutionConfigurationProperties struct {
	// REQUIRED; The type of the solution
	SolutionType *string

	// Solution settings
	SolutionSettings *SolutionSettings

	// READ-ONLY; The last time resources were inventoried
	LastSyncTime *time.Time

	// READ-ONLY; The resource provisioning state.
	ProvisioningState *ResourceProvisioningState

	// READ-ONLY; The status of solution configurations
	Status *SolutionConfigurationStatus

	// READ-ONLY; The detailed message of status details
	StatusDetails *string
}

// SolutionSettings - Solution settings
type SolutionSettings struct {
	AdditionalProperties map[string]*string
}

// SolutionTypeProperties - Definition of Solution type resource.
type SolutionTypeProperties struct {
	// Short description of solution type.
	Description *string

	// Array of solution settings and its description.
	SolutionSettings []*SolutionTypeSettingsProperties

	// The name of the solution type.
	SolutionType *string

	// The locations this solution is supported in.
	SupportedAzureRegions []*string
}

// SolutionTypeResource - Concrete proxy resource types can be created by aliasing this type using a specific property type.
type SolutionTypeResource struct {
	// The resource-specific properties for this resource.
	Properties *SolutionTypeProperties

	// READ-ONLY; Solution Type resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *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
}

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

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

// SolutionTypeSettings - The properties of Solution Type
type SolutionTypeSettings struct {
	// REQUIRED; The type of the solution
	SolutionType *string

	// Solution settings
	SolutionSettings *SolutionSettings
}

// SolutionTypeSettingsProperties - Represent Solution settings properties description array.
type SolutionTypeSettingsProperties struct {
	// REQUIRED; Array of allowed values for this solution settings property.
	AllowedValues []*string

	// REQUIRED; Default value for this solution settings property.
	DefaultValue *string

	// REQUIRED; Description of solution setting property.
	Description *string

	// REQUIRED; The UI friendly name of the solution setting property.
	DisplayName *string

	// REQUIRED; The name of the solution setting property.
	Name *string

	// REQUIRED; Type of the solution setting property, represented as a string.
	Type *string
}

// 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
}
