// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package arm

import "github.com/Azure/azure-service-operator/v2/pkg/genruntime"

type ActionGroup_Spec struct {
	// Location: Resource location
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: The action groups properties of the resource.
	Properties *ActionGroupSpec `json:"properties,omitempty"`

	// Tags: Resource tags
	Tags map[string]string `json:"tags,omitempty"`
}

var _ genruntime.ARMResourceSpec = &ActionGroup_Spec{}

// GetAPIVersion returns the ARM API version of the resource. This is always "2023-01-01"
func (group ActionGroup_Spec) GetAPIVersion() string {
	return "2023-01-01"
}

// GetName returns the Name of the resource
func (group *ActionGroup_Spec) GetName() string {
	return group.Name
}

// GetType returns the ARM Type of the resource. This is always "Microsoft.Insights/actionGroups"
func (group *ActionGroup_Spec) GetType() string {
	return "Microsoft.Insights/actionGroups"
}

// An Azure action group.
type ActionGroupSpec struct {
	// ArmRoleReceivers: The list of ARM role receivers that are part of this action group. Roles are Azure RBAC roles and only
	// built-in roles are supported.
	ArmRoleReceivers []ArmRoleReceiver `json:"armRoleReceivers,omitempty"`

	// AutomationRunbookReceivers: The list of AutomationRunbook receivers that are part of this action group.
	AutomationRunbookReceivers []AutomationRunbookReceiver `json:"automationRunbookReceivers,omitempty"`

	// AzureAppPushReceivers: The list of AzureAppPush receivers that are part of this action group.
	AzureAppPushReceivers []AzureAppPushReceiver `json:"azureAppPushReceivers,omitempty"`

	// AzureFunctionReceivers: The list of azure function receivers that are part of this action group.
	AzureFunctionReceivers []AzureFunctionReceiver `json:"azureFunctionReceivers,omitempty"`

	// EmailReceivers: The list of email receivers that are part of this action group.
	EmailReceivers []EmailReceiver `json:"emailReceivers,omitempty"`

	// Enabled: Indicates whether this action group is enabled. If an action group is not enabled, then none of its receivers
	// will receive communications.
	Enabled *bool `json:"enabled,omitempty"`

	// EventHubReceivers: The list of event hub receivers that are part of this action group.
	EventHubReceivers []EventHubReceiver `json:"eventHubReceivers,omitempty"`

	// GroupShortName: The short name of the action group. This will be used in SMS messages.
	GroupShortName *string `json:"groupShortName,omitempty"`

	// ItsmReceivers: The list of ITSM receivers that are part of this action group.
	ItsmReceivers []ItsmReceiver `json:"itsmReceivers,omitempty"`

	// LogicAppReceivers: The list of logic app receivers that are part of this action group.
	LogicAppReceivers []LogicAppReceiver `json:"logicAppReceivers,omitempty"`

	// SmsReceivers: The list of SMS receivers that are part of this action group.
	SmsReceivers []SmsReceiver `json:"smsReceivers,omitempty"`

	// VoiceReceivers: The list of voice receivers that are part of this action group.
	VoiceReceivers []VoiceReceiver `json:"voiceReceivers,omitempty"`

	// WebhookReceivers: The list of webhook receivers that are part of this action group.
	WebhookReceivers []WebhookReceiver `json:"webhookReceivers,omitempty"`
}

// An arm role receiver.
type ArmRoleReceiver struct {
	// Name: The name of the arm role receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// RoleId: The arm role id.
	RoleId *string `json:"roleId,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}

// The Azure Automation Runbook notification receiver.
type AutomationRunbookReceiver struct {
	// AutomationAccountId: The Azure automation account Id which holds this runbook and authenticate to Azure resource.
	AutomationAccountId *string `json:"automationAccountId,omitempty"`

	// IsGlobalRunbook: Indicates whether this instance is global runbook.
	IsGlobalRunbook *bool `json:"isGlobalRunbook,omitempty"`

	// Name: Indicates name of the webhook.
	Name *string `json:"name,omitempty"`

	// RunbookName: The name for this runbook.
	RunbookName *string `json:"runbookName,omitempty"`

	// ServiceUri: The URI where webhooks should be sent.
	ServiceUri *string `json:"serviceUri,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`

	// WebhookResourceId: The resource id for webhook linked to this runbook.
	WebhookResourceId *string `json:"webhookResourceId,omitempty"`
}

