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

import "time"

// DateTimeFilter - UTC DateTime filter for dependency map visualization apis
type DateTimeFilter struct {
	// End date time for dependency map visualization query
	EndDateTimeUTC *time.Time

	// Start date time for dependency map visualization query
	StartDateTimeUTC *time.Time
}

// DiscoverySourceResource - A Discovery Source resource
type DiscoverySourceResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties DiscoverySourceResourcePropertiesClassification

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

	// READ-ONLY; discovery source 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
}

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

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

// DiscoverySourceResourceProperties - The properties of Discovery Source resource
type DiscoverySourceResourceProperties struct {
	// REQUIRED; Source ArmId of Discovery Source resource
	SourceID *string

	// REQUIRED; Source type of Discovery Source resource.
	SourceType *SourceType

	// READ-ONLY; Provisioning state of Discovery Source resource.
	ProvisioningState *ProvisioningState
}

// GetDiscoverySourceResourceProperties implements the DiscoverySourceResourcePropertiesClassification interface for type
// DiscoverySourceResourceProperties.
func (d *DiscoverySourceResourceProperties) GetDiscoverySourceResourceProperties() *DiscoverySourceResourceProperties {
	return d
}

// DiscoverySourceResourceTagsUpdate - The type used for updating tags in DiscoverySourceResource resources.
type DiscoverySourceResourceTagsUpdate struct {
	// Resource tags.
	Tags map[string]*string
}

// ExportDependenciesRequest - ExportDependencies request model
type ExportDependenciesRequest struct {
	// REQUIRED; Machine arm id
	FocusedMachineID *string

	// Filters for ExportDependencies
	Filters *VisualizationFilter
}

// GetConnectionsForProcessOnFocusedMachineRequest - GetConnectionsForProcessOnFocusedMachine request model
type GetConnectionsForProcessOnFocusedMachineRequest struct {
	// REQUIRED; Machine arm id
	FocusedMachineID *string

	// REQUIRED; Process id
	ProcessIDOnFocusedMachine *string

	// Filters for GetProcessNetworkConnections
	Filters *VisualizationFilter
}

// GetConnectionsWithConnectedMachineForFocusedMachineRequest - GetConnectionsWithConnectedMachineForFocusedMachine request
// model
type GetConnectionsWithConnectedMachineForFocusedMachineRequest struct {
	// REQUIRED; Destination machine arm id
	ConnectedMachineID *string

	// REQUIRED; Source machine arm id
	FocusedMachineID *string

	// Filters for GetNetworkConnectionsBetweenMachines
	Filters *VisualizationFilter
}

// GetDependencyViewForFocusedMachineRequest - GetDependencyViewForFocusedMachine request model
type GetDependencyViewForFocusedMachineRequest struct {
	// REQUIRED; Machine arm id
	FocusedMachineID *string

	// Filters for GetSingleMachineDependencyView
	Filters *VisualizationFilter
}

// MapsResource - A Maps resource
type MapsResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

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

	// READ-ONLY; Maps resource 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
}

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

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

// MapsResourceProperties - The properties of Maps resource
type MapsResourceProperties struct {
	// READ-ONLY; Provisioning state of Maps resource.
	ProvisioningState *ProvisioningState
}

// MapsResourceTagsUpdate - The type used for updating tags in MapsResource resources.
type MapsResourceTagsUpdate struct {
	// Resource tags.
	Tags map[string]*string
}

// OffAzureDiscoverySourceResourceProperties - OffAzure discovery source resource properties
type OffAzureDiscoverySourceResourceProperties struct {
	// REQUIRED; Source ArmId of Discovery Source resource
	SourceID *string

	// CONSTANT; OffAzure discovery source type
	// Field has constant value SourceTypeOffAzure, any specified value is ignored.
	SourceType *SourceType

	// READ-ONLY; Provisioning state of Discovery Source resource.
	ProvisioningState *ProvisioningState
}

// GetDiscoverySourceResourceProperties implements the DiscoverySourceResourcePropertiesClassification interface for type
// OffAzureDiscoverySourceResourceProperties.
func (o *OffAzureDiscoverySourceResourceProperties) GetDiscoverySourceResourceProperties() *DiscoverySourceResourceProperties {
	return &DiscoverySourceResourceProperties{
		ProvisioningState: o.ProvisioningState,
		SourceID:          o.SourceID,
		SourceType:        o.SourceType,
	}
}

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

// ProcessNameFilter - Process name filter for dependency map visualization apis
type ProcessNameFilter struct {
	// REQUIRED; Operator for process name filter
	Operator *ProcessNameFilterOperator

	// REQUIRED; List of process names on which the operator should be applied
	ProcessNames []*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
}

// VisualizationFilter - Filters for dependency map visualization apis
type VisualizationFilter struct {
	// DateTime filter
	DateTime *DateTimeFilter

	// Process name filter
	ProcessNameFilter *ProcessNameFilter
}
