// 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 NotificationHub_Spec struct {
	// Location: The geo-location where the resource lives
	Location *string `json:"location,omitempty"`
	Name     string  `json:"name,omitempty"`

	// Properties: NotificationHub properties.
	Properties *NotificationHubProperties `json:"properties,omitempty"`

	// Sku: The Sku description for a namespace
	Sku *Sku `json:"sku,omitempty"`

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

var _ genruntime.ARMResourceSpec = &NotificationHub_Spec{}

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

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

// GetType returns the ARM Type of the resource. This is always "Microsoft.NotificationHubs/namespaces/notificationHubs"
func (notificationHub *NotificationHub_Spec) GetType() string {
	return "Microsoft.NotificationHubs/namespaces/notificationHubs"
}

// NotificationHub properties.
type NotificationHubProperties struct {
	// AdmCredential: Description of a NotificationHub AdmCredential.
	AdmCredential *AdmCredential `json:"admCredential,omitempty"`

	// ApnsCredential: Description of a NotificationHub ApnsCredential.
	ApnsCredential *ApnsCredential `json:"apnsCredential,omitempty"`

	// BaiduCredential: Description of a NotificationHub BaiduCredential.
	BaiduCredential *BaiduCredential `json:"baiduCredential,omitempty"`

	// BrowserCredential: Description of a NotificationHub BrowserCredential.
	BrowserCredential *BrowserCredential `json:"browserCredential,omitempty"`

	// GcmCredential: Description of a NotificationHub GcmCredential.
	GcmCredential *GcmCredential `json:"gcmCredential,omitempty"`

	// MpnsCredential: Description of a NotificationHub MpnsCredential.
	MpnsCredential *MpnsCredential `json:"mpnsCredential,omitempty"`

	// Name: Gets or sets the NotificationHub name.
	Name *string `json:"name,omitempty"`

	// RegistrationTtl: Gets or sets the RegistrationTtl of the created NotificationHub
	RegistrationTtl *string `json:"registrationTtl,omitempty"`

	// WnsCredential: Description of a NotificationHub WnsCredential.
	WnsCredential *WnsCredential `json:"wnsCredential,omitempty"`

	// XiaomiCredential: Description of a NotificationHub XiaomiCredential.
	XiaomiCredential *XiaomiCredential `json:"xiaomiCredential,omitempty"`
}

