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

import "time"

type APIKey struct {
	// REQUIRED; The value of the API key.
	Key *string

	// The time of creation of the API key.
	Created *string

	// The user that created the API key.
	CreatedBy *string

	// The name of the API key.
	Name *string
}

// APIKeyListResponse - Response of a list operation.
type APIKeyListResponse struct {
	// REQUIRED; The DatadogApiKey items on this page
	Value []*APIKey

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

// ActivateSaaSParameterRequest - SaaS resource details for Activate and Validate SaaS Resource
type ActivateSaaSParameterRequest struct {
	// REQUIRED; SaaS resource id of marketplace saas subscription to be activated.
	SaaSGUID *string

	// Datadog organization properties to link the Saas resource to.
	DatadogOrganizationProperties *OrganizationProperties

	// User information of the person activating the SaaS resource.
	UserInfo *UserInfo
}

// AgentRules - Set of rules for managing agents for the Monitor resource.
type AgentRules struct {
	// Flag specifying if agent monitoring should be enabled for the Monitor resource.
	EnableAgentMonitoring *bool

	// List of filtering tags to be used for capturing metrics. If empty, all resources will be captured. If only Exclude action
	// is specified, the rules will apply to the list of all available resources. If Include actions are specified, the rules
	// will only include resources with the associated tags.
	FilteringTags []*FilteringTag
}

// AgreementProperties - Terms properties.
type AgreementProperties struct {
	// If any version of the terms have been accepted, otherwise false.
	Accepted *bool

	// Link to HTML with Microsoft and Publisher terms.
	LicenseTextLink *string

	// Plan identifier string.
	Plan *string

	// Link to the privacy policy of the publisher.
	PrivacyPolicyLink *string

	// Product identifier string.
	Product *string

	// Publisher identifier string.
	Publisher *string

	// Date and time in UTC of when the terms were accepted. This is empty if Accepted is false.
	RetrieveDatetime *time.Time

	// Terms signature.
	Signature *string
}

type AgreementResource struct {
	// Represents the properties of the resource.
	Properties *AgreementProperties

	// READ-ONLY; ARM id of the resource.
	ID *string

	// READ-ONLY; Name of the agreement.
	Name *string

	// READ-ONLY; Metadata pertaining to creation and last modification of the resource.
	SystemData *SystemData

	// READ-ONLY; The type of the resource.
	Type *string
}

// AgreementResourceListResponse - Response of a list operation.
type AgreementResourceListResponse struct {
	// REQUIRED; The DatadogAgreementResource items on this page
	Value []*AgreementResource

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

// ApplicationKey - Represents a Datadog Application key and its associated properties.
type ApplicationKey struct {
	// The name of the Application key.
	Name *string

	// READ-ONLY; The value of the Application key.
	Key *string

	// The user that created the Application key.
	CreatedBy *string
}

// BillingInfoResponse - Marketplace Subscription and Organization details to which resource gets billed into.
type BillingInfoResponse struct {
	// Marketplace Subscription details
	MarketplaceSaasInfo *MarketplaceSaaSInfo

	// Partner Billing Entity details: Organization Info
	PartnerBillingEntity *PartnerBillingEntity
}

// CreateResourceSupportedProperties - Datadog resource can be created or not properties.
type CreateResourceSupportedProperties struct {
	// READ-ONLY; Indicates if selected subscription supports Datadog resource creation, if not it is already being monitored
	// for the selected organization via multi subscription feature.
	CreationSupported *bool

	// READ-ONLY; The ARM id of the subscription.
	Name *string
}

// CreateResourceSupportedResponse - Datadog resource can be created or not.
type CreateResourceSupportedResponse struct {
	// Represents the properties of the resource.
	Properties *CreateResourceSupportedProperties
}

// CreateResourceSupportedResponseList - Paged collection of CreateResourceSupportedResponse items
type CreateResourceSupportedResponseList struct {
	// REQUIRED; The CreateResourceSupportedResponse items on this page
	Value []*CreateResourceSupportedResponse

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

// FilteringTag - The definition of a filtering tag. Filtering tags are used for capturing resources and include/exclude them
// from being monitored.
type FilteringTag struct {
	// Valid actions for a filtering tag. Exclusion takes priority over inclusion.
	Action *TagAction

	// The name (also known as the key) of the tag.
	Name *string

	// The value of the tag.
	Value *string
}

type Host struct {
	// The aliases for the host installed via the Datadog agent.
	Aliases []*string

	// The Datadog integrations reporting metrics for the host.
	Apps []*string
	Meta *HostMetadata

	// The name of the host.
	Name *string
}

// HostListResponse - Response of a list operation.
type HostListResponse struct {
	// REQUIRED; The DatadogHost items on this page
	Value []*Host

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

type HostMetadata struct {
	// The agent version.
	AgentVersion  *string
	InstallMethod *InstallMethod
	LogsAgent     *LogsAgent
}

type IdentityProperties struct {
	// Specifies the identity type of the Datadog Monitor. At this time the only allowed value is 'SystemAssigned'.
	Type *ManagedIdentityTypes

	// READ-ONLY; The identity ID.
	PrincipalID *string

	// READ-ONLY; The tenant ID of resource.
	TenantID *string
}

type InstallMethod struct {
	// The installer version.
	InstallerVersion *string

	// The tool.
	Tool *string

	// The tool version.
	ToolVersion *string
}

// LatestLinkedSaaSResponse - Response of get latest linked SaaS resource operation
type LatestLinkedSaaSResponse struct {
	// Flag indicating if the SaaS resource is hidden
	IsHiddenSaaS *bool

	// SaaS resource id
	SaaSResourceID *string
}

// LinkedResource - The definition of a linked resource.
type LinkedResource struct {
	// The ARM id of the linked resource.
	ID *string

	// The location of the linked resource.
	Location *string
}

// LinkedResourceListResponse - Response of a list operation.
type LinkedResourceListResponse struct {
	// REQUIRED; The LinkedResource items on this page
	Value []*LinkedResource

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

// LogRules - Set of rules for sending logs for the Monitor resource.
type LogRules struct {
	// List of filtering tags to be used for capturing logs. This only takes effect if SendResourceLogs flag is enabled. If empty,
	// all resources will be captured. If only Exclude action is specified, the rules will apply to the list of all available
	// resources. If Include actions are specified, the rules will only include resources with the associated tags.
	FilteringTags []*FilteringTag

	// Flag specifying if AAD logs should be sent for the Monitor resource.
	SendAADLogs *bool

	// Flag specifying if Azure resource logs should be sent for the Monitor resource.
	SendResourceLogs *bool

	// Flag specifying if Azure subscription logs should be sent for the Monitor resource.
	SendSubscriptionLogs *bool
}

type LogsAgent struct {
	// The transport.
	Transport *string
}

// MarketplaceOfferDetails - Details about the marketplace offer associated with the monitor resource.
type MarketplaceOfferDetails struct {
	// The offer ID (e.g., "dd_liftr_v3_decoupled").
	OfferID *string

	// The publisher ID (e.g., "datadog1591740804488").
	PublisherID *string
}

// MarketplaceSaaSInfo - Marketplace SAAS Info of the resource.
type MarketplaceSaaSInfo struct {
	// The Azure Subscription ID to which the Marketplace Subscription belongs and gets billed into.
	BilledAzureSubscriptionID *string

	// Marketplace Subscription Details: SAAS Name
	MarketplaceName *string

	// Marketplace Subscription Details: SaaS Subscription Status
	MarketplaceStatus *string

	// Marketplace Subscription Id. This is a GUID-formatted string.
	MarketplaceSubscriptionID *string

	// Offer Id of the Marketplace offer
	OfferID *string

	// Flag specifying if the Marketplace status is subscribed or not.
	Subscribed *bool
}

// MetricRules - Set of rules for sending metrics for the Monitor resource.
type MetricRules struct {
	// List of filtering tags to be used for capturing metrics. If empty, all resources will be captured. If only Exclude action
	// is specified, the rules will apply to the list of all available resources. If Include actions are specified, the rules
	// will only include resources with the associated tags.
	FilteringTags []*FilteringTag
}

// MonitorProperties - Properties specific to the monitor resource.
type MonitorProperties struct {
	// Specify the Datadog organization name. In the case of linking to existing organizations, Id, ApiKey, and Applicationkey
	// is required as well.
	DatadogOrganizationProperties *OrganizationProperties

	// Details about the marketplace offer associated with the resource.
	// Required for API version 2025-11 and later.
	// For earlier API versions, defaults to the legacy offer.
	MarketplaceOfferDetails *MarketplaceOfferDetails

	// Flag specifying if the resource monitoring is enabled or disabled.
	MonitoringStatus *MonitoringStatus

	// SaaS details
	SaaSData *SaaSData

	// SRE Agent configuration to connect to MCP server of Datadog for given organization.
	SreAgentConfiguration []*SreAgentConfiguration

	// Includes name, email and optionally, phone number. User Information can't be null.
	UserInfo *UserInfo

	// READ-ONLY
	LiftrResourceCategory *LiftrResourceCategories

	// READ-ONLY; The priority of the resource.
	LiftrResourcePreference *int32

	// READ-ONLY; Flag specifying the Marketplace Subscription Status of the resource. If payment is not made in time, the resource
	// will go in Suspended state.
	MarketplaceSubscriptionStatus *MarketplaceSubscriptionStatus

	// READ-ONLY
	ProvisioningState *ProvisioningState
}

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

	// Properties specific to the monitor resource.
	Properties *MonitorProperties
	SKU        *ResourceSKU

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

// MonitorResourceListResponse - Response of a list operation.
type MonitorResourceListResponse struct {
	// REQUIRED; The DatadogMonitorResource items on this page
	Value []*MonitorResource

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

// MonitorResourceUpdateParameters - The parameters for a PATCH request to a monitor resource.
type MonitorResourceUpdateParameters struct {
	// The set of properties that can be update in a PATCH request to a monitor resource.
	Properties *MonitorUpdateProperties
	SKU        *ResourceSKU

	// The new tags of the monitor resource.
	Tags map[string]*string
}

// MonitorUpdateProperties - The set of properties that can be update in a PATCH request to a monitor resource.
type MonitorUpdateProperties struct {
	// The new cloud security posture management value of the monitor resource. This collects configuration information for all
	// resources in a subscription and track conformance to industry benchmarks.
	Cspm *bool

	// Flag specifying if the resource monitoring is enabled or disabled.
	MonitoringStatus *MonitoringStatus

	// The new resource collection value of the monitor resource. This collects configuration information for all resources in
	// a subscription.
	ResourceCollection *bool
}

// MonitoredResource - The properties of a resource currently being monitored by the Datadog monitor resource.
type MonitoredResource struct {
	// The ARM id of the resource.
	ID *string

	// Reason for why the resource is sending logs (or why it is not sending).
	ReasonForLogsStatus *string

	// Reason for why the resource is sending metrics (or why it is not sending).
	ReasonForMetricsStatus *string

	// Flag indicating if resource is sending logs to Datadog.
	SendingLogs *bool

	// Flag indicating if resource is sending metrics to Datadog.
	SendingMetrics *bool
}

// MonitoredResourceListResponse - Response of a list operation.
type MonitoredResourceListResponse struct {
	// REQUIRED; The MonitoredResource items on this page
	Value []*MonitoredResource

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

// MonitoredSubscription - The list of subscriptions and it's monitoring status by current Datadog monitor.
type MonitoredSubscription struct {
	// The reason of not monitoring the subscription.
	Error *string

	// The state of monitoring.
	Status *Status

	// The subscriptionId to be monitored.
	SubscriptionID *string

	// Definition of the properties for a TagRules resource.
	TagRules *MonitoringTagRulesProperties
}

// MonitoredSubscriptionProperties - The request to update subscriptions needed to be monitored by the Datadog monitor resource.
type MonitoredSubscriptionProperties struct {
	// The request to update subscriptions needed to be monitored by the Datadog monitor resource.
	Properties *SubscriptionList

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

// MonitoredSubscriptionPropertiesList - Paged collection of MonitoredSubscriptionProperties items
type MonitoredSubscriptionPropertiesList struct {
	// REQUIRED; The MonitoredSubscriptionProperties items on this page
	Value []*MonitoredSubscriptionProperties

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

// MonitoringTagRules - Capture logs and metrics of Azure resources based on ARM tags.
type MonitoringTagRules struct {
	// Definition of the properties for a TagRules resource.
	Properties *MonitoringTagRulesProperties

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

// MonitoringTagRulesListResponse - Response of a list operation.
type MonitoringTagRulesListResponse struct {
	// REQUIRED; The MonitoringTagRules items on this page
	Value []*MonitoringTagRules

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

// MonitoringTagRulesProperties - Definition of the properties for a TagRules resource.
type MonitoringTagRulesProperties struct {
	// Set of rules for managing agents for the Monitor resource.
	AgentRules *AgentRules

	// Configuration to enable/disable auto-muting flag
	Automuting *bool

	// Configuration to enable/disable custom metrics. If enabled, custom metrics from app insights will be sent.
	CustomMetrics *bool

	// Set of rules for sending logs for the Monitor resource.
	LogRules *LogRules

	// Set of rules for sending metrics for the Monitor resource.
	MetricRules *MetricRules

	// READ-ONLY
	ProvisioningState *ProvisioningState
}

// OperationDisplay - The object that represents the operation.
type OperationDisplay struct {
	// Description of the operation, e.g., 'Write monitors'.
	Description *string

	// Operation type, e.g., read, write, delete, etc.
	Operation *string

	// Service provider, i.e., Microsoft.Datadog.
	Provider *string

	// Type on which the operation is performed, e.g., 'monitors'.
	Resource *string
}

// OperationListResult - Represents a paginated list of operation results.
type OperationListResult struct {
	// REQUIRED; The list of operations.
	Value []*OperationResult

	// The URL to get the next set of results, if any.
	NextLink *string
}

// OperationResult - A Microsoft.Datadog REST API operation.
type OperationResult struct {
	// The object that represents the operation.
	Display *OperationDisplay

	// Indicates whether the operation is a data action
	IsDataAction *bool

	// Operation name, i.e., {provider}/{resource}/{operation}.
	Name *string
}

// OrganizationProperties - Specify the Datadog organization name. In the case of linking to existing organizations, Id, ApiKey,
// and Applicationkey is required as well.
type OrganizationProperties struct {
	// Api key associated to the Datadog organization.
	APIKey *string

	// Application key associated to the Datadog organization.
	ApplicationKey *string

	// The configuration which describes the state of cloud security posture management. This collects configuration information
	// for all resources in a subscription and track conformance to industry benchmarks.
	Cspm *bool

	// The Id of the Enterprise App used for Single sign on.
	EnterpriseAppID *string

	// Id of the Datadog organization.
	ID *string

	// The auth code used to linking to an existing Datadog organization.
	LinkingAuthCode *string

	// The client_id from an existing in exchange for an auth token to link organization.
	LinkingClientID *string

	// Name of the Datadog organization.
	Name *string

	// The redirect URI for linking.
	RedirectURI *string

	// The configuration which describes the state of resource collection. This collects configuration information for all resources
	// in a subscription.
	ResourceCollection *bool
}

// PartnerBillingEntity - Partner Billing details associated with the resource.
type PartnerBillingEntity struct {
	// The Datadog Organization Id.
	ID *string

	// The Datadog Organization Name.
	Name *string

	// Link to the datadog organization page
	PartnerEntityURI *string
}

type ResourceSKU struct {
	// REQUIRED; Name of the SKU in {PlanId} format. For Terraform, the only allowed value is 'Linked'.
	Name *string
}

// ResubscribeProperties - Resubscribe Properties
type ResubscribeProperties struct {
	// Newly selected Azure Subscription Id in which the new Marketplace subscription will be created for Resubscribe
	AzureSubscriptionID *string

	// Newly selected Azure resource group in which the new Marketplace subscription will be created for Resubscribe
	ResourceGroup *string
	SKU           *ResourceSKU
}

// SaaSData - SaaS details
type SaaSData struct {
	// SaaS resource id
	SaaSResourceID *string
}

// SaaSResourceDetailsResponse - Marketplace SaaS resource details.
type SaaSResourceDetailsResponse struct {
	// Id of the Marketplace SaaS Resource
	SaaSID *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
}

type SetPasswordLink struct {
	SetPasswordLink *string
}

type SingleSignOnProperties struct {
	// The Id of the Enterprise App used for Single sign-on.
	EnterpriseAppID *string

	// Various states of the SSO resource
	SingleSignOnState *SingleSignOnStates

	// READ-ONLY
	ProvisioningState *ProvisioningState

	// READ-ONLY; The login URL specific to this Datadog Organization.
	SingleSignOnURL *string
}

// SingleSignOnResource - Concrete proxy resource types can be created by aliasing this type using a specific property type.
type SingleSignOnResource struct {
	Properties *SingleSignOnProperties

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

// SingleSignOnResourceListResponse - Response of a list operation.
type SingleSignOnResourceListResponse struct {
	// REQUIRED; The DatadogSingleSignOnResource items on this page
	Value []*SingleSignOnResource

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

// SreAgentConfiguration - SRE Agent configuration to connect to MCP server of Datadog for a given organization.
type SreAgentConfiguration struct {
	// REQUIRED; The ARM resource ID of the MCP connector integrated with SRE Agent resource.
	McpConnectorResourceID *string
}

// SreAgentConfigurationListResponse - Response of a list operation.
type SreAgentConfigurationListResponse struct {
	// REQUIRED; The SreAgentConfiguration items on this page
	Value []*SreAgentConfiguration

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

// SreAgentConnectorRequest - Request for adding/removing Datadog MCP connectors on SRE Agent resource.
type SreAgentConnectorRequest struct {
	// REQUIRED; Add/Remove action.
	Action *ConnectorAction

	// REQUIRED; The list of ARM resource ID of the MCP connector integrated with SRE Agent resource.
	McpConnectorResourceIDList []*SreAgentConfiguration
}

// SubscriptionList - The request to update subscriptions needed to be monitored by the Datadog monitor resource.
type SubscriptionList struct {
	// List of subscriptions and the state of the monitoring.
	MonitoredSubscriptionList []*MonitoredSubscription

	// The operation for the patch on the resource.
	Operation *Operation
}

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

// UserInfo - Includes name, email and optionally, phone number. User Information can't be null.
type UserInfo struct {
	// Email of the user used by Datadog for contacting them if needed
	EmailAddress *string

	// Name of the user
	Name *string

	// Phone number of the user used by Datadog for contacting them if needed
	PhoneNumber *string
}
