// 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) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package armfluxconfigurations

import "time"

// AzureBlobDefinition - Parameters to reconcile to the AzureBlob source kind type.
type AzureBlobDefinition struct {
	// The account key (shared key) to access the storage account
	AccountKey *string

	// The Azure Blob container name to sync from the url endpoint for the flux configuration.
	ContainerName *string

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// Parameters to authenticate using a Managed Identity.
	ManagedIdentity *ManagedIdentityDefinition

	// The Shared Access token to access the storage container
	SasToken *string

	// Parameters to authenticate using Service Principal.
	ServicePrincipal *ServicePrincipalDefinition

	// The interval at which to re-reconcile the cluster Azure Blob source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration Azure Blob storage account.
	URL *string
}

// AzureBlobPatchDefinition - Parameters to reconcile to the AzureBlob source kind type.
type AzureBlobPatchDefinition struct {
	// The account key (shared key) to access the storage account
	AccountKey *string

	// The Azure Blob container name to sync from the url endpoint for the flux configuration.
	ContainerName *string

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// Parameters to authenticate using a Managed Identity.
	ManagedIdentity *ManagedIdentityPatchDefinition

	// The Shared Access token to access the storage container
	SasToken *string

	// Parameters to authenticate using Service Principal.
	ServicePrincipal *ServicePrincipalPatchDefinition

	// The interval at which to re-reconcile the cluster Azure Blob source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration Azure Blob storage account.
	URL *string
}

// BucketDefinition - Parameters to reconcile to the Bucket source kind type.
type BucketDefinition struct {
	// Plaintext access key used to securely access the S3 bucket
	AccessKey *string

	// The bucket name to sync from the url endpoint for the flux configuration.
	BucketName *string

	// Specify whether to use insecure communication when puling data from the S3 bucket.
	Insecure *bool

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// The interval at which to re-reconcile the cluster bucket source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster bucket source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration S3 bucket.
	URL *string
}

// BucketPatchDefinition - Parameters to reconcile to the Bucket source kind type.
type BucketPatchDefinition struct {
	// Plaintext access key used to securely access the S3 bucket
	AccessKey *string

	// The bucket name to sync from the url endpoint for the flux configuration.
	BucketName *string

	// Specify whether to use insecure communication when puling data from the S3 bucket.
	Insecure *bool

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// The interval at which to re-reconcile the cluster bucket source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster bucket source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration S3 bucket.
	URL *string
}

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

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

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

