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

import "time"

// BinaryHardeningFeatures - Binary hardening features.
type BinaryHardeningFeatures struct {
	// Flag indicating if the binary was compiled with stack canaries enabled.
	Canary *bool

	// Flag indicating the binary's stack is set to NX (no-execute).
	NoExecute *bool

	// Flag indicating the binary was compiled to be a position independent executable.
	PositionIndependentExecutable *bool

	// Flag indicating the binary has enabled relocation read-only protections.
	RelocationReadOnly *bool

	// Flag indicating if debug symbols have been stripped from the binary.
	Stripped *bool
}

// BinaryHardeningResource - The object representing a firmware analysis binary hardening result resource
type BinaryHardeningResource struct {
	// The resource-specific properties for this resource.
	Properties *BinaryHardeningResult

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

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

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

// BinaryHardeningResult - Binary hardening of a firmware.
type BinaryHardeningResult struct {
	// ID for the binary hardening result.
	BinaryHardeningID *string

	// The architecture of the binary being reported on.
	ExecutableArchitecture *string

	// The executable class to indicate 32 or 64 bit.
	ExecutableClass *ExecutableClass

	// The path to the binary in the firmware.
	FilePath *string

	// The rpath property of the uploaded binary, which is a deprecated method of specifying additional paths to load objects
	// at runtime.
	Rpath *string

	// The runpath property of the uploaded binary, which is a method of specifying additional paths to load objects at runtime.
	Runpath *string

	// The security hardening features of the binary.
	SecurityHardeningFeatures *BinaryHardeningFeatures

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// BinaryHardeningSummaryResource - Properties for a binary hardening analysis summary.
type BinaryHardeningSummaryResource struct {
	// REQUIRED; Describes the type of summary object.
	SummaryType *SummaryType

	// Total number of analyzed files that were found to have a nonexecutable stack
	NotExecutableStackCount *int64

	// Total number of analyzed files that were compiled to be a position independent executable
	PositionIndependentExecutableCount *int64

	// Total number of analyzed files that have enabled relocation read-only protections
	RelocationReadOnlyCount *int64

	// Total number of analyzed files that have stack canaries enabled
	StackCanaryCount *int64

	// Total number of analyzed files that have debug symbols stripped
	StrippedBinaryCount *int64

	// Total number of binaries that were analyzed
	TotalFiles *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type BinaryHardeningSummaryResource.
func (b *BinaryHardeningSummaryResource) GetSummaryResourceProperties() *SummaryResourceProperties {
	return &SummaryResourceProperties{
		ProvisioningState: b.ProvisioningState,
		SummaryType:       b.SummaryType,
	}
}

// CryptoCertificate - Crypto certificate properties
type CryptoCertificate struct {
	// Key algorithm used in the certificate.
	CertificateKeyAlgorithm *string

	// Size of the certificate's key in bits
	CertificateKeySize *int64

	// Name of the certificate.
	CertificateName *string

	// Role of the certificate (Root CA, etc)
	CertificateRole *string

	// List of functions the certificate can fulfill.
	CertificateUsage []*CertificateUsage

	// ID for the certificate result.
	CryptoCertID *string

	// Encoding used for the certificate.
	Encoding *string

	// Expiration date for the certificate.
	ExpirationDate *time.Time

	// Fingerprint of the certificate.
	Fingerprint *string

	// Indicates if the certificate is expired.
	IsExpired *bool

	// Indicates if the certificate is self-signed.
	IsSelfSigned *bool

	// Indicates the certificate's key size is considered too small to be secure for the key algorithm according to NIST guidance.
	IsShortKeySize *bool

	// Indicates the signature algorithm used is insecure according to NIST guidance.
	IsWeakSignature *bool

	// Issue date for the certificate.
	IssuedDate *time.Time

	// Issuer information of the certificate.
	Issuer *CryptoCertificateEntity

	// A matching paired private key.
	PairedKey *PairedKey

	// Serial number of the certificate.
	SerialNumber *string

	// The signature algorithm used in the certificate.
	SignatureAlgorithm *string

	// Subject information of the certificate.
	Subject *CryptoCertificateEntity

	// READ-ONLY; List of files where this certificate was found.
	FilePaths []*string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// CryptoCertificateEntity - Information on an entity (distinguished name) in a cryptographic certificate.
type CryptoCertificateEntity struct {
	// Common name of the certificate entity.
	CommonName *string

	// Country code of the certificate entity.
	Country *string

	// Organization of the certificate entity.
	Organization *string

	// The organizational unit of the certificate entity.
	OrganizationalUnit *string

	// Geographical state or province of the certificate entity.
	State *string
}

// CryptoCertificateResource - The object representing a firmware analysis crypto certificate resource
type CryptoCertificateResource struct {
	// The resource-specific properties for this resource.
	Properties *CryptoCertificate

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

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

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

// CryptoCertificateSummaryResource - Properties for cryptographic certificate summary.
type CryptoCertificateSummaryResource struct {
	// REQUIRED; Describes the type of summary.
	SummaryType *SummaryType

	// Total number of expired certificates found.
	ExpiredCertificateCount *int64

	// Total number of nearly expired certificates found.
	ExpiringSoonCertificateCount *int64

	// Total number of paired private keys found for the certificates.
	PairedKeyCount *int64

	// Total number of certificates found that are self-signed.
	SelfSignedCertificateCount *int64

	// Total number of certificates found that have an insecure key size for the key algorithm.
	ShortKeySizeCount *int64

	// Total number of certificates found.
	TotalCertificateCount *int64

	// Total number of certificates found using a weak signature algorithm.
	WeakSignatureCount *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type CryptoCertificateSummaryResource.
func (c *CryptoCertificateSummaryResource) GetSummaryResourceProperties() *SummaryResourceProperties {
	return &SummaryResourceProperties{
		ProvisioningState: c.ProvisioningState,
		SummaryType:       c.SummaryType,
	}
}

// CryptoKey - Crypto key properties
type CryptoKey struct {
	// ID for the key result.
	CryptoKeyID *string

	// Size of the key in bits.
	CryptoKeySize *int64

	// Indicates the key size is considered too small to be secure for the algorithm according to NIST guidance.
	IsShortKeySize *bool

	// Key algorithm name.
	KeyAlgorithm *string

	// Type of the key (public or private).
	KeyType *CryptoKeyType

	// A matching paired key or certificate.
	PairedKey *PairedKey

	// Functions the key can fulfill.
	Usage []*string

	// READ-ONLY; List of files where this key was found.
	FilePaths []*string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// CryptoKeyResource - The object representing a firmware analysis crypto key resource
type CryptoKeyResource struct {
	// The resource-specific properties for this resource.
	Properties *CryptoKey

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

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

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

// CryptoKeySummaryResource - Properties for cryptographic key summary.
type CryptoKeySummaryResource struct {
	// REQUIRED; Describes the type of summary.
	SummaryType *SummaryType

	// Total number of keys found that have a matching paired key or certificate.
	PairedKeyCount *int64

	// Total number of private keys found.
	PrivateKeyCount *int64

	// Total number of (non-certificate) public keys found.
	PublicKeyCount *int64

	// Total number of keys found that have an insecure key size for the algorithm.
	ShortKeySizeCount *int64

	// Total number of cryptographic keys found.
	TotalKeyCount *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type CryptoKeySummaryResource.
func (c *CryptoKeySummaryResource) GetSummaryResourceProperties() *SummaryResourceProperties {
	return &SummaryResourceProperties{
		ProvisioningState: c.ProvisioningState,
		SummaryType:       c.SummaryType,
	}
}

// CveComponent - Legacy component of a CVE result.
type CveComponent struct {
	// ID of the SBOM component.
	ComponentID *string

	// Name of the SBOM component.
	Name *string

	// Version of the SBOM component.
	Version *string
}

// CveLink - Properties of a reference link for a CVE.
type CveLink struct {
	// The destination of the reference link.
	Href *string

	// The label of the reference link.
	Label *string
}

// CveResource - The object representing a firmware analysis CVE result resource
type CveResource struct {
	// The resource-specific properties for this resource.
	Properties *CveResult

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

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

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

// CveResult - Details of a CVE detected in firmware.
type CveResult struct {
	// Legacy property for what is now componentName
	Component *CveComponent

	// ID of the affected SBOM component.
	ComponentID *string

	// Name of the affected SBOM component.
	ComponentName *string

	// Version of the affected SBOM component.
	ComponentVersion *string

	// ID of the CVE result.
	CveID *string

	// Name of the CVE.
	CveName *string

	// Legacy property for the effective CVE score.
	CvssScore *string

	// All known CVSS scores for the CVE.
	CvssScores []*CvssScore

	// Legacy property for the CVE CVSS version 2 score, if one existed.
	CvssV2Score *string

	// Legacy property for the CVE CVSS version 3 score, if one existed.
	CvssV3Score *string

	// Legacy property for the what CVSS version score was stored in the cvssScore property
	CvssVersion *string

	// The CVE description.
	Description *string

	// The most recent CVSS score of the CVE.
	EffectiveCvssScore *float32

	// The version of the effectiveCvssScore property.
	EffectiveCvssVersion *int32

	// Severity of the CVE.
	Severity *string

	// READ-ONLY; The list of reference links for the CVE.
	Links []*CveLink

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// CveSummary - Properties for a CVE analysis summary.
type CveSummary struct {
	// REQUIRED; Describes the type of summary object.
	SummaryType *SummaryType

	// The total number of critical severity CVEs detected
	CriticalCveCount *int64

	// The total number of high severity CVEs detected
	HighCveCount *int64

	// The total number of low severity CVEs detected
	LowCveCount *int64

	// The total number of medium severity CVEs detected
	MediumCveCount *int64

	// The total number of unknown severity CVEs detected
	UnknownCveCount *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type CveSummary.
func (c *CveSummary) GetSummaryResourceProperties() *SummaryResourceProperties {
	return &SummaryResourceProperties{
		ProvisioningState: c.ProvisioningState,
		SummaryType:       c.SummaryType,
	}
}

// CvssScore - Common Vulnerability Scoring System values.
type CvssScore struct {
	// REQUIRED; The version of the Common Vulnerability Scoring System (CVSS).
	Version *int32

	// The score of the CVE according to the CVSS specified.
	Score *float32
}

// Firmware definition
type Firmware struct {
	// The resource-specific properties for this resource.
	Properties *FirmwareProperties

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

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

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

// FirmwareProperties - Firmware properties.
type FirmwareProperties struct {
	// User-specified description of the firmware.
	Description *string

	// File name for a firmware that user uploaded.
	FileName *string

	// File size of the uploaded firmware image.
	FileSize *int64

	// Firmware model.
	Model *string

	// The status of firmware scan.
	Status *Status

	// A list of errors or other messages generated during firmware analysis
	StatusMessages []*StatusMessage

	// Firmware vendor.
	Vendor *string

	// Firmware version.
	Version *string

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

// FirmwareSummary - Properties for high level summary of firmware analysis results.
type FirmwareSummary struct {
	// REQUIRED; Describes the type of summary.
	SummaryType *SummaryType

	// Time used for analysis
	AnalysisTimeSeconds *int64

	// Binary count
	BinaryCount *int64

	// Components count.
	ComponentCount *int64

	// Extracted file count.
	ExtractedFileCount *int64

	// Total extracted size of the firmware in bytes.
	ExtractedSize *int64

	// Firmware file size in bytes.
	FileSize *int64

	// The number of root file systems found.
	RootFileSystems *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type FirmwareSummary.
func (f *FirmwareSummary) GetSummaryResourceProperties() *SummaryResourceProperties {
	return &SummaryResourceProperties{
		ProvisioningState: f.ProvisioningState,
		SummaryType:       f.SummaryType,
	}
}

// FirmwareUpdateDefinition - Firmware definition
type FirmwareUpdateDefinition struct {
	// The editable properties of a firmware
	Properties *FirmwareProperties
}

// GenerateUploadURLRequest - Properties for generating an upload URL
type GenerateUploadURLRequest struct {
	// A unique ID for the firmware to be uploaded.
	FirmwareID *string
}

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

// PairedKey - Details of a matching paired key or certificate.
type PairedKey struct {
	// ID of the paired key or certificate.
	PairedKeyID *string

	// The type indicating whether the paired object is a key or certificate.
	Type *string
}

// PasswordHash - Password hash properties
type PasswordHash struct {
	// Algorithm of the password hash
	Algorithm *string

	// Context of password hash
	Context *string

	// File path of the password hash
	FilePath *string

	// Hash of the password
	Hash *string

	// ID for password hash
	PasswordHashID *string

	// Salt of the password hash
	Salt *string

	// User name of password hash
	Username *string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// PasswordHashResource - The object representing a firmware analysis password hash result resource
type PasswordHashResource struct {
	// The resource-specific properties for this resource.
	Properties *PasswordHash

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

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

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

// SKU - The resource model definition representing SKU
type SKU struct {
	// REQUIRED; The name of the SKU. Ex - P3. It is typically a letter+number code
	Name *string

	// If the SKU supports scale out/in then the capacity integer should be included. If scale out/in is not possible for the
	// resource this may be omitted.
	Capacity *int32

	// If the service has different generations of hardware, for the same SKU, then that can be captured here.
	Family *string

	// The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code.
	Size *string

	// This field is required to be implemented by the Resource Provider if the service has more than one tier, but is not required
	// on a PUT.
	Tier *SKUTier
}

// SbomComponent - SBOM component of a firmware.
type SbomComponent struct {
	// ID for the component.
	ComponentID *string

	// Name for the component.
	ComponentName *string

	// File paths related to the component. Note, relatedFiles should be used instead of this property.
	FilePaths []*string

	// License for the component.
	License *string

	// Version for the component.
	Version *string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// SbomComponentResource - The object representing a firmware analysis SBOM component result resource
type SbomComponentResource struct {
	// The resource-specific properties for this resource.
	Properties *SbomComponent

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

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

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

// StatusMessage - Error and status message
type StatusMessage struct {
	// The error code
	ErrorCode *int64

	// The error or status message
	Message *string
}

// SummaryResource - The object representing a firmware analysis summary resource.
type SummaryResource struct {
	// The resource-specific properties for this resource.
	Properties SummaryResourcePropertiesClassification

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

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

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

// SummaryResourceProperties - Properties of an analysis summary.
type SummaryResourceProperties struct {
	// REQUIRED; The type of summary.
	SummaryType *SummaryType

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// GetSummaryResourceProperties implements the SummaryResourcePropertiesClassification interface for type SummaryResourceProperties.
func (s *SummaryResourceProperties) GetSummaryResourceProperties() *SummaryResourceProperties {
	return s
}

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

// URLToken - Url data for creating or accessing a blob file.
type URLToken struct {
	// READ-ONLY; SAS URL for creating or accessing a blob file.
	URL *string
}

// UsageMetric - The object representing how many firmwares the user has uploaded to the workspace.
type UsageMetric struct {
	// The resource-specific properties for this resource.
	Properties *UsageMetricProperties

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

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

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

// UsageMetricProperties - Properties of a workspaces usage metrics.
type UsageMetricProperties struct {
	// READ-ONLY; The number of firmware analysis jobs that have been submitted in the current month.
	MonthlyFirmwareUploadCount *int64

	// READ-ONLY; The total number of firmwares that are in the workspace.
	TotalFirmwareCount *int64

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// Workspace - Firmware analysis workspace.
type Workspace struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

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

	// The SKU (Stock Keeping Unit) assigned to this resource.
	SKU *SKU

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

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

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

// WorkspaceProperties - Workspace properties.
type WorkspaceProperties struct {
	// READ-ONLY; Provisioning state of the resource.
	ProvisioningState *ProvisioningState
}

// WorkspaceUpdate - The type used for update operations of the Workspace.
type WorkspaceUpdate struct {
	// The SKU (Stock Keeping Unit) assigned to this resource.
	SKU *SKU

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