// Description of a NotificationHub AdmCredential.
type AdmCredential struct {
	// Properties: Description of a NotificationHub AdmCredential.
	Properties *AdmCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub ApnsCredential.
type ApnsCredential struct {
	// Properties: Description of a NotificationHub ApnsCredential.
	Properties *ApnsCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub BaiduCredential.
type BaiduCredential struct {
	// Properties: Description of a NotificationHub BaiduCredential.
	Properties *BaiduCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub BrowserCredential.
type BrowserCredential struct {
	// Properties: Description of a NotificationHub BrowserCredential.
	Properties *BrowserCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub GcmCredential.
type GcmCredential struct {
	// Properties: Description of a NotificationHub GcmCredential.
	Properties *GcmCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub MpnsCredential.
type MpnsCredential struct {
	// Properties: Description of a NotificationHub MpnsCredential.
	Properties *MpnsCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub WnsCredential.
type WnsCredential struct {
	// Properties: Description of a NotificationHub WnsCredential.
	Properties *WnsCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub XiaomiCredential.
type XiaomiCredential struct {
	// Properties: Description of a NotificationHub XiaomiCredentialProperties.
	Properties *XiaomiCredentialProperties `json:"properties,omitempty"`
}

// Description of a NotificationHub AdmCredential.
type AdmCredentialProperties struct {
	// AuthTokenUrl: Gets or sets the URL of the authorization token.
	AuthTokenUrl *string `json:"authTokenUrl,omitempty"`

	// ClientId: Gets or sets the client identifier.
	ClientId *string `json:"clientId,omitempty"`

	// ClientSecret: Gets or sets the credential secret access key.
	ClientSecret *string `json:"clientSecret,omitempty"`
}

// Description of a NotificationHub ApnsCredential.
type ApnsCredentialProperties struct {
	// ApnsCertificate: Gets or sets the APNS certificate.
	ApnsCertificate *string `json:"apnsCertificate,omitempty"`

	// AppId: Gets or sets the issuer (iss) registered claim key, whose value is
	// your 10-character Team ID, obtained from your developer account
	AppId *string `json:"appId,omitempty"`

	// AppName: Gets or sets the name of the application
	AppName *string `json:"appName,omitempty"`

	// CertificateKey: Gets or sets the certificate key.
	CertificateKey *string `json:"certificateKey,omitempty"`

	// Endpoint: Gets or sets the endpoint of this credential.
	Endpoint *string `json:"endpoint,omitempty"`

	// KeyId: Gets or sets a 10-character key identifier (kid) key, obtained from
	// your developer account
	KeyId *string `json:"keyId,omitempty"`

	// Thumbprint: Gets or sets the APNS certificate Thumbprint
	Thumbprint *string `json:"thumbprint,omitempty"`

	// Token: Gets or sets provider Authentication Token, obtained through your
	// developer account
	Token *string `json:"token,omitempty"`
}

// Description of a NotificationHub BaiduCredential.
type BaiduCredentialProperties struct {
	// BaiduApiKey: Gets or sets baidu Api Key.
	BaiduApiKey *string `json:"baiduApiKey,omitempty"`

	// BaiduEndPoint: Gets or sets baidu Endpoint.
	BaiduEndPoint *string `json:"baiduEndPoint,omitempty"`

	// BaiduSecretKey: Gets or sets baidu Secret Key
	BaiduSecretKey *string `json:"baiduSecretKey,omitempty"`
}

// Description of a NotificationHub BrowserCredential.
type BrowserCredentialProperties struct {
	// Subject: Gets or sets web push subject.
	Subject *string `json:"subject,omitempty"`

	// VapidPrivateKey: Gets or sets VAPID private key.
	VapidPrivateKey *string `json:"vapidPrivateKey,omitempty"`

	// VapidPublicKey: Gets or sets VAPID public key.
	VapidPublicKey *string `json:"vapidPublicKey,omitempty"`
}

// Description of a NotificationHub GcmCredential.
type GcmCredentialProperties struct {
	// GcmEndpoint: Gets or sets the GCM endpoint.
	GcmEndpoint *string `json:"gcmEndpoint,omitempty"`

	// GoogleApiKey: Gets or sets the Google API key.
	GoogleApiKey *string `json:"googleApiKey,omitempty"`
}

// Description of a NotificationHub MpnsCredential.
type MpnsCredentialProperties struct {
	// CertificateKey: Gets or sets the certificate key for this credential.
	CertificateKey *string `json:"certificateKey,omitempty"`

	// MpnsCertificate: Gets or sets the MPNS certificate.
	MpnsCertificate *string `json:"mpnsCertificate,omitempty"`

	// Thumbprint: Gets or sets the MPNS certificate Thumbprint
	Thumbprint *string `json:"thumbprint,omitempty"`
}

// Description of a NotificationHub WnsCredential.
type WnsCredentialProperties struct {
	// CertificateKey: Ges or sets the WNS Certificate Key.
	CertificateKey *string `json:"certificateKey,omitempty"`

	// PackageSid: Gets or sets the package ID for this credential.
	PackageSid *string `json:"packageSid,omitempty"`

	// SecretKey: Gets or sets the secret key.
	SecretKey *string `json:"secretKey,omitempty"`

	// WindowsLiveEndpoint: Gets or sets the Windows Live endpoint.
	WindowsLiveEndpoint *string `json:"windowsLiveEndpoint,omitempty"`

	// WnsCertificate: Gets or sets the WNS Certificate.
	WnsCertificate *string `json:"wnsCertificate,omitempty"`
}

// Description of a NotificationHub XiaomiCredentialProperties.
type XiaomiCredentialProperties struct {
	// AppSecret: Gets or sets app secret.
	AppSecret *string `json:"appSecret,omitempty"`

	// Endpoint: Gets or sets xiaomi service endpoint.
	Endpoint *string `json:"endpoint,omitempty"`
}