// FluxConfiguration - The Flux Configuration object returned in Get & Put response.
type FluxConfiguration struct {
	// Properties to create a Flux Configuration resource
	Properties *FluxConfigurationProperties

	// 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; Top level metadata https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/common-api-contracts.md#system-metadata-for-all-azure-resources
	SystemData *SystemData

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

// FluxConfigurationPatch - The Flux Configuration Patch Request object.
type FluxConfigurationPatch struct {
	// Updatable properties of an Flux Configuration Patch Request
	Properties *FluxConfigurationPatchProperties
}

// FluxConfigurationPatchProperties - Updatable properties of an Flux Configuration Patch Request
type FluxConfigurationPatchProperties struct {
	// Parameters to reconcile to the AzureBlob source kind type.
	AzureBlob *AzureBlobPatchDefinition

	// Parameters to reconcile to the Bucket source kind type.
	Bucket *BucketPatchDefinition

	// Key-value pairs of protected configuration settings for the configuration
	ConfigurationProtectedSettings map[string]*string

	// Parameters to reconcile to the GitRepository source kind type.
	GitRepository *GitRepositoryPatchDefinition

	// Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.
	Kustomizations map[string]*KustomizationPatchDefinition

	// Parameters to reconcile to the OCIRepository source kind type.
	OciRepository *OCIRepositoryPatchDefinition

	// Source Kind to pull the configuration data from.
	SourceKind *SourceKindType

	// Whether this configuration should suspend its reconciliation of its kustomizations and sources.
	Suspend *bool
}

// FluxConfigurationProperties - Properties to create a Flux Configuration resource
type FluxConfigurationProperties struct {
	// Parameters to reconcile to the AzureBlob source kind type.
	AzureBlob *AzureBlobDefinition

	// Parameters to reconcile to the Bucket source kind type.
	Bucket *BucketDefinition

	// Key-value pairs of protected configuration settings for the configuration
	ConfigurationProtectedSettings map[string]*string

	// Parameters to reconcile to the GitRepository source kind type.
	GitRepository *GitRepositoryDefinition

	// Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.
	Kustomizations map[string]*KustomizationDefinition

	// The namespace to which this configuration is installed to. Maximum of 253 lower case alphanumeric characters, hyphen and
	// period only.
	Namespace *string

	// Parameters to reconcile to the OCIRepository source kind type.
	OciRepository *OCIRepositoryDefinition

	// Maximum duration to wait for flux configuration reconciliation. E.g PT1H, PT5M, P1D
	ReconciliationWaitDuration *string

	// Scope at which the operator will be installed.
	Scope *ScopeType

	// Source Kind to pull the configuration data from.
	SourceKind *SourceKindType

	// Whether this configuration should suspend its reconciliation of its kustomizations and sources.
	Suspend *bool

	// Whether flux configuration deployment should wait for cluster to reconcile the kustomizations.
	WaitForReconciliation *bool

	// READ-ONLY; Combined status of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed
	// objects.
	ComplianceState *FluxComplianceState

	// READ-ONLY; Error message returned to the user in the case of provisioning failure.
	ErrorMessage *string

	// READ-ONLY; Status of the creation of the fluxConfiguration.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Public Key associated with this fluxConfiguration (either generated within the cluster or provided by the user).
	RepositoryPublicKey *string

	// READ-ONLY; Branch and/or SHA of the source commit synced with the cluster.
	SourceSyncedCommitID *string

	// READ-ONLY; Datetime the fluxConfiguration synced its source on the cluster.
	SourceUpdatedAt *time.Time

	// READ-ONLY; Datetime the fluxConfiguration synced its status on the cluster with Azure.
	StatusUpdatedAt *time.Time

	// READ-ONLY; Statuses of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects
	// provisioned by the fluxConfiguration.
	Statuses []*ObjectStatusDefinition
}

// GitRepositoryDefinition - Parameters to reconcile to the GitRepository source kind type.
type GitRepositoryDefinition struct {
	// Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS
	HTTPSCACert *string

	// Plaintext HTTPS username used to access private git repositories over HTTPS
	HTTPSUser *string

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// Name of the provider used for authentication.
	Provider *ProviderType

	// The source reference for the GitRepository object.
	RepositoryRef *RepositoryRefDefinition

	// Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH
	SSHKnownHosts *string

	// The interval at which to re-reconcile the cluster git repository source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster git repository source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration git repository.
	URL *string
}

// GitRepositoryPatchDefinition - Parameters to reconcile to the GitRepository source kind type.
type GitRepositoryPatchDefinition struct {
	// Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS
	HTTPSCACert *string

	// Plaintext HTTPS username used to access private git repositories over HTTPS
	HTTPSUser *string

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// Name of the provider used for authentication.
	Provider *ProviderType

	// The source reference for the GitRepository object.
	RepositoryRef *RepositoryRefDefinition

	// Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH
	SSHKnownHosts *string

	// The interval at which to re-reconcile the cluster git repository source with the remote.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the cluster git repository source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration git repository.
	URL *string
}

// HelmReleasePropertiesDefinition - Properties for HelmRelease objects
type HelmReleasePropertiesDefinition struct {
	// Total number of times that the HelmRelease failed to install or upgrade
	FailureCount *int64

	// The reference to the HelmChart object used as the source to this HelmRelease
	HelmChartRef *ObjectReferenceDefinition

	// Number of times that the HelmRelease failed to install
	InstallFailureCount *int64

	// The revision number of the last released object change
	LastRevisionApplied *int64

	// Number of times that the HelmRelease failed to upgrade
	UpgradeFailureCount *int64
}

// KustomizationDefinition - The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.
type KustomizationDefinition struct {
	// Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies
	// have completed their reconciliation.
	DependsOn []*string

	// Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.
	Force *bool

	// The path in the source reference to reconcile on the cluster.
	Path *string

	// Used for variable substitution for this Kustomization after kustomize build.
	PostBuild *PostBuildDefinition

	// Enable/disable garbage collections of Kubernetes objects created by this Kustomization.
	Prune *bool

	// The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.
	RetryIntervalInSeconds *int64

	// The interval at which to re-reconcile the Kustomization on the cluster.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the Kustomization on the cluster.
	TimeoutInSeconds *int64

	// Enable/disable health check for all Kubernetes objects created by this Kustomization.
	Wait *bool

	// READ-ONLY; Name of the Kustomization, matching the key in the Kustomizations object map.
	Name *string
}

// KustomizationPatchDefinition - The Kustomization defining how to reconcile the artifact pulled by the source type on the
// cluster.
type KustomizationPatchDefinition struct {
	// Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies
	// have completed their reconciliation.
	DependsOn []*string

	// Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.
	Force *bool

	// The path in the source reference to reconcile on the cluster.
	Path *string

	// Used for variable substitution for this Kustomization after kustomize build.
	PostBuild *PostBuildPatchDefinition

	// Enable/disable garbage collections of Kubernetes objects created by this Kustomization.
	Prune *bool

	// The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.
	RetryIntervalInSeconds *int64

	// The interval at which to re-reconcile the Kustomization on the cluster.
	SyncIntervalInSeconds *int64

	// The maximum time to attempt to reconcile the Kustomization on the cluster.
	TimeoutInSeconds *int64

	// Enable/disable health check for all Kubernetes objects created by this Kustomization.
	Wait *bool
}

// LayerSelectorDefinition - Parameters to specify which layer to pull from the OCI artifact. By default, the first layer
// in the artifact is pulled.
type LayerSelectorDefinition struct {
	// The first layer matching the specified media type will be used.
	MediaType *string

	// The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.
	Operation *OperationType
}

// LayerSelectorPatchDefinition - Parameters to specify which layer to pull from the OCI artifact. By default, the first layer
// in the artifact is pulled.
type LayerSelectorPatchDefinition struct {
	// The first layer matching the specified media type will be used.
	MediaType *string

	// The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.
	Operation *OperationType
}

// List - Result of the request to list Flux Configurations. It contains a list of FluxConfiguration objects and a URL link
// to get the next set of results.
type List struct {
	// READ-ONLY; URL to get the next set of configuration objects, if any.
	NextLink *string

	// READ-ONLY; List of Flux Configurations within a Kubernetes cluster.
	Value []*FluxConfiguration
}

// ManagedIdentityDefinition - Parameters to authenticate using a Managed Identity.
type ManagedIdentityDefinition struct {
	// The client Id for authenticating a Managed Identity.
	ClientID *string
}

// ManagedIdentityPatchDefinition - Parameters to authenticate using a Managed Identity.
type ManagedIdentityPatchDefinition struct {
	// The client Id for authenticating a Managed Identity.
	ClientID *string
}

// MatchOidcIdentityDefinition - MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.
type MatchOidcIdentityDefinition struct {
	// The regex pattern to match against to verify the OIDC issuer.
	Issuer *string

	// The regex pattern to match against to verify the identity subject.
	Subject *string
}

// MatchOidcIdentityPatchDefinition - MatchOIDCIdentity defines the criteria for matching the identity while verifying an
// OCI artifact.
type MatchOidcIdentityPatchDefinition struct {
	// The regex pattern to match against to verify the OIDC issuer.
	Issuer *string

	// The regex pattern to match against to verify the identity subject.
	Subject *string
}

// OCIRepositoryDefinition - Parameters to reconcile to the OCIRepository source kind type.
type OCIRepositoryDefinition struct {
	// Specify whether to allow connecting to a non-TLS HTTP container registry.
	Insecure *bool

	// The layer to be pulled from the OCI artifact.
	LayerSelector *LayerSelectorDefinition

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// The source reference for the OCIRepository object.
	RepositoryRef *OCIRepositoryRefDefinition

	// The service account name to authenticate with the OCI repository.
	ServiceAccountName *string

	// The interval at which to re-reconcile the cluster OCI repository source with the remote.
	SyncIntervalInSeconds *int64

	// Parameters to authenticate using TLS config for OCI repository.
	TLSConfig *TLSConfigDefinition

	// The maximum time to attempt to reconcile the cluster OCI repository source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration OCI repository.
	URL *string

	// Specifies whether to use Workload Identity to authenticate with the OCI repository.
	UseWorkloadIdentity *bool

	// Verification of the authenticity of an OCI Artifact.
	Verify *VerifyDefinition
}

// OCIRepositoryPatchDefinition - Parameters to reconcile to the OCIRepository source kind type.
type OCIRepositoryPatchDefinition struct {
	// Specify whether to allow connecting to a non-TLS HTTP container registry.
	Insecure *bool

	// The layer to be pulled from the OCI artifact.
	LayerSelector *LayerSelectorPatchDefinition

	// Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided
	// configuration secrets.
	LocalAuthRef *string

	// The source reference for the OCIRepository object.
	RepositoryRef *OCIRepositoryRefPatchDefinition

	// The service account name to authenticate with the OCI repository.
	ServiceAccountName *string

	// The interval at which to re-reconcile the cluster OCI repository source with the remote.
	SyncIntervalInSeconds *int64

	// Parameters to authenticate using TLS config for OCI repository.
	TLSConfig *TLSConfigPatchDefinition

	// The maximum time to attempt to reconcile the cluster OCI repository source with the remote.
	TimeoutInSeconds *int64

	// The URL to sync for the flux configuration OCI repository.
	URL *string

	// Specifies whether to use Workload Identity to authenticate with the OCI repository.
	UseWorkloadIdentity *bool

	// Verification of the authenticity of an OCI Artifact.
	Verify *VerifyPatchDefinition
}

// OCIRepositoryRefDefinition - The source reference for the OCIRepository object.
type OCIRepositoryRefDefinition struct {
	// The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.
	Digest *string

	// The semver range used to match against OCI repository tags. This takes precedence over tag.
	Semver *string

	// The OCI repository image tag name to pull. This defaults to 'latest'.
	Tag *string
}

// OCIRepositoryRefPatchDefinition - The source reference for the OCIRepository object.
type OCIRepositoryRefPatchDefinition struct {
	// The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.
	Digest *string

	// The semver range used to match against OCI repository tags. This takes precedence over tag.
	Semver *string

	// The OCI repository image tag name to pull. This defaults to 'latest'.
	Tag *string
}

// ObjectReferenceDefinition - Object reference to a Kubernetes object on a cluster
type ObjectReferenceDefinition struct {
	// Name of the object
	Name *string

	// Namespace of the object
	Namespace *string
}

// ObjectStatusConditionDefinition - Status condition of Kubernetes object
type ObjectStatusConditionDefinition struct {
	// Last time this status condition has changed
	LastTransitionTime *time.Time

	// A more verbose description of the object status condition
	Message *string

	// Reason for the specified status condition type status
	Reason *string

	// Status of the Kubernetes object condition type
	Status *string

	// Object status condition type for this object
	Type *string
}

// ObjectStatusDefinition - Statuses of objects deployed by the user-specified kustomizations from the git repository.
type ObjectStatusDefinition struct {
	// Object reference to the Kustomization that applied this object
	AppliedBy *ObjectReferenceDefinition

	// Compliance state of the applied object showing whether the applied object has come into a ready state on the cluster.
	ComplianceState *FluxComplianceState

	// Additional properties that are provided from objects of the HelmRelease kind
	HelmReleaseProperties *HelmReleasePropertiesDefinition

	// Kind of the applied object
	Kind *string

	// Name of the applied object
	Name *string

	// Namespace of the applied object
	Namespace *string

	// List of Kubernetes object status conditions present on the cluster
	StatusConditions []*ObjectStatusConditionDefinition
}

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

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

	// Name of the async operation.
	Name *string

	// Additional information, if available.
	Properties map[string]*string

	// READ-ONLY; If present, details of the operation error.
	Error *ErrorDetail
}

