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

import "time"

// EdgeAction - Concrete tracked resource types can be created by aliasing this type using a specific property type.
type EdgeAction struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// REQUIRED; The sku type of the edge action
	SKU *SKUType

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

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

// EdgeActionAttachment - Edge action attachment information
type EdgeActionAttachment struct {
	// REQUIRED; The attached resource Id
	AttachedResourceID *string

	// READ-ONLY; The edge action attachment id
	ID *string
}

// EdgeActionExecutionFilter - Concrete tracked resource types can be created by aliasing this type using a specific property
// type.
type EdgeActionExecutionFilter struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

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

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

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

// EdgeActionExecutionFilterProperties - Properties for edge action execution filter
type EdgeActionExecutionFilterProperties struct {
	// REQUIRED; Custom Header Key associated with the execution filter
	ExecutionFilterIdentifierHeaderName *string

	// REQUIRED; Custom Header Value associated with the execution filter
	ExecutionFilterIdentifierHeaderValue *string

	// REQUIRED; The referenced versionId of the edgeaction version
	VersionID *string

	// READ-ONLY; The last update time in UTC for the execution filter
	LastUpdateTime *time.Time

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

// EdgeActionExecutionFilterUpdate - The type used for update operations of the EdgeActionExecutionFilter.
type EdgeActionExecutionFilterUpdate struct {
	// The resource-specific properties for this resource.
	Properties *EdgeActionExecutionFilterUpdateProperties

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

// EdgeActionExecutionFilterUpdateProperties - The updatable properties of the EdgeActionExecutionFilter.
type EdgeActionExecutionFilterUpdateProperties struct {
	// Custom Header Key associated with the execution filter
	ExecutionFilterIdentifierHeaderName *string

	// Custom Header Value associated with the execution filter
	ExecutionFilterIdentifierHeaderValue *string

	// The referenced versionId of the edgeaction version
	VersionID *string
}

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

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

// EdgeActionProperties - Represents an edge action properties
type EdgeActionProperties struct {
	// READ-ONLY; A list of attachments for the edge action
	Attachments []*EdgeActionAttachment

	// READ-ONLY; The provisioning state of the edge action
	ProvisioningState *ProvisioningState
}

// EdgeActionPropertiesUpdate - Represents an edge action properties
type EdgeActionPropertiesUpdate struct {
}

// EdgeActionUpdate - The type used for update operations of the EdgeAction.
type EdgeActionUpdate struct {
	// The resource-specific properties for this resource.
	Properties *EdgeActionPropertiesUpdate

	// The sku type of the edge action
	SKU *SKUTypeUpdate

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

// EdgeActionVersion - Concrete tracked resource types can be created by aliasing this type using a specific property type.
type EdgeActionVersion struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

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

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

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

// EdgeActionVersionProperties - Represents an edge action version
type EdgeActionVersionProperties struct {
	// REQUIRED; The deployment type
	DeploymentType *EdgeActionVersionDeploymentType

	// REQUIRED; The active state
	IsDefaultVersion *EdgeActionIsDefaultVersion

	// READ-ONLY; The last update time in UTC for package update
	LastPackageUpdateTime *time.Time

	// READ-ONLY; The provisioning state
	ProvisioningState *ProvisioningState

	// READ-ONLY; The validation status
	ValidationStatus *EdgeActionVersionValidationStatus
}

// EdgeActionVersionUpdate - The type used for update operations of the EdgeActionVersion.
type EdgeActionVersionUpdate struct {
	// The resource-specific properties for this resource.
	Properties *EdgeActionVersionUpdateProperties

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

// EdgeActionVersionUpdateProperties - The updatable properties of the EdgeActionVersion.
type EdgeActionVersionUpdateProperties struct {
	// The deployment type
	DeploymentType *EdgeActionVersionDeploymentType

	// The active state
	IsDefaultVersion *EdgeActionIsDefaultVersion
}

// SKUType - The SKU type for the edge action
type SKUType struct {
	// REQUIRED; The name of the SKU
	Name *string

	// REQUIRED; The tier of the SKU
	Tier *string
}

// SKUTypeUpdate - The SKU type for update operations
type SKUTypeUpdate struct {
	// The name of the SKU
	Name *string

	// The tier of the SKU
	Tier *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
}

// VersionCode - Version code information for edge action
type VersionCode struct {
	// REQUIRED; The version code deployment content
	Content *string

	// REQUIRED; The version code name
	Name *string
}