// The Azure mobile App push notification receiver.
type AzureAppPushReceiver struct {
	// EmailAddress: The email address registered for the Azure mobile app.
	EmailAddress *string `json:"emailAddress,omitempty"`

	// Name: The name of the Azure mobile app push receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`
}

// An azure function receiver.
type AzureFunctionReceiver struct {
	// FunctionAppResourceId: The azure resource id of the function app.
	FunctionAppResourceId *string `json:"functionAppResourceId,omitempty"`

	// FunctionName: The function name in the function app.
	FunctionName *string `json:"functionName,omitempty"`

	// HttpTriggerUrl: The http trigger url where http request sent to.
	HttpTriggerUrl *string `json:"httpTriggerUrl,omitempty"`

	// Name: The name of the azure function receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}

// An email receiver.
type EmailReceiver struct {
	// EmailAddress: The email address of this receiver.
	EmailAddress *string `json:"emailAddress,omitempty"`

	// Name: The name of the email receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}

// An Event hub receiver.
type EventHubReceiver struct {
	// EventHubName: The name of the specific Event Hub queue
	EventHubName *string `json:"eventHubName,omitempty"`

	// EventHubNameSpace: The Event Hub namespace
	EventHubNameSpace *string `json:"eventHubNameSpace,omitempty"`

	// Name: The name of the Event hub receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// SubscriptionId: The Id for the subscription containing this event hub
	SubscriptionId *string `json:"subscriptionId,omitempty"`

	// TenantId: The tenant Id for the subscription containing this event hub
	TenantId *string `json:"tenantId,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}

// An Itsm receiver.
type ItsmReceiver struct {
	// ConnectionId: Unique identification of ITSM connection among multiple defined in above workspace.
	ConnectionId *string `json:"connectionId,omitempty"`

	// Name: The name of the Itsm receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// Region: Region in which workspace resides. Supported
	// values:'centralindia','japaneast','southeastasia','australiasoutheast','uksouth','westcentralus','canadacentral','eastus','westeurope'
	Region *string `json:"region,omitempty"`

	// TicketConfiguration: JSON blob for the configurations of the ITSM action. CreateMultipleWorkItems option will be part of
	// this blob as well.
	TicketConfiguration *string `json:"ticketConfiguration,omitempty"`

	// WorkspaceId: OMS LA instance identifier.
	WorkspaceId *string `json:"workspaceId,omitempty"`
}

// A logic app receiver.
type LogicAppReceiver struct {
	// CallbackUrl: The callback url where http request sent to.
	CallbackUrl *string `json:"callbackUrl,omitempty"`

	// Name: The name of the logic app receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// ResourceId: The azure resource id of the logic app receiver.
	ResourceId *string `json:"resourceId,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}

// An SMS receiver.
type SmsReceiver struct {
	// CountryCode: The country code of the SMS receiver.
	CountryCode *string `json:"countryCode,omitempty"`

	// Name: The name of the SMS receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// PhoneNumber: The phone number of the SMS receiver.
	PhoneNumber *string `json:"phoneNumber,omitempty"`
}

// A voice receiver.
type VoiceReceiver struct {
	// CountryCode: The country code of the voice receiver.
	CountryCode *string `json:"countryCode,omitempty"`

	// Name: The name of the voice receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// PhoneNumber: The phone number of the voice receiver.
	PhoneNumber *string `json:"phoneNumber,omitempty"`
}

// A webhook receiver.
type WebhookReceiver struct {
	// IdentifierUri: Indicates the identifier uri for aad auth.
	IdentifierUri *string `json:"identifierUri,omitempty"`

	// Name: The name of the webhook receiver. Names must be unique across all receivers within an action group.
	Name *string `json:"name,omitempty"`

	// ObjectId: Indicates the webhook app object Id for aad auth.
	ObjectId *string `json:"objectId,omitempty"`

	// ServiceUri: The URI where webhooks should be sent.
	ServiceUri *string `json:"serviceUri,omitempty"`

	// TenantId: Indicates the tenant id for aad auth.
	TenantId *string `json:"tenantId,omitempty"`

	// UseAadAuth: Indicates whether or not use AAD authentication.
	UseAadAuth *bool `json:"useAadAuth,omitempty"`

	// UseCommonAlertSchema: Indicates whether to use common alert schema.
	UseCommonAlertSchema *bool `json:"useCommonAlertSchema,omitempty"`
}