// PostBuildDefinition - The postBuild definitions defining variable substitutions for this Kustomization after kustomize
// build.
type PostBuildDefinition struct {
	// Key/value pairs holding the variables to be substituted in this Kustomization.
	Substitute map[string]*string

	// Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
	SubstituteFrom []*SubstituteFromDefinition
}

// PostBuildPatchDefinition - The postBuild definitions defining variable substitutions for this Kustomization after kustomize
// build.
type PostBuildPatchDefinition struct {
	// Key/value pairs holding the variables to be substituted in this Kustomization.
	Substitute map[string]*string

	// Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
	SubstituteFrom []*SubstituteFromPatchDefinition
}

// RepositoryRefDefinition - The source reference for the GitRepository object.
type RepositoryRefDefinition struct {
	// The git repository branch name to checkout.
	Branch *string

	// The commit SHA to checkout. This value must be combined with the branch name to be valid. This takes precedence over semver.
	Commit *string

	// The semver range used to match against git repository tags. This takes precedence over tag.
	Semver *string

	// The git repository tag name to checkout. This takes precedence over branch.
	Tag *string
}

// ServicePrincipalDefinition - Parameters to authenticate using Service Principal.
type ServicePrincipalDefinition struct {
	// Base64-encoded certificate used to authenticate a Service Principal
	ClientCertificate *string

	// The password for the certificate used to authenticate a Service Principal
	ClientCertificatePassword *string

	// Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication
	// for the Client Certificate
	ClientCertificateSendChain *bool

	// The client Id for authenticating a Service Principal.
	ClientID *string

	// The client secret for authenticating a Service Principal
	ClientSecret *string

	// The tenant Id for authenticating a Service Principal
	TenantID *string
}

