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

// EventGrid Topic
type Topic_STATUS struct {
	// Id: Fully qualified identifier of the resource.
	Id *string `json:"id,omitempty"`

	// Location: Location of the resource.
	Location *string `json:"location,omitempty"`

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

	// Properties: Properties of the topic.
	Properties *TopicProperties_STATUS `json:"properties,omitempty"`

	// SystemData: The system metadata relating to Topic resource.
	SystemData *SystemData_STATUS `json:"systemData,omitempty"`

	// Tags: Tags of the resource.
	Tags map[string]string `json:"tags,omitempty"`

	// Type: Type of the resource.
	Type *string `json:"type,omitempty"`
}

// Properties of the Topic
type TopicProperties_STATUS struct {
	// Endpoint: Endpoint for the topic.
	Endpoint *string `json:"endpoint,omitempty"`

	// InboundIpRules: This can be used to restrict traffic from specific IPs instead of all IPs. Note: These are considered
	// only if PublicNetworkAccess is enabled.
	InboundIpRules []InboundIpRule_STATUS `json:"inboundIpRules,omitempty"`

	// InputSchema: This determines the format that Event Grid should expect for incoming events published to the topic.
	InputSchema *TopicProperties_InputSchema_STATUS `json:"inputSchema,omitempty"`

	// InputSchemaMapping: This enables publishing using custom event schemas. An InputSchemaMapping can be specified to map
	// various properties of a source schema to various required properties of the EventGridEvent schema.
	InputSchemaMapping *InputSchemaMapping_STATUS `json:"inputSchemaMapping,omitempty"`

	// MetricResourceId: Metric resource id for the topic.
	MetricResourceId           *string                                                      `json:"metricResourceId,omitempty"`
	PrivateEndpointConnections []PrivateEndpointConnection_STATUS_Topic_SubResourceEmbedded `json:"privateEndpointConnections,omitempty"`

	// ProvisioningState: Provisioning state of the topic.
	ProvisioningState *TopicProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"`

	// PublicNetworkAccess: This determines if traffic is allowed over public network. By default it is enabled.
	// You can further restrict to specific IPs by configuring <seealso
	// cref="P:Microsoft.Azure.Events.ResourceProvider.Common.Contracts.TopicProperties.InboundIpRules" />
	PublicNetworkAccess *TopicProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"`
}

type PrivateEndpointConnection_STATUS_Topic_SubResourceEmbedded struct {
	// Id: Fully qualified identifier of the resource.
	Id *string `json:"id,omitempty"`
}

type TopicProperties_InputSchema_STATUS string

const (
	TopicProperties_InputSchema_STATUS_CloudEventSchemaV1_0 = TopicProperties_InputSchema_STATUS("CloudEventSchemaV1_0")
	TopicProperties_InputSchema_STATUS_CustomEventSchema    = TopicProperties_InputSchema_STATUS("CustomEventSchema")
	TopicProperties_InputSchema_STATUS_EventGridSchema      = TopicProperties_InputSchema_STATUS("EventGridSchema")
)

// Mapping from string to TopicProperties_InputSchema_STATUS
var topicProperties_InputSchema_STATUS_Values = map[string]TopicProperties_InputSchema_STATUS{
	"cloudeventschemav1_0": TopicProperties_InputSchema_STATUS_CloudEventSchemaV1_0,
	"customeventschema":    TopicProperties_InputSchema_STATUS_CustomEventSchema,
	"eventgridschema":      TopicProperties_InputSchema_STATUS_EventGridSchema,
}

type TopicProperties_ProvisioningState_STATUS string

const (
	TopicProperties_ProvisioningState_STATUS_Canceled  = TopicProperties_ProvisioningState_STATUS("Canceled")
	TopicProperties_ProvisioningState_STATUS_Creating  = TopicProperties_ProvisioningState_STATUS("Creating")
	TopicProperties_ProvisioningState_STATUS_Deleting  = TopicProperties_ProvisioningState_STATUS("Deleting")
	TopicProperties_ProvisioningState_STATUS_Failed    = TopicProperties_ProvisioningState_STATUS("Failed")
	TopicProperties_ProvisioningState_STATUS_Succeeded = TopicProperties_ProvisioningState_STATUS("Succeeded")
	TopicProperties_ProvisioningState_STATUS_Updating  = TopicProperties_ProvisioningState_STATUS("Updating")
)

// Mapping from string to TopicProperties_ProvisioningState_STATUS
var topicProperties_ProvisioningState_STATUS_Values = map[string]TopicProperties_ProvisioningState_STATUS{
	"canceled":  TopicProperties_ProvisioningState_STATUS_Canceled,
	"creating":  TopicProperties_ProvisioningState_STATUS_Creating,
	"deleting":  TopicProperties_ProvisioningState_STATUS_Deleting,
	"failed":    TopicProperties_ProvisioningState_STATUS_Failed,
	"succeeded": TopicProperties_ProvisioningState_STATUS_Succeeded,
	"updating":  TopicProperties_ProvisioningState_STATUS_Updating,
}

type TopicProperties_PublicNetworkAccess_STATUS string

const (
	TopicProperties_PublicNetworkAccess_STATUS_Disabled = TopicProperties_PublicNetworkAccess_STATUS("Disabled")
	TopicProperties_PublicNetworkAccess_STATUS_Enabled  = TopicProperties_PublicNetworkAccess_STATUS("Enabled")
)

// Mapping from string to TopicProperties_PublicNetworkAccess_STATUS
var topicProperties_PublicNetworkAccess_STATUS_Values = map[string]TopicProperties_PublicNetworkAccess_STATUS{
	"disabled": TopicProperties_PublicNetworkAccess_STATUS_Disabled,
	"enabled":  TopicProperties_PublicNetworkAccess_STATUS_Enabled,
}