// ServicePrincipalPatchDefinition - Parameters to authenticate using Service Principal.
type ServicePrincipalPatchDefinition struct {
	// Base64-encoded certificate used to authenticate a Service Principal
	ClientCertificate *string

	// The password for the certificate used to authenticate a Service Principal
	ClientCertificatePassword *string

	// Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication
	// for the Client Certificate
	ClientCertificateSendChain *bool

	// The client Id for authenticating a Service Principal.
	ClientID *string

	// The client secret for authenticating a Service Principal
	ClientSecret *string

	// The tenant Id for authenticating a Service Principal
	TenantID *string
}

// SubstituteFromDefinition - Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
type SubstituteFromDefinition struct {
	// Define whether it is ConfigMap or Secret that holds the variables to be used in substitution.
	Kind *string

	// Name of the ConfigMap/Secret that holds the variables to be used in substitution.
	Name *string

	// Set to True to proceed without ConfigMap/Secret, if it is not present.
	Optional *bool
}

// SubstituteFromPatchDefinition - Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.
type SubstituteFromPatchDefinition struct {
	// Define whether it is ConfigMap or Secret that holds the variables to be used in substitution.
	Kind *string

	// Name of the ConfigMap/Secret that holds the variables to be used in substitution.
	Name *string

	// Set to True to proceed without ConfigMap/Secret, if it is not present.
	Optional *bool
}

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

// TLSConfigDefinition - Parameters to authenticate using TLS config for OCI repository.
type TLSConfigDefinition struct {
	// Base64-encoded CA certificate used to verify the server.
	CaCertificate *string

	// Base64-encoded certificate used to authenticate a client with the OCI repository.
	ClientCertificate *string

	// Base64-encoded private key used to authenticate a client with the OCI repository.
	PrivateKey *string
}

// TLSConfigPatchDefinition - Parameters to authenticate using TLS config for OCI repository.
type TLSConfigPatchDefinition struct {
	// Base64-encoded CA certificate used to verify the server.
	CaCertificate *string

	// Base64-encoded certificate used to authenticate a client with the OCI repository.
	ClientCertificate *string

	// Base64-encoded private key used to authenticate a client with the OCI repository.
	PrivateKey *string
}

// VerifyDefinition - Parameters to verify the authenticity of an OCI Artifact.
type VerifyDefinition struct {
	// Array defining the criteria for matching the identity while verifying an OCI artifact.
	MatchOidcIdentity []*MatchOidcIdentityDefinition

	// Verification provider name.
	Provider *string

	// An object containing trusted public keys of trusted authors.
	VerificationConfig map[string]*string
}

// VerifyPatchDefinition - Parameters to verify the authenticity of an OCI Artifact.
type VerifyPatchDefinition struct {
	// Array defining the criteria for matching the OIDC identity while verifying an OCI artifact.
	MatchOidcIdentity []*MatchOidcIdentityPatchDefinition

	// Verification provider name.
	Provider *string

	// An object containing trusted public keys of trusted authors.
	VerificationConfig map[string]*string
}
