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

import "time"

// AcceptTransferProperties - Request parameters to accept transfer.
type AcceptTransferProperties struct {
	// Request parameters to accept transfer.
	ProductDetails []*ProductDetails
}

// AcceptTransferRequest - Request parameters to accept transfer.
type AcceptTransferRequest struct {
	// Request parameters to accept transfer.
	Properties *AcceptTransferProperties
}

// Account - A billing account.
type Account struct {
	// A billing account.
	Properties *AccountProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AccountListResult - Paged collection of BillingAccount items
type AccountListResult struct {
	// READ-ONLY; The BillingAccount items on this page
	Value []*Account

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

// AccountPatch - A billing account.
type AccountPatch struct {
	// A billing account.
	Properties *AccountProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AccountPolicy - A policy at billing account scope.
type AccountPolicy struct {
	// A policy at billing account scope.
	Properties *AccountPolicyProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AccountPolicyProperties - A policy at billing account scope.
type AccountPolicyProperties struct {
	// The policies for Enterprise Agreement enrollments.
	EnterpriseAgreementPolicies *AccountPolicyPropertiesEnterpriseAgreementPolicies

	// The policy that controls whether Azure marketplace purchases are allowed.
	MarketplacePurchases *MarketplacePurchasesPolicy

	// List of all policies defined at the billing scope.
	Policies []*PolicySummary

	// The policy that controls whether Azure reservation purchases are allowed.
	ReservationPurchases *ReservationPurchasesPolicy

	// The policy that controls whether users with Azure savings plan purchase are allowed.
	SavingsPlanPurchases *SavingsPlanPurchasesPolicy

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// AccountPolicyPropertiesEnterpriseAgreementPolicies - The policies for Enterprise Agreement enrollments.
type AccountPolicyPropertiesEnterpriseAgreementPolicies struct {
	// The policy that controls whether account owner can view charges.
	AccountOwnerViewCharges *EnrollmentAccountOwnerViewCharges

	// The state showing the enrollment auth level.
	AuthenticationType *EnrollmentAuthLevelState

	// The policy that controls whether department admin can view charges.
	DepartmentAdminViewCharges *EnrollmentDepartmentAdminViewCharges
}

// AccountProperties - A billing account.
type AccountProperties struct {
	// The billing account name.
	DisplayName *string

	// The properties of an enrollment.
	EnrollmentDetails *AccountPropertiesEnrollmentDetails

	// Indicates whether or not the billing account has any billing profiles.
	HasNoBillingProfiles *bool

	// Indicates whether user has read access to the billing account.
	HasReadAccess *bool

	// Notification email address for legacy account. Available for agreement type Microsoft Online Services Program.
	NotificationEmailAddress *string

	// The tenant that was used to set up the billing account. By default, only users from this tenant can get role assignments
	// on the billing account and all purchases are provisioned in this tenant.
	PrimaryBillingTenantID *string

	// Describes the registration number of the organization linked with the billing account.
	RegistrationNumber *AccountPropertiesRegistrationNumber

	// The address of the individual or organization that is responsible for the billing account.
	SoldTo *AccountPropertiesSoldTo

	// A list of tax identifiers for the billing account.
	TaxIDs []*TaxIdentifier

	// READ-ONLY; The current status of the billing account.
	AccountStatus *AccountStatus

	// READ-ONLY; Reason for the specified billing account status.
	AccountStatusReasonCode *BillingAccountStatusReasonCode

	// READ-ONLY; The tier of the account.
	AccountSubType *AccountSubType

	// READ-ONLY; The type of customer.
	AccountType *AccountType

	// READ-ONLY; The type of agreement.
	AgreementType *AgreementType

	// READ-ONLY; Identifies the billing relationships represented by a billing account. The billing relationship may be between
	// Microsoft, the customer, and/or a third-party.
	BillingRelationshipTypes []*BillingRelationshipType

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Qualifications for pricing on a billing account. Values may be Commercial, Education, Charity or Government.
	Qualifications []*string
}

// AccountPropertiesEnrollmentDetails - The properties of an enrollment.
type AccountPropertiesEnrollmentDetails struct {
	// The end date of the enrollment.
	EndDate *time.Time

	// The properties of an enrollment which are applicable only for indirect enrollments.
	IndirectRelationshipInfo *EnrollmentDetailsIndirectRelationshipInfo

	// The purchase order number of the enrollment.
	PoNumber *string

	// The start date of the enrollment.
	StartDate *time.Time

	// READ-ONLY; The billing cycle for the enrollment.
	BillingCycle *string

	// READ-ONLY; The channel type of the enrollment.
	Channel *string

	// READ-ONLY; The cloud of the enrollment.
	Cloud *string

	// READ-ONLY; The country code of the enrollment.
	CountryCode *string

	// READ-ONLY; The billing currency for the enrollment.
	Currency *string

	// READ-ONLY; The billing account extension opted by the company.
	ExtendedTermOption *ExtendedTermOption

	// READ-ONLY; The contact who receives invoices of the enrollment.
	InvoiceRecipient *string

	// READ-ONLY; The language for the enrollment.
	Language *string

	// READ-ONLY; Markup status of enrollment, applicable only for indirect enrollments.
	MarkupStatus *MarkupStatus

	// READ-ONLY; The support coverage period for the enrollment.
	SupportCoverage *string

	// READ-ONLY; The support level offer associated with an enrollment.
	SupportLevel *SupportLevel
}

// AccountPropertiesRegistrationNumber - Describes the registration number of the organization linked with the billing account.
type AccountPropertiesRegistrationNumber struct {
	// The unique identification number of the organization linked with the billing account.
	ID *string

	// READ-ONLY; Identifies if the registration number is required for the billing account.
	Required *bool

	// READ-ONLY; The types of registration number allowed based on the country of the billing account.
	Type []*string
}

// AccountPropertiesSoldTo - The address of the individual or organization that is responsible for the billing account.
type AccountPropertiesSoldTo struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// AddressDetails - Address details.
type AddressDetails struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// AddressValidationResponse - Result of the address validation.
type AddressValidationResponse struct {
	// READ-ONLY; Status of the address validation.
	Status *AddressValidationStatus

	// READ-ONLY; The list of suggested addresses.
	SuggestedAddresses []*AddressDetails

	// READ-ONLY; Validation error message.
	ValidationMessage *string
}

// Agreement - An agreement.
type Agreement struct {
	// An agreement.
	Properties *AgreementProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AgreementListResult - Paged collection of Agreement items
type AgreementListResult struct {
	// READ-ONLY; The Agreement items on this page
	Value []*Agreement

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

// AgreementProperties - An agreement.
type AgreementProperties struct {
	// READ-ONLY; The mode of acceptance for an agreement.
	AcceptanceMode *AcceptanceMode

	// READ-ONLY; The URL to download the agreement.
	AgreementLink *string

	// READ-ONLY; The list of billing profiles associated with agreement and present only for specific agreements.
	BillingProfileInfo []*ProfileInfo

	// READ-ONLY; The category of the agreement.
	Category *Category

	// READ-ONLY; The name of the agreement signed by a customer.
	DisplayName *string

	// READ-ONLY; The date from which the agreement is effective.
	EffectiveDate *time.Time

	// READ-ONLY; The date when the agreement expires.
	ExpirationDate *time.Time

	// READ-ONLY; The ID of the lead billing account if this agreement is part of the Customer Affiliate Purchase Terms.
	LeadBillingAccountName *string

	// READ-ONLY; The list of participants that participates in acceptance of an agreement.
	Participants []*Participant

	// READ-ONLY; The current status of the agreement.
	Status *string
}

// Amount - The amount.
type Amount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// AppliedScopeProperties - Properties specific to applied scope type. Not required if not applicable.
type AppliedScopeProperties struct {
	// Display name
	DisplayName *string

	// Fully-qualified identifier of the management group where the benefit is applied.
	ManagementGroupID *string

	// Fully-qualified identifier of the resource group where the benefit is applied.
	ResourceGroupID *string

	// Fully-qualified identifier of the subscription where the benefit is applied.
	SubscriptionID *string

	// Tenant ID where the savings plan where the benefit is applied.
	TenantID *string
}

// AssociatedTenant - An associated tenant.
type AssociatedTenant struct {
	// An associated tenant.
	Properties *AssociatedTenantProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AssociatedTenantListResult - Paged collection of AssociatedTenant items
type AssociatedTenantListResult struct {
	// READ-ONLY; The AssociatedTenant items on this page
	Value []*AssociatedTenant

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

// AssociatedTenantProperties - An associated tenant.
type AssociatedTenantProperties struct {
	// The state determines whether users from the associated tenant can be assigned roles for commerce activities like viewing
	// and downloading invoices, managing payments, and making purchases.
	BillingManagementState *BillingManagementTenantState

	// The name of the associated tenant.
	DisplayName *string

	// The state determines whether subscriptions and licenses can be provisioned in the associated tenant. It can be set to 'Pending'
	// to initiate a billing request.
	ProvisioningManagementState *ProvisioningTenantState

	// The ID that uniquely identifies a tenant.
	TenantID *string

	// READ-ONLY; The unique identifier for the billing request that is created when enabling provisioning for an associated tenant.
	ProvisioningBillingRequestID *string

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// AvailableBalance - The Available Credit or Payment on Account Balance. The credit balance can be used to settle due or
// past due invoices.
type AvailableBalance struct {
	// The Available Credit or Payment on Account Balance. The credit balance can be used to settle due or past due invoices.
	Properties *AvailableBalanceProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// AvailableBalanceProperties - The Available Credit or Payment on Account Balance. The credit balance can be used to settle
// due or past due invoices.
type AvailableBalanceProperties struct {
	// Credit amount for immediate payment.
	Amount *AvailableBalancePropertiesAmount

	// Total amount of payments on accounts.
	TotalPaymentsOnAccount *AvailableBalancePropertiesTotalPaymentsOnAccount

	// READ-ONLY; The list of payments on accounts.
	PaymentsOnAccount []*PaymentOnAccount
}

// AvailableBalancePropertiesAmount - Credit amount for immediate payment.
type AvailableBalancePropertiesAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// AvailableBalancePropertiesTotalPaymentsOnAccount - Total amount of payments on accounts.
type AvailableBalancePropertiesTotalPaymentsOnAccount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// AzurePlan - Details of the Azure plan.
type AzurePlan struct {
	// The ID that uniquely identifies a product.
	ProductID *string

	// The sku description.
	SKUDescription *string

	// The ID that uniquely identifies a sku.
	SKUID *string
}

// Beneficiary - Details of the beneficiary.
type Beneficiary struct {
	// The ID that uniquely identifies a user in a tenant.
	ObjectID *string

	// The ID that uniquely identifies a tenant.
	TenantID *string
}

// CancelSubscriptionRequest - Request parameters for cancel customer subscription.
type CancelSubscriptionRequest struct {
	// REQUIRED; Cancellation reason.
	CancellationReason *CancellationReason

	// The fully qualified ID that uniquely identifies a customer.
	CustomerID *string
}

// CheckAccessRequest - Request to check access.
type CheckAccessRequest struct {
	// List of actions passed in the request body against which the permissions will be checked.
	Actions []*string
}

// CheckAccessResponse - The properties of a check access response.
type CheckAccessResponse struct {
	// READ-ONLY; Access Decision, specifies access is allowed or not.
	AccessDecision *AccessDecision

	// READ-ONLY; Gets or sets an action.
	Action *string
}

// Commitment towards the benefit.
type Commitment struct {
	Amount *float64

	// The ISO 4217 3-letter currency code for the currency used by this purchase record.
	CurrencyCode *string

	// Commitment grain.
	Grain *CommitmentGrain
}

// Customer - A partner's customer.
type Customer struct {
	// A partner's customer.
	Properties *CustomerProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// CustomerListResult - Paged collection of Customer items
type CustomerListResult struct {
	// READ-ONLY; The Customer items on this page
	Value []*Customer

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

// CustomerPolicy - A policy at customer scope.
type CustomerPolicy struct {
	// A policy at customer scope.
	Properties *CustomerPolicyProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// CustomerPolicyProperties - A policy at customer scope.
type CustomerPolicyProperties struct {
	// REQUIRED; The policy that controls whether the users in customer's organization can view charges at pay-as-you-go prices.
	ViewCharges *ViewChargesPolicy

	// List of all policies defined at the billing scope.
	Policies []*PolicySummary

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// CustomerProperties - A partner's customer.
type CustomerProperties struct {
	// Azure plans enabled for the customer.
	EnabledAzurePlans []*AzurePlan

	// The list of resellers for which an Azure plan is enabled for the customer.
	Resellers []*Reseller

	// Dictionary of metadata associated with the resource. Maximum key/value length supported of 256 characters. Keys/value should
	// not empty value nor null. Keys can not contain < > % & \ ? /
	Tags map[string]*string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// READ-ONLY; The name of the customer.
	DisplayName *string

	// READ-ONLY; Identifies the status of an customer. This is an upcoming property that will be populated in the future.
	Status *CustomerStatus

	// READ-ONLY; The system generated unique identifier for a customer.
	SystemID *string
}

// DeleteBillingProfileEligibilityDetail - Validation details of delete billing profile eligibility.
type DeleteBillingProfileEligibilityDetail struct {
	// Code of the delete invoice section eligibility response.
	Code *DeleteBillingProfileEligibilityCode

	// Validation message.
	Message *string
}

// DeleteBillingProfileEligibilityResult - Eligibility to delete a billing profile result.
type DeleteBillingProfileEligibilityResult struct {
	// Validation details of delete billing profile eligibility.
	EligibilityDetails []*DeleteBillingProfileEligibilityDetail

	// Status describing if billing profile is eligible to be deleted.
	EligibilityStatus *DeleteBillingProfileEligibilityStatus
}

// DeleteInvoiceSectionEligibilityDetail - The details of delete invoice section eligibility result.
type DeleteInvoiceSectionEligibilityDetail struct {
	// Code for the delete invoice section validation.
	Code *DeleteInvoiceSectionEligibilityCode

	// Validation message.
	Message *string
}

// DeleteInvoiceSectionEligibilityResult - Eligibility to delete an invoice section result.
type DeleteInvoiceSectionEligibilityResult struct {
	// A list of delete invoice section eligibility result details.
	EligibilityDetails []*DeleteInvoiceSectionEligibilityDetail

	// Status describing if invoice section is eligible to be deleted.
	EligibilityStatus *DeleteInvoiceSectionEligibilityStatus
}

// Department - Optional grouping of enrollment accounts to segment costs into logical groupings and set budgets.
type Department struct {
	// Optional grouping of enrollment accounts to segment costs into logical groupings and set budgets.
	Properties *DepartmentProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// DepartmentListResult - Paged collection of Department items
type DepartmentListResult struct {
	// READ-ONLY; The Department items on this page
	Value []*Department

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

// DepartmentProperties - Optional grouping of enrollment accounts to segment costs into logical groupings and set budgets.
type DepartmentProperties struct {
	// The cost center associated with the department.
	CostCenter *string

	// The name of the department.
	DisplayName *string

	// READ-ONLY; The ID that uniquely identifies the department.
	ID *string

	// READ-ONLY; The status of the department.
	Status *string
}

// DetailedTransferStatus - Detailed transfer status.
type DetailedTransferStatus struct {
	// Error details for transfer execution.
	ErrorDetails *TransferError

	// READ-ONLY; The ID of the product that is transferred.
	ProductID *string

	// READ-ONLY; The name of the product that is transferred.
	ProductName *string

	// READ-ONLY; Type of product that is transferred.
	ProductType *ProductType

	// READ-ONLY; The SKU of the product that is transferred.
	SKUDescription *string

	// READ-ONLY; Transfer status.
	TransferStatus *ProductTransferStatus
}

// DocumentDownloadRequest - A list of download details for individual documents.
type DocumentDownloadRequest struct {
	// The ID that uniquely identifies an invoice document. This ID may be an identifier for an invoice PDF, a credit note, or
	// a tax receipt. If omitted, the most recent invoice PDF for the invoice will be returned.
	DocumentName *string

	// The ID that uniquely identifies an invoice.
	InvoiceName *string
}

// DocumentDownloadResult - A secure URL that can be used to download a an entity until the URL expires.
type DocumentDownloadResult struct {
	// READ-ONLY; The time in UTC when the download URL will expire.
	ExpiryTime *string

	// READ-ONLY; The URL to the PDF or .zip file.
	URL *string
}

// EnrollmentAccount - It is an organizational hierarchy within a billing account to administer and manage azure costs.
type EnrollmentAccount struct {
	// It is an organizational hierarchy within a billing account to administer and manage azure costs.
	Properties *EnrollmentAccountProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// EnrollmentAccountListResult - Paged collection of EnrollmentAccount items
type EnrollmentAccountListResult struct {
	// READ-ONLY; The EnrollmentAccount items on this page
	Value []*EnrollmentAccount

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

// EnrollmentAccountProperties - It is an organizational hierarchy within a billing account to administer and manage azure
// costs.
type EnrollmentAccountProperties struct {
	// The cost center associated with the enrollment account.
	CostCenter *string

	// The name of the enrollment account.
	DisplayName *string

	// Boolean flag which enables subscribers to run development and testing workloads on Azure at special Dev/Test rates.
	IsDevTestEnabled *bool

	// READ-ONLY; The owner of the enrollment account.
	AccountOwner *string

	// READ-ONLY; The authorization type of the enrollment account.
	AuthType *string

	// READ-ONLY; The name of the department under which the enrollment account exists.
	DepartmentDisplayName *string

	// READ-ONLY; The ID that uniquely identifies the department.
	DepartmentID *string

	// READ-ONLY; The date of expiration of the enrollment account.
	EndDate *time.Time

	// READ-ONLY; The date from which the enrollment account became valid and functional.
	StartDate *time.Time

	// READ-ONLY; The status of the enrollment account.
	Status *string
}

// EnrollmentAccountSubscriptionDetails - The billing properties that can be modified. Available only for the Enterprise Agreement
// Type.
type EnrollmentAccountSubscriptionDetails struct {
	// READ-ONLY; The enrollment Account and the subscription association start date. This field is available only for the Enterprise
	// Agreement Type.
	EnrollmentAccountStartDate *time.Time

	// READ-ONLY; The current enrollment account status of the subscription. This field is available only for the Enterprise Agreement
	// Type.
	SubscriptionEnrollmentAccountStatus *SubscriptionEnrollmentAccountStatus
}

// EnrollmentDetailsIndirectRelationshipInfo - The properties of an enrollment which are applicable only for indirect enrollments.
type EnrollmentDetailsIndirectRelationshipInfo struct {
	// The billing account name of the partner or the customer for an indirect motion.
	BillingAccountName *string

	// The billing profile name of the partner or the customer for an indirect motion.
	BillingProfileName *string

	// The display name of the partner or customer for an indirect motion.
	DisplayName *string
}

// ExtendedStatusDefinitionProperties - Extended status definition properties
type ExtendedStatusDefinitionProperties struct {
	// Subscription Id
	SubscriptionID *string
}

// ExtendedStatusInfo - Extended status information
type ExtendedStatusInfo struct {
	// The message giving detailed information about the status code.
	Message *string

	// Properties specific to credit line check failure
	Properties *ExtendedStatusInfoProperties

	// Status code providing additional information.
	StatusCode *string
}

// ExtendedStatusInfoProperties - Properties specific to credit line check failure
type ExtendedStatusInfoProperties struct {
	// The subscription that has failed credit line check.
	SubscriptionID *string
}

// FailedPayment - A failed payment.
type FailedPayment struct {
	// READ-ONLY; The date when the payment was attempted.
	Date *time.Time

	// READ-ONLY; The reason that the payment failed.
	FailedPaymentReason *FailedPaymentReason
}

// InitiateTransferProperties - Request parameters to initiate transfer.
type InitiateTransferProperties struct {
	// The email ID of the recipient to whom the transfer request is sent.
	RecipientEmailID *string
}

// InitiateTransferRequest - Request parameters to initiate transfer.
type InitiateTransferRequest struct {
	// Request parameters to initiate transfer.
	Properties *InitiateTransferProperties
}

// Invoice - An invoice.
type Invoice struct {
	// An invoice.
	Properties *InvoiceProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// InvoiceDocument - The properties of a document.
type InvoiceDocument struct {
	// READ-ONLY; The document numbers for the invoice document.
	DocumentNumbers []*string

	// READ-ONLY; The URL to download the invoice document if the source is external to Microsoft.Billing.
	ExternalURL *string

	// READ-ONLY; The type of the document.
	Kind *InvoiceDocumentType

	// READ-ONLY; The ID that uniquely identifies an invoice document. This ID may be an identifier for an invoice PDF, a credit
	// note, or a tax receipt.
	Name *string

	// READ-ONLY; The source of the document. ENF for Brazil and DRS for rest of the world.
	Source *DocumentSource

	// READ-ONLY; The URL to download the invoice document if the source is internal to Microsoft.Billing.
	URL *string
}

// InvoiceListResult - Paged collection of Invoice items
type InvoiceListResult struct {
	// READ-ONLY; The Invoice items on this page
	Value []*Invoice

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

// InvoiceProperties - An invoice.
type InvoiceProperties struct {
	// The amount due as of now.
	AmountDue *InvoicePropertiesAmountDue

	// The amount of Azure prepayment applied to the charges. This field is applicable to billing accounts with agreement type
	// Microsoft Customer Agreement.
	AzurePrepaymentApplied *InvoicePropertiesAzurePrepaymentApplied

	// The total charges for the invoice billing period.
	BilledAmount *InvoicePropertiesBilledAmount

	// The total refund for returns and cancellations during the invoice billing period. This field is applicable to billing accounts
	// with agreement type Microsoft Customer Agreement.
	CreditAmount *InvoicePropertiesCreditAmount

	// The amount of free Azure credits applied to the charges. This field is applicable to billing accounts with agreement type
	// Microsoft Customer Agreement.
	FreeAzureCreditApplied *InvoicePropertiesFreeAzureCreditApplied

	// Rebill details for an invoice.
	RebillDetails *InvoicePropertiesRebillDetails

	// The details of a refund request.
	RefundDetails *InvoicePropertiesRefundDetails

	// The pre-tax amount due. This field is applicable to billing accounts with agreement type Microsoft Customer Agreement.
	SubTotal *InvoicePropertiesSubTotal

	// The amount of tax charged for the billing period. This field is applicable to billing accounts with agreement type Microsoft
	// Customer Agreement.
	TaxAmount *InvoicePropertiesTaxAmount

	// The amount due when the invoice was generated. This field is applicable to billing accounts with agreement type Microsoft
	// Customer Agreement.
	TotalAmount *InvoicePropertiesTotalAmount

	// READ-ONLY; The Id of the active invoice which is originally billed after this invoice was voided. This field is applicable
	// to the void invoices only.
	BilledDocumentID *string

	// READ-ONLY; The name of the billing profile for which the invoice is generated.
	BillingProfileDisplayName *string

	// READ-ONLY; The ID of the billing profile for which the invoice is generated.
	BillingProfileID *string

	// READ-ONLY; The Id of the invoice which got voided and this credit note was issued as a result. This field is applicable
	// to the credit notes only.
	CreditForDocumentID *string

	// READ-ONLY; The type of the document.
	DocumentType *InvoiceDocumentType

	// READ-ONLY; List of documents available to download and view such as invoice, credit note, or tax receipt.
	Documents []*InvoiceDocument

	// READ-ONLY; The due date for the invoice.
	DueDate *time.Time

	// READ-ONLY; List of failed payments.
	FailedPayments []*FailedPayment

	// READ-ONLY; The date when the invoice was generated.
	InvoiceDate *time.Time

	// READ-ONLY; The end date of the billing period for which the invoice is generated. The date is in MM-DD-YYYY format.
	InvoicePeriodEndDate *time.Time

	// READ-ONLY; The start date of the billing period for which the invoice is generated. The date is in MM-DD-YYYY format.
	InvoicePeriodStartDate *time.Time

	// READ-ONLY; Invoice type.
	InvoiceType *InvoiceType

	// READ-ONLY; Specifies if the invoice is generated as part of monthly invoicing cycle or not. This field is applicable to
	// billing accounts with agreement type Microsoft Customer Agreement.
	IsMonthlyInvoice *bool

	// READ-ONLY; List of payments.
	Payments []*Payment

	// READ-ONLY; An optional purchase order number for the invoice.
	PurchaseOrderNumber *string

	// READ-ONLY; Identifies the type of tax calculation used for the invoice. The field is applicable only to invoices with special
	// tax calculation logic.
	SpecialTaxationType *SpecialTaxationType

	// READ-ONLY; The current status of the invoice.
	Status *InvoiceStatus

	// READ-ONLY; The name of the billing subscription for which the invoice is generated.
	SubscriptionDisplayName *string

	// READ-ONLY; The ID of the subscription for which the invoice is generated.
	SubscriptionID *string
}

// InvoicePropertiesAmountDue - The amount due as of now.
type InvoicePropertiesAmountDue struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesAzurePrepaymentApplied - The amount of Azure prepayment applied to the charges. This field is applicable
// to billing accounts with agreement type Microsoft Customer Agreement.
type InvoicePropertiesAzurePrepaymentApplied struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesBilledAmount - The total charges for the invoice billing period.
type InvoicePropertiesBilledAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesCreditAmount - The total refund for returns and cancellations during the invoice billing period. This
// field is applicable to billing accounts with agreement type Microsoft Customer Agreement.
type InvoicePropertiesCreditAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesFreeAzureCreditApplied - The amount of free Azure credits applied to the charges. This field is applicable
// to billing accounts with agreement type Microsoft Customer Agreement.
type InvoicePropertiesFreeAzureCreditApplied struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesRebillDetails - Rebill details for an invoice.
type InvoicePropertiesRebillDetails struct {
	// READ-ONLY; The ID of credit note.
	CreditNoteDocumentID *string

	// READ-ONLY; The ID of invoice.
	InvoiceDocumentID *string

	// READ-ONLY; The rebill details of an invoice.
	RebillDetails *RebillDetails
}

// InvoicePropertiesRefundDetails - The details of a refund request.
type InvoicePropertiesRefundDetails struct {
	// The amount refunded.
	AmountRefunded *RefundDetailsSummaryAmountRefunded

	// The amount of refund requested.
	AmountRequested *RefundDetailsSummaryAmountRequested

	// READ-ONLY; Date when the refund was approved.
	ApprovedOn *time.Time

	// READ-ONLY; Date when the refund was completed.
	CompletedOn *time.Time

	// READ-ONLY; The invoice ID of the rebill invoice for a refund.
	RebillInvoiceID *string

	// READ-ONLY; The ID of refund operation.
	RefundOperationID *string

	// READ-ONLY; The reason for refund.
	RefundReason *RefundReasonCode

	// READ-ONLY; The status of refund request.
	RefundStatus *RefundStatus

	// READ-ONLY; Date when the refund was requested.
	RequestedOn *time.Time

	// READ-ONLY; The number of transactions refunded.
	TransactionCount *int32
}

// InvoicePropertiesSubTotal - The pre-tax amount due. This field is applicable to billing accounts with agreement type Microsoft
// Customer Agreement.
type InvoicePropertiesSubTotal struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesTaxAmount - The amount of tax charged for the billing period. This field is applicable to billing accounts
// with agreement type Microsoft Customer Agreement.
type InvoicePropertiesTaxAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoicePropertiesTotalAmount - The amount due when the invoice was generated. This field is applicable to billing accounts
// with agreement type Microsoft Customer Agreement.
type InvoicePropertiesTotalAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// InvoiceSection - An invoice section.
type InvoiceSection struct {
	// An invoice section.
	Properties *InvoiceSectionProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// InvoiceSectionListResult - Paged collection of InvoiceSection items
type InvoiceSectionListResult struct {
	// READ-ONLY; The InvoiceSection items on this page
	Value []*InvoiceSection

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

// InvoiceSectionProperties - An invoice section.
type InvoiceSectionProperties struct {
	// The name of the invoice section.
	DisplayName *string

	// Reason for the specified invoice section status.
	ReasonCode *InvoiceSectionStateReasonCode

	// Identifies the status of an invoice section.
	State *InvoiceSectionState

	// Dictionary of metadata associated with the resource. Maximum key/value length supported of 256 characters. Keys/value should
	// not empty value nor null. Keys can not contain < > % & \ ? /
	Tags map[string]*string

	// Identifies the cloud environments that are associated with an invoice section. This is a system managed optional field
	// and gets updated as the invoice section gets associated with accounts in various clouds.
	TargetCloud *string

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The system generated unique identifier for an invoice section.
	SystemID *string
}

// InvoiceSectionWithCreateSubPermission - Invoice section properties with create subscription permission.
type InvoiceSectionWithCreateSubPermission struct {
	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// READ-ONLY; The billing profile spending limit.
	BillingProfileSpendingLimit *SpendingLimit

	// READ-ONLY; The status of the billing profile.
	BillingProfileStatus *BillingProfileStatus

	// READ-ONLY; Reason for the specified billing profile status.
	BillingProfileStatusReasonCode *BillingProfileStatusReasonCode

	// READ-ONLY; The system generated unique identifier for a billing profile.
	BillingProfileSystemID *string

	// READ-ONLY; Enabled azure plans for the associated billing profile.
	EnabledAzurePlans []*AzurePlan

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// READ-ONLY; The system generated unique identifier for an invoice section.
	InvoiceSectionSystemID *string
}

// InvoiceSectionWithCreateSubPermissionListResult - A container for a list of resources
type InvoiceSectionWithCreateSubPermissionListResult struct {
	// READ-ONLY; The InvoiceSectionWithCreateSubPermission items on this page
	Value []*InvoiceSectionWithCreateSubPermission

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

// MoveBillingSubscriptionEligibilityResult - Result of the transfer eligibility validation.
type MoveBillingSubscriptionEligibilityResult struct {
	// Error details of the transfer eligibility validation.
	ErrorDetails *MoveBillingSubscriptionErrorDetails

	// READ-ONLY; Specifies whether the subscription is eligible to be transferred.
	IsMoveEligible *bool
}

// MoveBillingSubscriptionErrorDetails - Error details of the transfer eligibility validation.
type MoveBillingSubscriptionErrorDetails struct {
	// Error code of the transfer validation response.
	Code *SubscriptionTransferValidationErrorCode

	// Detailed error message explaining the error.
	Details *string

	// The error message.
	Message *string
}

// MoveBillingSubscriptionRequest - Request parameters to transfer billing subscription.
type MoveBillingSubscriptionRequest struct {
	// The destination enrollment account id.
	DestinationEnrollmentAccountID *string

	// The destination invoice section id.
	DestinationInvoiceSectionID *string
}

// MoveProductEligibilityResult - Result of the transfer eligibility validation.
type MoveProductEligibilityResult struct {
	// Error details of the transfer eligibility validation.
	ErrorDetails *MoveProductEligibilityResultErrorDetails

	// Specifies whether the subscription is eligible to be transferred.
	IsMoveEligible *bool
}

// MoveProductEligibilityResultErrorDetails - Error details of the transfer eligibility validation.
type MoveProductEligibilityResultErrorDetails struct {
	// READ-ONLY; Error code for the product transfer validation.
	Code *MoveValidationErrorCode

	// READ-ONLY; Error details of the transfer eligibility validation.
	Details *string

	// READ-ONLY; The error message.
	Message *string
}

// MoveProductRequest - The properties of the product to initiate a transfer.
type MoveProductRequest struct {
	// REQUIRED; The destination invoice section id.
	DestinationInvoiceSectionID *string
}

// NextBillingCycleDetails - Billing cycle details of the product.
type NextBillingCycleDetails struct {
	// READ-ONLY; Billing frequency of the product under the subscription.
	BillingFrequency *string
}

// Operation - Details of a REST API operation, returned from the Resource Provider Operations API.
type Operation struct {
	// Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for ARM/control-plane
	// operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action".
	Name *string
}

// OperationDisplay - Localized display information for this particular operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - Result of the request to list billing operations. It contains a list of operations and a URL link
// to get the next set of results.
type OperationListResult struct {
	// READ-ONLY; URL to get the next set of operation list results if there are any.
	NextLink *string

	// READ-ONLY; List of billing operations supported by the Microsoft.Billing resource provider.
	Value []*Operation
}

// Participant - Billing account name. Available for a specific type of agreement.
type Participant struct {
	// READ-ONLY; The email address of the participant.
	Email *string

	// READ-ONLY; The acceptance status of the participant.
	Status *string

	// READ-ONLY; The date when the status got changed.
	StatusDate *time.Time
}

// PartnerInitiateTransferProperties - Request parameters to initiate transfer.
type PartnerInitiateTransferProperties struct {
	// The email ID of the recipient to whom the transfer request is sent.
	RecipientEmailID *string

	// Optional MPN ID of the reseller for transfer requests that are sent from a Microsoft Partner Agreement billing account.
	ResellerID *string
}

// PartnerInitiateTransferRequest - Request parameters to initiate partner transfer.
type PartnerInitiateTransferRequest struct {
	// Request parameters to initiate partner transfer.
	Properties *PartnerInitiateTransferProperties
}

// PartnerTransferDetails - Details of the transfer.
type PartnerTransferDetails struct {
	// Details of the transfer.
	Properties *PartnerTransferProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// PartnerTransferDetailsListResult - Paged collection of PartnerTransferDetails items
type PartnerTransferDetailsListResult struct {
	// READ-ONLY; The PartnerTransferDetails items on this page
	Value []*PartnerTransferDetails

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

// PartnerTransferProperties - Transfer Details.
type PartnerTransferProperties struct {
	// READ-ONLY; The email ID of the user who canceled the transfer request.
	CanceledBy *string

	// READ-ONLY; Detailed transfer status.
	DetailedTransferStatus []*DetailedTransferStatus

	// READ-ONLY; The time at which the transfer request expires.
	ExpirationTime *time.Time

	// READ-ONLY; The type of customer who sent the transfer request.
	InitiatorCustomerType *InitiatorCustomerType

	// READ-ONLY; The email ID of the user who sent the transfer request.
	InitiatorEmailID *string

	// READ-ONLY; The email ID of the user to whom the transfer request was sent.
	RecipientEmailID *string

	// READ-ONLY; Optional MPN ID of the reseller for transfer requests that are sent from a Microsoft Partner Agreement billing
	// account.
	ResellerID *string

	// READ-ONLY; Optional name of the reseller for transfer requests that are sent from Microsoft Partner Agreement billing account.
	ResellerName *string

	// READ-ONLY; Overall transfer status.
	TransferStatus *TransferStatus
}

// Patch - The request for reservation patch
type Patch struct {
	// Properties for reservation patch
	Properties *PatchProperties

	// The sku information associated to this reservation
	SKU *ReservationSKUProperty

	// Tags for this reservation
	Tags map[string]*string
}

// PatchProperties - Properties for reservation patch
type PatchProperties struct {
	// Properties specific to applied scope type. Not required if not applicable. Required and need to provide tenantId and managementGroupId
	// if AppliedScopeType is ManagementGroup
	AppliedScopeProperties *ReservationAppliedScopeProperties

	// Type of the Applied Scope.
	AppliedScopeType *AppliedScopeType

	// Display name of the reservation
	DisplayName *string

	// Turning this on will apply the reservation discount to other VMs in the same VM size group. Only specify for VirtualMachines
	// reserved resource type.
	InstanceFlexibility *InstanceFlexibility

	// Setting this to true will automatically purchase a new benefit on the expiration date time.
	Renew           *bool
	RenewProperties *PatchPropertiesRenewProperties

	// This is the date-time when the Azure hybrid benefit needs to be reviewed.
	ReviewDateTime *time.Time
}

type PatchPropertiesRenewProperties struct {
	// The request for reservation purchase
	PurchaseProperties *ReservationPurchaseRequest
}

// Payment - An invoice payment.
type Payment struct {
	// The paid amount.
	Amount *PaymentAmount

	// READ-ONLY; The date when the payment was made.
	Date *time.Time

	// READ-ONLY; The family of payment method.
	PaymentMethodFamily *PaymentMethodFamily

	// READ-ONLY; The ID that uniquely identifies the payment method used for the invoice.
	PaymentMethodID *string

	// READ-ONLY; The type of payment method.
	PaymentMethodType *string

	// READ-ONLY; The type of payment.
	PaymentType *string
}

// PaymentAmount - The paid amount.
type PaymentAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// PaymentDetail - Information about payment related to a savings plan order.
type PaymentDetail struct {
	// Amount charged in Billing currency. Tax not included. Is null for future payments
	BillingCurrencyTotal *Price

	// Date when the payment needs to be done.
	DueDate *time.Time

	// Date when the transaction is completed. Null when it is scheduled.
	PaymentDate *time.Time

	// Amount in pricing currency. Tax not included.
	PricingCurrencyTotal *Price

	// Describes whether the payment is completed, failed, pending, cancelled or scheduled in the future.
	Status *PaymentStatus

	// READ-ONLY; Extended status information
	ExtendedStatusInfo *ExtendedStatusInfo
}

// PaymentMethod - A payment method.
type PaymentMethod struct {
	// Payment method properties
	Properties *PaymentMethodProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// PaymentMethodLink - A payment method link.
type PaymentMethodLink struct {
	// Payment method link properties
	Properties *PaymentMethodLinkProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// PaymentMethodLinkProperties - The properties of a payment method link.
type PaymentMethodLinkProperties struct {
	// Projection of a payment method. Will not be returned in this or future versions.
	PaymentMethod *PaymentMethodProperties

	// Id of payment method. Example: /providers/Microsoft.Billing/paymentMethods/ABCDABCDABC0
	PaymentMethodID *string

	// READ-ONLY; The account holder name for the payment method. This is only supported for payment methods with family CreditCard.
	AccountHolderName *string

	// READ-ONLY; The display name of the payment method.
	DisplayName *string

	// READ-ONLY; The expiration month and year of the payment method. This is only supported for payment methods with family
	// CreditCard.
	Expiration *string

	// READ-ONLY; The family of payment method.
	Family *PaymentMethodFamily

	// READ-ONLY; Last four digits of payment method.
	LastFourDigits *string

	// READ-ONLY; The list of logos for the payment method.
	Logos []*PaymentMethodLogo

	// READ-ONLY; The type of payment method.
	PaymentMethodType *string

	// READ-ONLY; Status of the payment method.
	Status *PaymentMethodStatus
}

// PaymentMethodLinksListResult - The response of a PaymentMethodLink list operation.
type PaymentMethodLinksListResult struct {
	// READ-ONLY; The PaymentMethodLink items on this page
	Value []*PaymentMethodLink

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

// PaymentMethodLogo - Logo of payment method.
type PaymentMethodLogo struct {
	// READ-ONLY; MIME type of the logo.
	MimeType *string

	// READ-ONLY; Public URL of image of the logo.
	URL *string
}

// PaymentMethodProperties - The properties of a payment method.
type PaymentMethodProperties struct {
	// The family of payment method.
	Family *PaymentMethodFamily

	// The list of logos for the payment method.
	Logos []*PaymentMethodLogo

	// Status of the payment method.
	Status *PaymentMethodStatus

	// READ-ONLY; The account holder name for the payment method. This is only supported for payment methods with family CreditCard.
	AccountHolderName *string

	// READ-ONLY; The display name of the payment method.
	DisplayName *string

	// READ-ONLY; The expiration month and year of the payment method. This is only supported for payment methods with family
	// CreditCard.
	Expiration *string

	// READ-ONLY; Id of payment method.
	ID *string

	// READ-ONLY; Last four digits of payment method.
	LastFourDigits *string

	// READ-ONLY; The type of payment method.
	PaymentMethodType *string
}

// PaymentMethodsListResult - The response of a PaymentMethod list operation.
type PaymentMethodsListResult struct {
	// READ-ONLY; The PaymentMethod items on this page
	Value []*PaymentMethod

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

// PaymentOnAccount - A Payment on Account.
type PaymentOnAccount struct {
	// Payment on Account amount.
	Amount *PaymentOnAccountAmount

	// READ-ONLY; The name of the billing profile for the payments on account.
	BillingProfileDisplayName *string

	// READ-ONLY; The ID of the billing profile for the payments on account.
	BillingProfileID *string

	// READ-ONLY; The date of the payments on account.
	Date *time.Time

	// READ-ONLY; The ID of the invoice for which the payments on account was generated.
	InvoiceID *string

	// READ-ONLY; The name of the invoice for the payments on account.
	InvoiceName *string

	// READ-ONLY; Payment on Account type.
	PaymentMethodType *PaymentMethodFamily
}

// PaymentOnAccountAmount - Payment on Account amount.
type PaymentOnAccountAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// PaymentTerm - The properties of payment term.
type PaymentTerm struct {
	// The date on when the defined 'Payment Term' will end and is always in UTC.
	EndDate *time.Time

	// The date on when the defined 'Payment Term' will be effective from and is always in UTC.
	StartDate *time.Time

	// Represents duration in netXX format. Always in days.
	Term *string

	// READ-ONLY; Indicates payment term is the standard payment term.
	IsDefault *bool
}

// PaymentTermsEligibilityDetail - Details of the payment terms eligibility.
type PaymentTermsEligibilityDetail struct {
	// Indicates the reason for the ineligibility of the payment terms.
	Code *PaymentTermsEligibilityCode

	// Indicates the message for the ineligibility of the payment terms.
	Message *string
}

// PaymentTermsEligibilityResult - Result of the payment terms eligibility.
type PaymentTermsEligibilityResult struct {
	// Details of the payment terms eligibility.
	EligibilityDetails []*PaymentTermsEligibilityDetail

	// Indicates the eligibility status of the payment terms.
	EligibilityStatus *PaymentTermsEligibilityStatus
}

// Permission - The set of allowed action and not allowed actions a caller has on a resource.
type Permission struct {
	// READ-ONLY; The set of actions that the caller is allowed to perform.
	Actions []*string

	// READ-ONLY; The set of actions that the caller is not allowed to perform.
	NotActions []*string
}

// PermissionListResult - A container for a list of resources
type PermissionListResult struct {
	// READ-ONLY; The BillingPermission items on this page
	Value []*Permission

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

// PlanInformation - Information describing the type of billing plan for this savings plan.
type PlanInformation struct {
	// For recurring billing plans, indicates the date when next payment will be processed. Null when total is paid off.
	NextPaymentDueDate *time.Time

	// Amount of money to be paid for the Order. Tax is not included.
	PricingCurrencyTotal *Price

	// Date when the billing plan has started.
	StartDate    *time.Time
	Transactions []*PaymentDetail
}

// PolicySummary - The summary of the policy.
type PolicySummary struct {
	// The name of the policy.
	Name *string

	// The type of the policy.
	PolicyType *PolicyType

	// The scope at which the policy is defined.
	Scope *string

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

// Price - The price.
type Price struct {
	Amount *float64

	// The ISO 4217 3-letter currency code for the currency used by this purchase record.
	CurrencyCode *string
}

// Principal - A principal who has interacted with a billing entity.
type Principal struct {
	// The object id of the principal who has interacted with a billing entity.
	ObjectID *string

	// The tenant id of the principal who has interacted with a billing entity.
	TenantID *string

	// The user principal name of the principal who has interacted with a billing entity.
	Upn *string
}

// Product - A product.
type Product struct {
	// A product.
	Properties *ProductProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// ProductDetails - Details of the product that is transferred.
type ProductDetails struct {
	// The ID of the product that is transferred.
	ProductID *string

	// Type of the product that is transferred.
	ProductType *ProductType
}

// ProductListResult - Paged collection of Product items
type ProductListResult struct {
	// READ-ONLY; The Product items on this page
	Value []*Product

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

// ProductPatch - A product.
type ProductPatch struct {
	// A product.
	Properties *ProductProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// ProductProperties - A product.
type ProductProperties struct {
	// Indicates whether auto renewal is turned on or off for a product.
	AutoRenew *AutoRenew

	// The last month charges.
	LastCharge *ProductPropertiesLastCharge

	// Reseller for this product. The fields is not available for Microsoft Partner Agreement products.
	Reseller *ProductPropertiesReseller

	// READ-ONLY; The availability of the product.
	AvailabilityID *string

	// READ-ONLY; The frequency at which the product will be billed.
	BillingFrequency *string

	// READ-ONLY; The name of the billing profile to which the product is billed.
	BillingProfileDisplayName *string

	// READ-ONLY; The ID of the billing profile to which the product is billed.
	BillingProfileID *string

	// READ-ONLY; The name of the customer for whom the product was purchased. The field is applicable only for Microsoft Partner
	// Agreement billing account.
	CustomerDisplayName *string

	// READ-ONLY; The ID of the customer for whom the product was purchased. The field is applicable only for Microsoft Partner
	// Agreement billing account.
	CustomerID *string

	// READ-ONLY; The display name of the product.
	DisplayName *string

	// READ-ONLY; The date when the product will be renewed or canceled.
	EndDate *string

	// READ-ONLY; The name of the invoice section to which the product is billed.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The ID of the invoice section to which the product is billed.
	InvoiceSectionID *string

	// READ-ONLY; The date of the last charge.
	LastChargeDate *string

	// READ-ONLY; The description of the type of product.
	ProductType *string

	// READ-ONLY; The ID of the type of product.
	ProductTypeID *string

	// READ-ONLY; The date when the product was purchased.
	PurchaseDate *string

	// READ-ONLY; The quantity purchased for the product.
	Quantity *int64

	// READ-ONLY; The sku description of the product.
	SKUDescription *string

	// READ-ONLY; The sku ID of the product.
	SKUID *string

	// READ-ONLY; The status of the product.
	Status *ProductStatus

	// READ-ONLY; The id of the tenant in which the product is used.
	TenantID *string
}

// ProductPropertiesLastCharge - The last month charges.
type ProductPropertiesLastCharge struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// ProductPropertiesReseller - Reseller for this product. The fields is not available for Microsoft Partner Agreement products.
type ProductPropertiesReseller struct {
	// READ-ONLY; The name of the reseller.
	Description *string

	// READ-ONLY; The MPN ID of the reseller.
	ResellerID *string
}

// Profile - A billing profile.
type Profile struct {
	// A billing profile.
	Properties *ProfileProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// ProfileInfo - Details about billing profile associated with agreement and available only for specific agreements.
type ProfileInfo struct {
	// The fully qualified ID that uniquely identifies a billing account.
	BillingAccountID *string

	// The name of the billing profile.
	BillingProfileDisplayName *string

	// The friendly ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileSystemID *string

	// Billing account name. Available for a specific type of agreement.
	IndirectRelationshipOrganizationName *string
}

// ProfileListResult - Paged collection of BillingProfile items
type ProfileListResult struct {
	// READ-ONLY; The BillingProfile items on this page
	Value []*Profile

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

// ProfilePolicy - A policy at billing profile scope.
type ProfilePolicy struct {
	// A policy at billing profile scope.
	Properties *ProfilePolicyProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// ProfilePolicyProperties - A policy at billing profile scope.
type ProfilePolicyProperties struct {
	// The policies for Enterprise Agreement enrollments.
	EnterpriseAgreementPolicies *ProfilePolicyPropertiesEnterpriseAgreementPolicies

	// The policy that controls invoice section label management at invoice section scope. This is allowed by default.
	InvoiceSectionLabelManagement *InvoiceSectionLabelManagementPolicy

	// The policy that controls whether Azure marketplace purchases are allowed.
	MarketplacePurchases *MarketplacePurchasesPolicy

	// List of all policies defined at the billing scope.
	Policies []*PolicySummary

	// The policy that controls whether Azure reservation purchases are allowed.
	ReservationPurchases *ReservationPurchasesPolicy

	// The policy that controls whether users with Azure savings plan purchase are allowed.
	SavingsPlanPurchases *SavingsPlanPurchasesPolicy

	// The policy that controls whether the users in customer's organization can view charges at pay-as-you-go prices.
	ViewCharges *ViewChargesPolicy

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// ProfilePolicyPropertiesEnterpriseAgreementPolicies - The policies for Enterprise Agreement enrollments.
type ProfilePolicyPropertiesEnterpriseAgreementPolicies struct {
	// The policy that controls whether account owner can view charges.
	AccountOwnerViewCharges *EnrollmentAccountOwnerViewCharges

	// The state showing the enrollment auth level.
	AuthenticationType *EnrollmentAuthLevelState

	// The policy that controls whether department admin can view charges.
	DepartmentAdminViewCharges *EnrollmentDepartmentAdminViewCharges
}

// ProfileProperties - A billing profile.
type ProfileProperties struct {
	// Billing address.
	BillTo *ProfilePropertiesBillTo

	// The current payment term of the billing profile.
	CurrentPaymentTerm *ProfilePropertiesCurrentPaymentTerm

	// The name of the billing profile.
	DisplayName *string

	// Information about the enabled azure plans.
	EnabledAzurePlans []*AzurePlan

	// Identifies the billing profile that is linked to another billing profile in indirect purchase motion.
	IndirectRelationshipInfo *ProfilePropertiesIndirectRelationshipInfo

	// Flag controlling whether the invoices for the billing profile are sent through email.
	InvoiceEmailOptIn *bool

	// The list of email addresses to receive invoices by email for the billing profile.
	InvoiceRecipients []*string

	// The default purchase order number that will appear on the invoices generated for the billing profile.
	PoNumber *string

	// The default address where the products are shipped, or the services are being used. If a ship to is not specified for a
	// product or a subscription, then this address will be used.
	ShipTo *ProfilePropertiesShipTo

	// The address of the individual or organization that is responsible for the billing account.
	SoldTo *ProfilePropertiesSoldTo

	// Dictionary of metadata associated with the resource. Maximum key/value length supported of 256 characters. Keys/value should
	// not empty value nor null. Keys can not contain < > % & \ ? /
	Tags map[string]*string

	// READ-ONLY; Identifies the billing relationship represented by the billing profile. The billing relationship may be between
	// Microsoft, the customer, and/or a third-party.
	BillingRelationshipType *BillingRelationshipType

	// READ-ONLY; The currency in which the charges for the billing profile are billed.
	Currency *string

	// READ-ONLY; Indicates whether user has read access to the billing profile.
	HasReadAccess *bool

	// READ-ONLY; The day of the month when the invoice for the billing profile is generated.
	InvoiceDay *int32

	// READ-ONLY; The other payment terms of the billing profile.
	OtherPaymentTerms []*PaymentTerm

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The billing profile spending limit.
	SpendingLimit *SpendingLimit

	// READ-ONLY; The details of billing profile spending limit.
	SpendingLimitDetails []*SpendingLimitDetails

	// READ-ONLY; The status of the billing profile.
	Status *BillingProfileStatus

	// READ-ONLY; Reason for the specified billing profile status.
	StatusReasonCode *BillingProfileStatusReasonCode

	// READ-ONLY; The system generated unique identifier for a billing profile.
	SystemID *string

	// READ-ONLY; Identifies the cloud environments that are associated with a billing profile. This is a system managed optional
	// field and gets updated as the billing profile gets associated with accounts in various clouds.
	TargetClouds []*string
}

// ProfilePropertiesBillTo - Billing address.
type ProfilePropertiesBillTo struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// ProfilePropertiesCurrentPaymentTerm - The current payment term of the billing profile.
type ProfilePropertiesCurrentPaymentTerm struct {
	// The date on when the defined 'Payment Term' will end and is always in UTC.
	EndDate *time.Time

	// The date on when the defined 'Payment Term' will be effective from and is always in UTC.
	StartDate *time.Time

	// Represents duration in netXX format. Always in days.
	Term *string

	// READ-ONLY; Indicates payment term is the standard payment term.
	IsDefault *bool
}

// ProfilePropertiesIndirectRelationshipInfo - Identifies the billing profile that is linked to another billing profile in
// indirect purchase motion.
type ProfilePropertiesIndirectRelationshipInfo struct {
	// The billing account name of the partner or the customer for an indirect motion.
	BillingAccountName *string

	// The billing profile name of the partner or the customer for an indirect motion.
	BillingProfileName *string

	// The display name of the partner or customer for an indirect motion.
	DisplayName *string
}

// ProfilePropertiesShipTo - The default address where the products are shipped, or the services are being used. If a ship
// to is not specified for a product or a subscription, then this address will be used.
type ProfilePropertiesShipTo struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// ProfilePropertiesSoldTo - The address of the individual or organization that is responsible for the billing account.
type ProfilePropertiesSoldTo struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// Property - A billing property.
type Property struct {
	// A billing property.
	Properties *PropertyProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// PropertyProperties - A billing property.
type PropertyProperties struct {
	// The cost center applied to the subscription. Available for agreement type Microsoft Customer Agreement and Microsoft Partner
	// Agreement. This property can be updated via patch.
	CostCenter *string

	// The enrollment details for the subscription. Available for billing accounts with agreement type Enterprise Agreement.
	EnrollmentDetails *PropertyPropertiesEnrollmentDetails

	// The address of the individual or organization where service subscription is being used. Available for agreement type Microsoft
	// Online Services Program. This property can be updated via patch.
	SubscriptionServiceUsageAddress *PropertyPropertiesSubscriptionServiceUsageAddress

	// READ-ONLY; Notification email address for legacy account. Available for agreement type Microsoft Online Services Program.
	AccountAdminNotificationEmailAddress *string

	// READ-ONLY; The type of agreement.
	BillingAccountAgreementType *AgreementType

	// READ-ONLY; The name of the billing account.
	BillingAccountDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing account.
	BillingAccountID *string

	// READ-ONLY; The country of the individual or organization that is responsible for the billing account.
	BillingAccountSoldToCountry *string

	// READ-ONLY; The current status of the billing account.
	BillingAccountStatus *AccountStatus

	// READ-ONLY; Reason for the specified billing account status.
	BillingAccountStatusReasonCode *BillingAccountStatusReasonCode

	// READ-ONLY; The tier of the account.
	BillingAccountSubType *AccountSubType

	// READ-ONLY; The type of customer.
	BillingAccountType *AccountType

	// READ-ONLY; The billing currency for the subscription. Available for billing accounts with agreement type Enterprise Agreement
	BillingCurrency *string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// READ-ONLY; The payment method family of the primary payment method for the billing profile.
	BillingProfilePaymentMethodFamily *PaymentMethodFamily

	// READ-ONLY; The payment method type of the primary payment method for the billing profile.
	BillingProfilePaymentMethodType *string

	// READ-ONLY; The billing profile spending limit.
	BillingProfileSpendingLimit *SpendingLimit

	// READ-ONLY; The details of billing profile spending limit.
	BillingProfileSpendingLimitDetails []*SpendingLimitDetails

	// READ-ONLY; The status of the billing profile.
	BillingProfileStatus *BillingProfileStatus

	// READ-ONLY; Reason for the specified billing profile status.
	BillingProfileStatusReasonCode *BillingProfileStatusReasonCode

	// READ-ONLY; The Azure AD tenant ID of the billing account for the subscription.
	BillingTenantID *string

	// READ-ONLY; The name of the customer.
	CustomerDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// READ-ONLY; Identifies the status of an customer. This is an upcoming property that will be populated in the future.
	CustomerStatus *CustomerStatus

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// READ-ONLY; Identifies the status of an invoice section.
	InvoiceSectionStatus *InvoiceSectionState

	// READ-ONLY; Reason for the specified invoice section status.
	InvoiceSectionStatusReasonCode *InvoiceSectionStateReasonCode

	// READ-ONLY; Indicates whether user is the account admin.
	IsAccountAdmin *bool

	// READ-ONLY; Specifies if the billing account for the subscription is transitioned from a Microsoft Online Service Program
	// to a Microsoft Customer Agreement (MCA) account. Will be present and value will be true if its a transitioned billing account.
	IsTransitionedBillingAccount *bool

	// READ-ONLY; The ID that uniquely identifies a product.
	ProductID *string

	// READ-ONLY; The ID that uniquely identifies a product.
	ProductName *string

	// READ-ONLY; The sku description.
	SKUDescription *string

	// READ-ONLY; The ID that uniquely identifies a sku.
	SKUID *string

	// READ-ONLY; The subscription status.
	SubscriptionBillingStatus *BillingSubscriptionStatus

	// READ-ONLY; The reason codes for the subscription status.
	SubscriptionBillingStatusDetails []*SubscriptionStatusDetails

	// READ-ONLY; The type of billing subscription.
	SubscriptionBillingType *SubscriptionBillingType

	// READ-ONLY; The Azure workload type of the subscription.
	SubscriptionWorkloadType *SubscriptionWorkloadType
}

// PropertyPropertiesEnrollmentDetails - The enrollment details for the subscription. Available for billing accounts with
// agreement type Enterprise Agreement.
type PropertyPropertiesEnrollmentDetails struct {
	// The name of the department
	DepartmentDisplayName *string

	// The ID that uniquely identifies the department.
	DepartmentID *string

	// The name of the enrollment account.
	EnrollmentAccountDisplayName *string

	// The ID that uniquely identifies an enrollment account.
	EnrollmentAccountID *string

	// The status of the enrollment account.
	EnrollmentAccountStatus *string
}

// PropertyPropertiesSubscriptionServiceUsageAddress - The address of the individual or organization where service subscription
// is being used. Available for agreement type Microsoft Online Services Program. This property can be updated via patch.
type PropertyPropertiesSubscriptionServiceUsageAddress struct {
	// REQUIRED; Address line 1.
	AddressLine1 *string

	// REQUIRED; Country code uses ISO 3166-1 Alpha-2 format.
	Country *string

	// Address line 2.
	AddressLine2 *string

	// Address line 3.
	AddressLine3 *string

	// Address city.
	City *string

	// Company name. Optional for MCA Individual (Pay-as-you-go).
	CompanyName *string

	// Address district.
	District *string

	// Email address.
	Email *string

	// First name. Optional for MCA Enterprise.
	FirstName *string

	// Indicates if the address is incomplete.
	IsValidAddress *bool

	// Last name. Optional for MCA Enterprise.
	LastName *string

	// Middle name.
	MiddleName *string

	// Phone number.
	PhoneNumber *string

	// Postal code.
	PostalCode *string

	// Address region.
	Region *string
}

// PurchaseRequest - Purchase request.
type PurchaseRequest struct {
	// Purchase request properties.
	Properties *PurchaseRequestProperties

	// The SKU to be applied for this resource
	SKU *SKU
}

// PurchaseRequestProperties - Purchase request properties.
type PurchaseRequestProperties struct {
	// Properties specific to applied scope type. Not required if not applicable.
	AppliedScopeProperties *AppliedScopeProperties

	// Type of the Applied Scope.
	AppliedScopeType *AppliedScopeType

	// Represents the billing plan in ISO 8601 format. Required only for monthly purchases.
	BillingPlan *BillingPlan

	// Subscription that will be charged for purchasing SavingsPlan
	BillingScopeID *string

	// Commitment towards the benefit.
	Commitment *Commitment

	// Friendly name of the savings plan
	DisplayName *string

	// Setting this to true will automatically purchase a new benefit on the expiration date time.
	Renew *bool

	// Represents the Savings plan term in ISO 8601 format.
	Term *SavingsPlanTerm
}

// RebillDetails - The rebill details of an invoice.
type RebillDetails struct {
	// READ-ONLY; The ID of credit note.
	CreditNoteDocumentID *string

	// READ-ONLY; The ID of invoice.
	InvoiceDocumentID *string

	// READ-ONLY; The rebill details of an invoice.
	RebillDetails *RebillDetails
}

// RecipientTransferDetails - Details of the transfer.
type RecipientTransferDetails struct {
	// Details of the transfer.
	Properties *RecipientTransferProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// RecipientTransferDetailsListResult - Paged collection of RecipientTransferDetails items
type RecipientTransferDetailsListResult struct {
	// READ-ONLY; The RecipientTransferDetails items on this page
	Value []*RecipientTransferDetails

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

// RecipientTransferProperties - Transfer Details.
type RecipientTransferProperties struct {
	// READ-ONLY; Type of subscriptions that can be transferred.
	AllowedProductType []*EligibleProductType

	// READ-ONLY; The email ID of the user who canceled the transfer request.
	CanceledBy *string

	// READ-ONLY; The customer tenant id.
	CustomerTenantID *string

	// READ-ONLY; Detailed transfer status.
	DetailedTransferStatus []*DetailedTransferStatus

	// READ-ONLY; The time at which the transfer request expires.
	ExpirationTime *time.Time

	// READ-ONLY; The type of customer who sent the transfer request.
	InitiatorCustomerType *InitiatorCustomerType

	// READ-ONLY; The email ID of the user who sent the transfer request.
	InitiatorEmailID *string

	// READ-ONLY; The email ID of the user to whom the transfer request was sent.
	RecipientEmailID *string

	// READ-ONLY; Optional MPN ID of the reseller for transfer requests that are sent from a Microsoft Partner Agreement billing
	// account.
	ResellerID *string

	// READ-ONLY; Optional name of the reseller for transfer requests that are sent from Microsoft Partner Agreement billing account.
	ResellerName *string

	// READ-ONLY; List of supported account types.
	SupportedAccounts []*SupportedAccountType

	// READ-ONLY; Overall transfer status.
	TransferStatus *TransferStatus
}

// RefundDetailsSummaryAmountRefunded - The amount refunded.
type RefundDetailsSummaryAmountRefunded struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// RefundDetailsSummaryAmountRequested - The amount of refund requested.
type RefundDetailsSummaryAmountRequested struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// RefundTransactionDetailsAmountRefunded - The amount refunded.
type RefundTransactionDetailsAmountRefunded struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// RefundTransactionDetailsAmountRequested - The amount of refund requested.
type RefundTransactionDetailsAmountRequested struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// RenewProperties - Properties specific to renew.
type RenewProperties struct {
	// Purchase request.
	PurchaseProperties *PurchaseRequest
}

// RenewPropertiesResponse - The renew properties for a reservation.
type RenewPropertiesResponse struct {
	// Currency and amount that customer will be charged in customer's local currency for renewal purchase. Tax is not included.
	BillingCurrencyTotal *Price

	// Amount that Microsoft uses for record. Used during refund for calculating refund limit. Tax is not included. This is locked
	// price 30 days before expiry.
	PricingCurrencyTotal *Price

	// The request for reservation purchase
	PurchaseProperties *ReservationPurchaseRequest
}

// RenewalTermDetails - Details for the next renewal term of a subscription.
type RenewalTermDetails struct {
	// The quantity of licenses or fulfillment units for the subscription.
	Quantity *int64

	// READ-ONLY; The billing frequency in ISO8601 format of product in the subscription. Example: P1M, P3M, P1Y
	BillingFrequency *string

	// READ-ONLY; Id of the product for which the subscription is purchased.
	ProductID *string

	// READ-ONLY; Type Id of the product for which the subscription is purchased.
	ProductTypeID *string

	// READ-ONLY; The SKU ID of the product for which the subscription is purchased. This field is is only available for Microsoft
	// Customer Agreement billing accounts.
	SKUID *string

	// READ-ONLY; The duration in ISO8601 format for which you can use the subscription. Example: P1M, P3M, P1Y
	TermDuration *string

	// READ-ONLY; End date of the term in UTC time.
	TermEndDate *time.Time
}

// Request - A request submitted by a user to manage billing. Users with an owner role on the scope can approve or decline
// these requests.
type Request struct {
	// A request submitted by a user to manage billing. Users with an owner role on the scope can approve or decline these requests.
	Properties *RequestProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// RequestListResult - Paged collection of BillingRequest items
type RequestListResult struct {
	// READ-ONLY; The BillingRequest items on this page
	Value []*Request

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

// RequestProperties - A request submitted by a user to manage billing. Users with an owner role on the scope can approve
// or decline these requests.
type RequestProperties struct {
	// Additional information for the billing request.
	AdditionalInformation map[string]*string

	// The principal of the entity who created the request.
	CreatedBy *RequestPropertiesCreatedBy

	// The reason to approve or decline the request.
	DecisionReason *string

	// Justification for submitting request.
	Justification *string

	// The principal of the entity who last updated the request.
	LastUpdatedBy *RequestPropertiesLastUpdatedBy

	// The recipients of the billing request.
	Recipients []*Principal

	// The billing scope for which the request was submitted (ex. '/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}').
	RequestScope *string

	// The principal of the request reviewer. Will only be set if request is approved.
	ReviewedBy *RequestPropertiesReviewedBy

	// Status of billing request.
	Status *BillingRequestStatus

	// Type of billing request.
	Type *BillingRequestType

	// READ-ONLY; The name of the billing account.
	BillingAccountDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing account.
	BillingAccountID *string

	// READ-ONLY; The ID that uniquely identifies a billing account.
	BillingAccountName *string

	// READ-ONLY; The primary tenant ID of the billing account for which the billing request was submitted.
	BillingAccountPrimaryBillingTenantID *string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// READ-ONLY; The ID that uniquely identifies a billing profile.
	BillingProfileName *string

	// READ-ONLY; The billing scope for which the request will be applied. This is a read only property derived by the service.
	BillingScope *string

	// READ-ONLY; The date and time when the request was created.
	CreationDate *time.Time

	// READ-ONLY; The name of the customer.
	CustomerDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// READ-ONLY; The ID that uniquely identifies a customer.
	CustomerName *string

	// READ-ONLY; The date and time when the request expires.
	ExpirationDate *time.Time

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// READ-ONLY; The ID that uniquely identifies an invoice section.
	InvoiceSectionName *string

	// READ-ONLY; Date and time of last update.
	LastUpdatedDate *time.Time

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The date and time when the request was reviewed.
	ReviewalDate *time.Time

	// READ-ONLY; The name of the billing subscription.
	SubscriptionDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing subscription.
	SubscriptionID *string

	// READ-ONLY; The ID that uniquely identifies a billing subscription.
	SubscriptionName *string
}

// RequestPropertiesCreatedBy - The principal of the entity who created the request.
type RequestPropertiesCreatedBy struct {
	// The object id of the principal who has interacted with a billing entity.
	ObjectID *string

	// The tenant id of the principal who has interacted with a billing entity.
	TenantID *string

	// The user principal name of the principal who has interacted with a billing entity.
	Upn *string
}

// RequestPropertiesLastUpdatedBy - The principal of the entity who last updated the request.
type RequestPropertiesLastUpdatedBy struct {
	// The object id of the principal who has interacted with a billing entity.
	ObjectID *string

	// The tenant id of the principal who has interacted with a billing entity.
	TenantID *string

	// The user principal name of the principal who has interacted with a billing entity.
	Upn *string
}

// RequestPropertiesReviewedBy - The principal of the request reviewer. Will only be set if request is approved.
type RequestPropertiesReviewedBy struct {
	// The object id of the principal who has interacted with a billing entity.
	ObjectID *string

	// The tenant id of the principal who has interacted with a billing entity.
	TenantID *string

	// The user principal name of the principal who has interacted with a billing entity.
	Upn *string
}

// Reseller - Details of the reseller.
type Reseller struct {
	// READ-ONLY; The name of the reseller.
	Description *string

	// READ-ONLY; The MPN ID of the reseller.
	ResellerID *string
}

// Reservation - The definition of the reservation.
type Reservation struct {
	Etag *int32

	// The location of the reservation.
	Location *string

	// The properties associated to this reservation
	Properties *ReservationProperty

	// The sku information associated to this reservation
	SKU *ReservationSKUProperty

	// Tags for this reservation
	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
}

// ReservationAppliedScopeProperties - Properties specific to applied scope type. Not required if not applicable. Required
// and need to provide tenantId and managementGroupId if AppliedScopeType is ManagementGroup
type ReservationAppliedScopeProperties struct {
	// Display name
	DisplayName *string

	// Fully-qualified identifier of the management group where the benefit must be applied.
	ManagementGroupID *string

	// Fully-qualified identifier of the resource group.
	ResourceGroupID *string

	// Fully-qualified identifier of the subscription.
	SubscriptionID *string

	// Tenant ID where the reservation should apply benefit.
	TenantID *string
}

// ReservationExtendedStatusInfo - Extended status information for the reservation.
type ReservationExtendedStatusInfo struct {
	// The message giving detailed information about the status code.
	Message *string

	// Properties for extended status information
	Properties *ExtendedStatusDefinitionProperties

	// The status of the reservation.
	StatusCode *ReservationStatusCode
}

// ReservationList - List of `Reservations`
type ReservationList struct {
	// REQUIRED; The Reservation items on this page
	Value []*Reservation

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

// ReservationMergeProperties - Properties of reservation merge
type ReservationMergeProperties struct {
	// Reservation resource id Created due to the merge. Format of the resource id is /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	MergeDestination *string

	// Resource ids of the source reservation's merged to form this reservation. Format of the resource id is /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	MergeSources []*string
}

// ReservationOrder - Details of a reservation order being returned.
type ReservationOrder struct {
	Etag *int32

	// The properties associated to this reservation order
	Properties *ReservationOrderProperty

	// Tags for this reservation
	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
}

// ReservationOrderBillingPlanInformation - Information describing the type of billing plan for this reservation order.
type ReservationOrderBillingPlanInformation struct {
	// For recurring billing plans, indicates the date when next payment will be processed. Null when total is paid off.
	NextPaymentDueDate *time.Time

	// Amount of money to be paid for the Order. Tax is not included.
	PricingCurrencyTotal *Price

	// Date when the billing plan has started.
	StartDate    *time.Time
	Transactions []*ReservationPaymentDetail
}

// ReservationOrderList - List of ReservationOrders
type ReservationOrderList struct {
	// REQUIRED; The ReservationOrder items on this page
	Value []*ReservationOrder

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

// ReservationOrderProperty - Properties of a reservation order.
type ReservationOrderProperty struct {
	// This is the DateTime when the reservation benefit started.
	BenefitStartTime *time.Time

	// Billing account Id associated to this reservation order.
	BillingAccountID *string

	// Represent the billing plans.
	BillingPlan *ReservationBillingPlan

	// Billing profile Id associated to this reservation order.
	BillingProfileID *string

	// This is the DateTime when the reservation order was created.
	CreatedDateTime *time.Time

	// Fully-qualified identifier of the customerId where the benefit is applied. Present only for Enterprise Agreement PartnerLed
	// customers.
	CustomerID *string

	// Friendly name for user to easily identified the reservation order.
	DisplayName *string

	// Enrollment id of the reservation order.
	EnrollmentID *string

	// This is the date when the reservation order will expire.
	ExpiryDate *time.Time

	// This is the date-time when the reservation order will expire.
	ExpiryDateTime *time.Time

	// Extended status information for the reservation.
	ExtendedStatusInfo *ReservationExtendedStatusInfo

	// Total original quantity of the skus purchased in the reservation order.
	OriginalQuantity *int32

	// Information describing the type of billing plan for this reservation order.
	PlanInformation *ReservationOrderBillingPlanInformation

	// Represents UPN
	ProductCode *string

	// This is the DateTime when the reservation order was initially requested for purchase.
	RequestDateTime *time.Time
	Reservations    []*Reservation

	// This is the date-time when the Azure Hybrid Benefit needs to be reviewed.
	ReviewDateTime *time.Time

	// READ-ONLY; The provisioning state of the reservation, e.g. Succeeded
	ProvisioningState *string

	// READ-ONLY; The term of the reservation, e.g. P1Y
	Term *string
}

// ReservationPaymentDetail - Information about payment related to a reservation order.
type ReservationPaymentDetail struct {
	// Shows the Account that is charged for this payment.
	BillingAccount *string

	// Amount charged in Billing currency. Tax not included. Is null for future payments
	BillingCurrencyTotal *Price

	// Date when the payment needs to be done.
	DueDate *time.Time

	// Extended status information for the reservation.
	ExtendedStatusInfo *ReservationExtendedStatusInfo

	// Date when the transaction is completed. Is null when it is scheduled.
	PaymentDate *time.Time

	// Amount in pricing currency. Tax not included.
	PricingCurrencyTotal *Price

	// Describes whether the payment is completed, failed, pending, cancelled or scheduled in the future.
	Status *PaymentStatus
}

// ReservationProperty - The property of reservation object.
type ReservationProperty struct {
	// Properties specific to applied scope type. Not required if not applicable. Required and need to provide tenantId and managementGroupId
	// if AppliedScopeType is ManagementGroup
	AppliedScopeProperties *ReservationAppliedScopeProperties

	// The array of applied scopes of a reservation. Will be null if the reservation is in Shared scope
	AppliedScopes []*string

	// Indicates if the reservation is archived
	Archived *bool

	// This is the DateTime when the reservation benefit started.
	BenefitStartTime *time.Time

	// The billing plan options available for this sku.
	BillingPlan *ReservationBillingPlan

	// Capabilities of the reservation
	Capabilities *string

	// This is the date-time when the reservation will expire.
	ExpiryDateTime *time.Time

	// The message giving detailed information about the status code.
	ExtendedStatusInfo *ReservationExtendedStatusInfo

	// Allows reservation discount to be applied across skus within the same auto fit group. Not all skus support instance size
	// flexibility.
	InstanceFlexibility *InstanceFlexibility

	// Properties of reservation merge
	MergeProperties *ReservationMergeProperties

	// Represents UPN
	ProductCode *string

	// This is the date when the reservation was purchased.
	PurchaseDate *time.Time

	// This is the date-time when the reservation was purchased.
	PurchaseDateTime *time.Time

	// Reservation Id of the reservation which is purchased because of renew. Format of the resource Id is /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}.
	RenewDestination *string

	// The renew properties for a reservation.
	RenewProperties *RenewPropertiesResponse

	// This is the date-time when the Azure Hybrid Benefit needs to be reviewed.
	ReviewDateTime *time.Time

	// Properties of reservation split
	SplitProperties *ReservationSplitProperties

	// Properties of reservation swap
	SwapProperties *ReservationSwapProperties

	// READ-ONLY; The applied scope type of the reservation.
	AppliedScopeType *string

	// READ-ONLY; Subscription that will be charged for purchasing reservation or savings plan
	BillingScopeID *string

	// READ-ONLY; The display name of the reservation
	DisplayName *string

	// READ-ONLY; The provisioning state of the reservation for display, e.g. Succeeded
	DisplayProvisioningState *string

	// READ-ONLY; The effective date time of the reservation
	EffectiveDateTime *time.Time

	// READ-ONLY; The expiry date of the reservation
	ExpiryDate *string

	// READ-ONLY; DateTime of the last time the reservation was updated.
	LastUpdatedDateTime *time.Time

	// READ-ONLY; The provisioning state of the reservation, e.g. Succeeded
	ProvisioningState *string

	// READ-ONLY; The provisioning state of the reservation, e.g. Succeeded
	ProvisioningSubState *string

	// READ-ONLY; The number of the reservation.
	Quantity *float32

	// READ-ONLY; The renew state of the reservation
	Renew *bool

	// READ-ONLY; The renew source of the reservation
	RenewSource *string

	// READ-ONLY; The reserved source type of the reservation, e.g. virtual machine.
	ReservedResourceType *string

	// READ-ONLY; The sku description of the reservation
	SKUDescription *string

	// READ-ONLY; The term of the reservation, e.g. P1Y
	Term *string

	// READ-ONLY; The applied scope type of the reservation for display, e.g. Shared
	UserFriendlyAppliedScopeType *string

	// READ-ONLY; The renew state of the reservation for display, e.g. On
	UserFriendlyRenewState *string

	// READ-ONLY; Reservation utilization
	Utilization *ReservationPropertyUtilization
}

// ReservationPropertyUtilization - Reservation utilization
type ReservationPropertyUtilization struct {
	// The array of aggregates of a reservation's utilization
	Aggregates []*ReservationUtilizationAggregates

	// READ-ONLY; last 7 day utilization trend for a reservation
	Trend *string
}

// ReservationPurchaseRequest - The request for reservation purchase
type ReservationPurchaseRequest struct {
	// The Azure region where the reserved resource lives.
	Location *string

	// Properties of reservation purchase request
	Properties *ReservationPurchaseRequestProperties

	// The name of sku
	SKU *SKUName
}

// ReservationPurchaseRequestProperties - Properties of reservation purchase request
type ReservationPurchaseRequestProperties struct {
	// Properties specific to applied scope type. Not required if not applicable. Required and need to provide tenantId and managementGroupId
	// if AppliedScopeType is ManagementGroup
	AppliedScopeProperties *ReservationAppliedScopeProperties

	// Type of the Applied Scope.
	AppliedScopeType *AppliedScopeType

	// List of the subscriptions that the benefit will be applied. Do not specify if AppliedScopeType is Shared.
	AppliedScopes []*string

	// Represent the billing plans.
	BillingPlan *ReservationBillingPlan

	// Friendly name of the reservation
	DisplayName *string

	// Allows reservation discount to be applied across skus within the same auto fit group. Not all skus support instance size
	// flexibility.
	InstanceFlexibility *InstanceFlexibility

	// Quantity of the skus that are part of the reservation. Must be greater than zero.
	Quantity *int32

	// Setting this to true will automatically purchase a new benefit on the expiration date time.
	Renew *bool

	// Properties specific to each reserved resource type. Not required if not applicable.
	ReservedResourceProperties *ReservationPurchaseRequestPropertiesReservedResourceProperties

	// This is the date-time when the Azure hybrid benefit needs to be reviewed.
	ReviewDateTime *time.Time

	// READ-ONLY; Subscription that will be charged for purchasing reservation or savings plan
	BillingScopeID *string

	// READ-ONLY; The reserved source type of the reservation, e.g. virtual machine.
	ReservedResourceType *string

	// READ-ONLY; The term of the reservation, e.g. P1Y
	Term *string
}

// ReservationPurchaseRequestPropertiesReservedResourceProperties - Properties specific to each reserved resource type. Not
// required if not applicable.
type ReservationPurchaseRequestPropertiesReservedResourceProperties struct {
	// Turning this on will apply the reservation discount to other VMs in the same VM size group. Only specify for VirtualMachines
	// reserved resource type.
	InstanceFlexibility *InstanceFlexibility
}

// ReservationSKUProperty - The property of reservation sku object.
type ReservationSKUProperty struct {
	// READ-ONLY; The name of the reservation sku.
	Name *string
}

// ReservationSplitProperties - Properties of reservation split
type ReservationSplitProperties struct {
	// List of destination resource id that are created due to split. Format of the resource id is /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	SplitDestinations []*string

	// Resource id of the reservation from which this is split. Format of the resource id is /providers/Microsoft.Capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	SplitSource *string
}

// ReservationSummary - The roll up count summary of reservations in each state
type ReservationSummary struct {
	// READ-ONLY; The number of reservation in Cancelled state
	CancelledCount *float32

	// READ-ONLY; The number of reservation in Expired state
	ExpiredCount *float32

	// READ-ONLY; The number of reservation in Expiring state
	ExpiringCount *float32

	// READ-ONLY; The number of reservation in Failed state
	FailedCount *float32

	// READ-ONLY; The number of reservation in 'No Benefit' state
	NoBenefitCount *float32

	// READ-ONLY; The number of reservation in Pending state
	PendingCount *float32

	// READ-ONLY; The number of reservation in Processing state
	ProcessingCount *float32

	// READ-ONLY; The number of reservation in Succeeded state
	SucceededCount *float32

	// READ-ONLY; The number of reservation in Warning state
	WarningCount *float32
}

// ReservationSwapProperties - Properties of reservation swap
type ReservationSwapProperties struct {
	// Reservation resource id that the original resource gets swapped to. Format of the resource id is /providers/microsoft.capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	SwapDestination *string

	// Resource id of the source reservation that gets swapped. Format of the resource id is /providers/microsoft.capacity/reservationOrders/{reservationOrderId}/reservations/{reservationId}
	SwapSource *string
}

// ReservationUtilizationAggregates - The aggregate values of reservation utilization
type ReservationUtilizationAggregates struct {
	// READ-ONLY; The grain of the aggregate
	Grain *float32

	// READ-ONLY; The grain unit of the aggregate
	GrainUnit *string

	// READ-ONLY; The aggregate value
	Value *float32

	// READ-ONLY; The aggregate value unit
	ValueUnit *string
}

// ReservationsListResult - The list of reservations and summary of roll out count of reservations in each state.
type ReservationsListResult struct {
	// The roll out count summary of the reservations
	Summary *ReservationSummary

	// READ-ONLY; The link (url) to the next page of results.
	NextLink *string

	// READ-ONLY; The list of reservations.
	Value []*Reservation
}

// RoleAssignment - The properties of the billing role assignment.
type RoleAssignment struct {
	// The properties of the billing role assignment.
	Properties *RoleAssignmentProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// RoleAssignmentListResult - Paged collection of BillingRoleAssignment items
type RoleAssignmentListResult struct {
	// READ-ONLY; The BillingRoleAssignment items on this page
	Value []*RoleAssignment

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

// RoleAssignmentProperties - The properties of the billing role assignment.
type RoleAssignmentProperties struct {
	// REQUIRED; The ID of the role definition.
	RoleDefinitionID *string

	// The object id of the user to whom the role was assigned.
	PrincipalID *string

	// The principal PUID of the user to whom the role was assigned.
	PrincipalPuid *string

	// The principal tenant id of the user to whom the role was assigned.
	PrincipalTenantID *string

	// The scope at which the role was assigned.
	Scope *string

	// The authentication type of the user, whether Organization or MSA, of the user to whom the role was assigned. This is supported
	// only for billing accounts with agreement type Enterprise Agreement.
	UserAuthenticationType *string

	// The email address of the user to whom the role was assigned. This is supported only for billing accounts with agreement
	// type Enterprise Agreement.
	UserEmailAddress *string

	// READ-ONLY; The name of the billing account.
	BillingAccountDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing account.
	BillingAccountID *string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// READ-ONLY; The ID of the billing request that was created for the role assignment. This is only applicable to cross tenant
	// role assignments or role assignments created through the billing request.
	BillingRequestID *string

	// READ-ONLY; The object ID of the user who created the role assignment.
	CreatedByPrincipalID *string

	// READ-ONLY; The principal PUID of the user who created the role assignment.
	CreatedByPrincipalPuid *string

	// READ-ONLY; The tenant Id of the user who created the role assignment.
	CreatedByPrincipalTenantID *string

	// READ-ONLY; The email address of the user who created the role assignment. This is supported only for billing accounts with
	// agreement type Enterprise Agreement.
	CreatedByUserEmailAddress *string

	// READ-ONLY; The date the role assignment was created.
	CreatedOn *time.Time

	// READ-ONLY; The name of the customer.
	CustomerDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// READ-ONLY; The principal PUID of the user who modified the role assignment.
	ModifiedByPrincipalID *string

	// READ-ONLY; The principal PUID of the user who modified the role assignment.
	ModifiedByPrincipalPuid *string

	// READ-ONLY; The tenant Id of the user who modified the role assignment.
	ModifiedByPrincipalTenantID *string

	// READ-ONLY; The email address of the user who modified the role assignment. This is supported only for billing accounts
	// with agreement type Enterprise Agreement.
	ModifiedByUserEmailAddress *string

	// READ-ONLY; The date the role assignment was modified.
	ModifiedOn *time.Time

	// READ-ONLY; The display name of the principal to whom the role was assigned.
	PrincipalDisplayName *string

	// READ-ONLY; The friendly name of the tenant of the user to whom the role was assigned. This will be 'Primary Tenant' for
	// the primary tenant of the billing account.
	PrincipalTenantName *string

	// READ-ONLY; The type of a role Assignment.
	PrincipalType *PrincipalType

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// RoleDefinition - The properties of a role definition.
type RoleDefinition struct {
	// The properties of a role definition.
	Properties *RoleDefinitionProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// RoleDefinitionListResult - Paged collection of BillingRoleDefinition items
type RoleDefinitionListResult struct {
	// READ-ONLY; The BillingRoleDefinition items on this page
	Value []*RoleDefinition

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

// RoleDefinitionProperties - The properties of a role definition.
type RoleDefinitionProperties struct {
	// REQUIRED; The name of the role.
	RoleName *string

	// READ-ONLY; The role description.
	Description *string

	// READ-ONLY; The billingPermissions the role has.
	Permissions []*Permission
}

// SKU - The SKU to be applied for this resource
type SKU struct {
	// Name of the SKU to be applied
	Name *string
}

// SKUName - The name of sku
type SKUName struct {
	Name *string
}

// SavingsPlanModel - Savings plan
type SavingsPlanModel struct {
	// REQUIRED; Savings plan SKU
	SKU *SKU

	// Savings plan properties
	Properties *SavingsPlanModelProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SavingsPlanModelList - List of savings plans
type SavingsPlanModelList struct {
	// REQUIRED; The SavingsPlanModel items on this page
	Value []*SavingsPlanModel

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

// SavingsPlanModelListResult - List of savings plans
type SavingsPlanModelListResult struct {
	// REQUIRED; The roll out count summary of the savings plans
	Summary *SavingsPlanSummaryCount

	// REQUIRED; The SavingsPlanModel items on this page
	Value []*SavingsPlanModel

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

// SavingsPlanModelProperties - Savings plan properties
type SavingsPlanModelProperties struct {
	// Properties specific to applied scope type. Not required if not applicable.
	AppliedScopeProperties *AppliedScopeProperties

	// Type of the Applied Scope.
	AppliedScopeType *AppliedScopeType

	// Represents the billing plan in ISO 8601 format. Required only for monthly purchases.
	BillingPlan *BillingPlan

	// Subscription that will be charged for purchasing SavingsPlan
	BillingScopeID *string

	// Commitment towards the benefit.
	Commitment *Commitment

	// Display name
	DisplayName *string

	// Represents UPN
	ProductCode *string

	// Setting this to true will automatically purchase a new benefit on the expiration date time.
	Renew *bool

	// SavingsPlan Id of the SavingsPlan which is purchased because of renew.
	RenewDestination *string

	// Properties specific to renew.
	RenewProperties *RenewProperties

	// SavingsPlan Id of the SavingsPlan from which this SavingsPlan is renewed.
	RenewSource *string

	// Represents the Savings plan term in ISO 8601 format.
	Term *SavingsPlanTerm

	// READ-ONLY; This is the DateTime when the savings plan benefit starts.
	BenefitStartTime *time.Time

	// READ-ONLY; Fully-qualified identifier of the billing account where the savings plan is applied.
	BillingAccountID *string

	// READ-ONLY; Fully-qualified identifier of the billing profile where the savings plan is applied. Present only for Field-led
	// or Customer-led customers.
	BillingProfileID *string

	// READ-ONLY; Fully-qualified identifier of the customer where the savings plan is applied. Present only for Partner-led customers.
	CustomerID *string

	// READ-ONLY; The provisioning state of the savings plan for display, e.g. Succeeded
	DisplayProvisioningState *string

	// READ-ONLY; DateTime of the savings plan starting when this version is effective from.
	EffectiveDateTime *time.Time

	// READ-ONLY; This is the date-time when the savings plan will expire.
	ExpiryDateTime *time.Time

	// READ-ONLY; Extended status information
	ExtendedStatusInfo *ExtendedStatusInfo

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Date time when the savings plan was purchased.
	PurchaseDateTime *time.Time

	// READ-ONLY; The applied scope type of the savings plan for display, e.g. Shared
	UserFriendlyAppliedScopeType *string

	// READ-ONLY; Savings plan utilization
	Utilization *Utilization
}

// SavingsPlanOrderModel - Savings plan order
type SavingsPlanOrderModel struct {
	// REQUIRED; Savings plan SKU
	SKU *SKU

	// Savings plan order properties
	Properties *SavingsPlanOrderModelProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SavingsPlanOrderModelList - List of savings plan orders
type SavingsPlanOrderModelList struct {
	// REQUIRED; The SavingsPlanOrderModel items on this page
	Value []*SavingsPlanOrderModel

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

// SavingsPlanOrderModelProperties - Savings plan order properties
type SavingsPlanOrderModelProperties struct {
	// Represents the billing plan in ISO 8601 format. Required only for monthly purchases.
	BillingPlan *BillingPlan

	// Subscription that will be charged for purchasing SavingsPlan
	BillingScopeID *string

	// Display name
	DisplayName *string

	// Information describing the type of billing plan for this savings plan.
	PlanInformation *PlanInformation

	// Represents UPN
	ProductCode  *string
	SavingsPlans []*string

	// Represents the Savings plan term in ISO 8601 format.
	Term *SavingsPlanTerm

	// READ-ONLY; DateTime when the savings plan benefit started.
	BenefitStartTime *time.Time

	// READ-ONLY; Fully-qualified identifier of the billing account where the savings plan is applied.
	BillingAccountID *string

	// READ-ONLY; Fully-qualified identifier of the billing profile where the savings plan is applied. Present only for Field-led
	// or Customer-led customers.
	BillingProfileID *string

	// READ-ONLY; Fully-qualified identifier of the customer where the savings plan is applied. Present only for Partner-led customers.
	CustomerID *string

	// READ-ONLY; DateTime when the savings plan will expire.
	ExpiryDateTime *time.Time

	// READ-ONLY; Extended status information
	ExtendedStatusInfo *ExtendedStatusInfo

	// READ-ONLY; The provisioning state of the savings plan, e.g. Succeeded
	ProvisioningState *string
}

// SavingsPlanSummaryCount - The roll up count summary of savings plans in each state
type SavingsPlanSummaryCount struct {
	// READ-ONLY; The number of savings plans in Cancelled state
	CancelledCount *float32

	// READ-ONLY; The number of savings plans in Expired state
	ExpiredCount *float32

	// READ-ONLY; The number of savings plans in Expiring state
	ExpiringCount *float32

	// READ-ONLY; The number of savings plans in Failed state
	FailedCount *float32

	// READ-ONLY; The number of savings plans in No Benefit state
	NoBenefitCount *float32

	// READ-ONLY; The number of savings plans in Pending state
	PendingCount *float32

	// READ-ONLY; The number of savings plans in Processing state
	ProcessingCount *float32

	// READ-ONLY; The number of savings plans in Succeeded state
	SucceededCount *float32

	// READ-ONLY; The number of savings plans in Warning state
	WarningCount *float32
}

// SavingsPlanUpdateRequest - Savings plan patch request
type SavingsPlanUpdateRequest struct {
	// Savings plan patch request
	Properties *SavingsPlanUpdateRequestProperties

	// The SKU to be applied for this resource
	SKU *SKU

	// Tags for this reservation
	Tags map[string]*string
}

// SavingsPlanUpdateRequestProperties - Savings plan patch request
type SavingsPlanUpdateRequestProperties struct {
	// Properties specific to applied scope type. Not required if not applicable.
	AppliedScopeProperties *AppliedScopeProperties

	// Type of the Applied Scope.
	AppliedScopeType *AppliedScopeType

	// Display name
	DisplayName *string

	// Setting this to true will automatically purchase a new benefit on the expiration date time.
	Renew *bool

	// Properties specific to renew.
	RenewProperties *RenewProperties
}

// SavingsPlanUpdateValidateRequest - Savings plan update validate request.
type SavingsPlanUpdateValidateRequest struct {
	// The benefits of a savings plan.
	Benefits []*SavingsPlanUpdateRequestProperties
}

// SavingsPlanValidResponseProperty - Benefit scope response property
type SavingsPlanValidResponseProperty struct {
	// Failure reason if the provided input is invalid
	Reason *string

	// Failure reason code if the provided input is invalid
	ReasonCode *string

	// Indicates if the provided input is valid
	Valid *bool
}

// SavingsPlanValidateResponse - Savings plan update validate response.
type SavingsPlanValidateResponse struct {
	Benefits []*SavingsPlanValidResponseProperty

	// Url to get the next page.
	NextLink *string
}

// SpendingLimitDetails - The billing profile spending limit.
type SpendingLimitDetails struct {
	// The initial amount for the billing profile.
	Amount *float32

	// The currency in which the charges for the billing profile are billed.
	Currency *string

	// The date when this spending limit is no longer in effect.
	EndDate *time.Time

	// The date when this spending limit goes into effect.
	StartDate *time.Time

	// The status of current spending limit.
	Status *SpendingLimitStatus

	// The type of spending limit.
	Type *SpendingLimitType
}

// Subscription - The billing properties of a subscription.
type Subscription struct {
	// The properties of a(n) BillingSubscription
	Properties *SubscriptionProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SubscriptionAlias - A billing subscription alias.
type SubscriptionAlias struct {
	// The properties of a(n) BillingSubscriptionAlias
	Properties *SubscriptionAliasProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SubscriptionAliasListResult - Paged collection of BillingSubscriptionAlias items
type SubscriptionAliasListResult struct {
	// READ-ONLY; The BillingSubscriptionAlias items on this page
	Value []*SubscriptionAlias

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

// SubscriptionAliasProperties - A billing subscription alias.
type SubscriptionAliasProperties struct {
	// Indicates whether auto renewal is turned on or off for a product.
	AutoRenew *AutoRenew

	// The beneficiary of the billing subscription.
	Beneficiary *Beneficiary

	// The provisioning tenant of the subscription.
	BeneficiaryTenantID *string

	// The billing frequency in ISO8601 format of product in the subscription. Example: P1M, P3M, P1Y
	BillingFrequency *string

	// The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// The cost center applied to the subscription. This field is only available for consumption subscriptions of Microsoft Customer
	// Agreement or Enterprise Agreement Type billing accounts.
	ConsumptionCostCenter *string

	// The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// The name of the billing subscription.
	DisplayName *string

	// The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// Id of the product for which the subscription is purchased.
	ProductTypeID *string

	// The tenant in which the subscription is provisioned.
	ProvisioningTenantID *string

	// The quantity of licenses or fulfillment units for the subscription.
	Quantity *int64

	// The SKU ID of the product for which the subscription is purchased. This field is is only available for Microsoft Customer
	// Agreement billing accounts.
	SKUID *string

	// System imposed policies that regulate behavior of the subscription.
	SystemOverrides *SystemOverrides

	// The duration in ISO8601 format for which you can use the subscription. Example: P1M, P3M, P1Y
	TermDuration *string

	// READ-ONLY; Dictionary of billing policies associated with the subscription.
	BillingPolicies map[string]*string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The ID that uniquely identifies a billing profile.
	BillingProfileName *string

	// READ-ONLY; The ID of the billing subscription with the subscription alias.
	BillingSubscriptionID *string

	// READ-ONLY; The name of the customer.
	CustomerDisplayName *string

	// READ-ONLY; The ID that uniquely identifies a customer.
	CustomerName *string

	// READ-ONLY; The enrollment Account name associated with the subscription. This field is available only for the Enterprise
	// Agreement Type billing accounts.
	EnrollmentAccountDisplayName *string

	// READ-ONLY; The enrollment Account ID associated with the subscription. This field is available only for the Enterprise
	// Agreement Type billing accounts.
	EnrollmentAccountID *string

	// READ-ONLY; Enrollment Account Subscription details. This field is available only for the Enterprise Agreement Type billing
	// accounts.
	EnrollmentAccountSubscriptionDetails *EnrollmentAccountSubscriptionDetails

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The ID that uniquely identifies an invoice section.
	InvoiceSectionName *string

	// READ-ONLY; The last month's charges. This field is only available for usage based subscriptions of Microsoft Customer Agreement
	// billing accounts.
	LastMonthCharges *Amount

	// READ-ONLY; The current month to date charges. This field is only available for usage based subscriptions of Microsoft Customer
	// Agreement billing accounts.
	MonthToDateCharges *Amount

	// READ-ONLY; Next billing cycle details of the subscription.
	NextBillingCycleDetails *NextBillingCycleDetails

	// READ-ONLY; The offer ID for the subscription. This field is only available for the Microsoft Online Services Program billing
	// accounts or billing accounts with agreement type Enterprise Agreement.
	OfferID *string

	// READ-ONLY; The status of an operation on the subscription. When None, there is no ongoing operation. When LockedForUpdate,
	// write operations will be blocked on the Billing Subscription. Other is the default value and you may need to refer to the
	// latest API version for more details.
	OperationStatus *BillingSubscriptionOperationStatus

	// READ-ONLY; The category of the product for which the subscription is purchased. Possible values include: AzureSupport,
	// Hardware, ReservationOrder, SaaS, SavingsPlanOrder, Software, UsageBased, Other.
	ProductCategory *string

	// READ-ONLY; Type of the product for which the subscription is purchased.
	ProductType *string

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Purchase date of the product in UTC time.
	PurchaseDate *time.Time

	// READ-ONLY; Details for the next renewal term of a subscription.
	RenewalTermDetails *RenewalTermDetails

	// READ-ONLY; Reseller for this subscription. The fields is not available for Microsoft Partner Agreement billing accounts.
	Reseller *Reseller

	// READ-ONLY; Unique identifier of the linked resource.
	ResourceURI *string

	// READ-ONLY; The SKU description of the product for which the subscription is purchased. This field is is only available
	// for billing accounts with agreement type Microsoft Customer Agreement and Microsoft Partner Agreement.
	SKUDescription *string

	// READ-ONLY; The status of the subscription. This field is not available for Enterprise Agreement billing accounts
	Status *BillingSubscriptionStatus

	// READ-ONLY; The ID of the subscription.
	SubscriptionID *string

	// READ-ONLY; The suspension details for a subscription. This field is not available for Enterprise Agreement billing accounts.
	SuspensionReasonDetails []*SubscriptionStatusDetails

	// READ-ONLY; The suspension reason for a subscription. This field is not available for Enterprise Agreement billing accounts.
	SuspensionReasons []*string

	// READ-ONLY; End date of the term in UTC time.
	TermEndDate *time.Time

	// READ-ONLY; Start date of the term in UTC time.
	TermStartDate *time.Time
}

// SubscriptionListResult - A container for a list of resources
type SubscriptionListResult struct {
	// READ-ONLY; The link (url) to the next page of results.
	NextLink *string

	// READ-ONLY; Total number of records.
	TotalCount *int32

	// READ-ONLY; The list of resources.
	Value []*Subscription
}

// SubscriptionMergeRequest - Request parameters that are provided to merge the two billing subscriptions.
type SubscriptionMergeRequest struct {
	// The quantity of the source billing subscription that will be merged with the target billing subscription.
	Quantity *int32

	// The ID of the target billing subscription that will be merged with the source subscription provided in the request.
	TargetBillingSubscriptionName *string
}

// SubscriptionPatch - The billing properties of a subscription.
type SubscriptionPatch struct {
	// The properties of a(n) BillingSubscription
	Properties *SubscriptionProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SubscriptionPolicy - A policy at subscription scope.
type SubscriptionPolicy struct {
	// A policy at subscription scope.
	Properties *SubscriptionPolicyProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// SubscriptionPolicyProperties - A policy at subscription scope.
type SubscriptionPolicyProperties struct {
	// List of all policies defined at the billing scope.
	Policies []*PolicySummary

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState
}

// SubscriptionProperties - The billing properties of a subscription.
type SubscriptionProperties struct {
	// Indicates whether auto renewal is turned on or off for a product.
	AutoRenew *AutoRenew

	// The beneficiary of the billing subscription.
	Beneficiary *Beneficiary

	// The provisioning tenant of the subscription.
	BeneficiaryTenantID *string

	// The billing frequency in ISO8601 format of product in the subscription. Example: P1M, P3M, P1Y
	BillingFrequency *string

	// The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// The cost center applied to the subscription. This field is only available for consumption subscriptions of Microsoft Customer
	// Agreement or Enterprise Agreement Type billing accounts.
	ConsumptionCostCenter *string

	// The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// The name of the billing subscription.
	DisplayName *string

	// The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// Id of the product for which the subscription is purchased.
	ProductTypeID *string

	// The tenant in which the subscription is provisioned.
	ProvisioningTenantID *string

	// The quantity of licenses or fulfillment units for the subscription.
	Quantity *int64

	// The SKU ID of the product for which the subscription is purchased. This field is is only available for Microsoft Customer
	// Agreement billing accounts.
	SKUID *string

	// System imposed policies that regulate behavior of the subscription.
	SystemOverrides *SystemOverrides

	// The duration in ISO8601 format for which you can use the subscription. Example: P1M, P3M, P1Y
	TermDuration *string

	// READ-ONLY; Dictionary of billing policies associated with the subscription.
	BillingPolicies map[string]*string

	// READ-ONLY; The name of the billing profile.
	BillingProfileDisplayName *string

	// READ-ONLY; The ID that uniquely identifies a billing profile.
	BillingProfileName *string

	// READ-ONLY; The name of the customer.
	CustomerDisplayName *string

	// READ-ONLY; The ID that uniquely identifies a customer.
	CustomerName *string

	// READ-ONLY; The enrollment Account name associated with the subscription. This field is available only for the Enterprise
	// Agreement Type billing accounts.
	EnrollmentAccountDisplayName *string

	// READ-ONLY; The enrollment Account ID associated with the subscription. This field is available only for the Enterprise
	// Agreement Type billing accounts.
	EnrollmentAccountID *string

	// READ-ONLY; Enrollment Account Subscription details. This field is available only for the Enterprise Agreement Type billing
	// accounts.
	EnrollmentAccountSubscriptionDetails *EnrollmentAccountSubscriptionDetails

	// READ-ONLY; The name of the invoice section.
	InvoiceSectionDisplayName *string

	// READ-ONLY; The ID that uniquely identifies an invoice section.
	InvoiceSectionName *string

	// READ-ONLY; The last month's charges. This field is only available for usage based subscriptions of Microsoft Customer Agreement
	// billing accounts.
	LastMonthCharges *Amount

	// READ-ONLY; The current month to date charges. This field is only available for usage based subscriptions of Microsoft Customer
	// Agreement billing accounts.
	MonthToDateCharges *Amount

	// READ-ONLY; Next billing cycle details of the subscription.
	NextBillingCycleDetails *NextBillingCycleDetails

	// READ-ONLY; The offer ID for the subscription. This field is only available for the Microsoft Online Services Program billing
	// accounts or billing accounts with agreement type Enterprise Agreement.
	OfferID *string

	// READ-ONLY; The status of an operation on the subscription. When None, there is no ongoing operation. When LockedForUpdate,
	// write operations will be blocked on the Billing Subscription. Other is the default value and you may need to refer to the
	// latest API version for more details.
	OperationStatus *BillingSubscriptionOperationStatus

	// READ-ONLY; The category of the product for which the subscription is purchased. Possible values include: AzureSupport,
	// Hardware, ReservationOrder, SaaS, SavingsPlanOrder, Software, UsageBased, Other.
	ProductCategory *string

	// READ-ONLY; Type of the product for which the subscription is purchased.
	ProductType *string

	// READ-ONLY; The provisioning state of the resource during a long-running operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; Purchase date of the product in UTC time.
	PurchaseDate *time.Time

	// READ-ONLY; Details for the next renewal term of a subscription.
	RenewalTermDetails *RenewalTermDetails

	// READ-ONLY; Reseller for this subscription. The fields is not available for Microsoft Partner Agreement billing accounts.
	Reseller *Reseller

	// READ-ONLY; Unique identifier of the linked resource.
	ResourceURI *string

	// READ-ONLY; The SKU description of the product for which the subscription is purchased. This field is is only available
	// for billing accounts with agreement type Microsoft Customer Agreement and Microsoft Partner Agreement.
	SKUDescription *string

	// READ-ONLY; The status of the subscription. This field is not available for Enterprise Agreement billing accounts
	Status *BillingSubscriptionStatus

	// READ-ONLY; The ID of the subscription.
	SubscriptionID *string

	// READ-ONLY; The suspension details for a subscription. This field is not available for Enterprise Agreement billing accounts.
	SuspensionReasonDetails []*SubscriptionStatusDetails

	// READ-ONLY; The suspension reason for a subscription. This field is not available for Enterprise Agreement billing accounts.
	SuspensionReasons []*string

	// READ-ONLY; End date of the term in UTC time.
	TermEndDate *time.Time

	// READ-ONLY; Start date of the term in UTC time.
	TermStartDate *time.Time
}

// SubscriptionSplitRequest - Request parameters that are provided to split the billing subscription.
type SubscriptionSplitRequest struct {
	// The billing frequency of the target subscription in the ISO8601 format. Example: P1M, P3M, P1Y"
	BillingFrequency *string

	// The quantity of the target product to which the subscription needs to be split into.
	Quantity *int32

	// The ID of the target product to which the subscription needs to be split into. This value is not same as the value returned
	// in Get API call and can be retrieved from Catalog API to know the product id to split into.
	TargetProductTypeID *string

	// The ID of the target product to which the subscription needs to be split into. This value is not same as the value returned
	// in Get API call and can be retrieved from Catalog API to know the sku id to split into.
	TargetSKUID *string

	// The term duration of the target in ISO8601 format product to which the subscription needs to be split into. Example: P1M,
	// P1Y
	TermDuration *string
}

// SubscriptionStatusDetails - The suspension details for a subscription. This field is not available for Enterprise Agreement
// billing accounts.
type SubscriptionStatusDetails struct {
	// READ-ONLY; The suspension effective date for a subscription. This field is not available for Enterprise Agreement billing
	// accounts.
	EffectiveDate *time.Time

	// READ-ONLY; The suspension reason for a subscription. This field is not available for Enterprise Agreement billing accounts.
	Reason *SubscriptionStatusReason
}

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

// SystemOverrides - System imposed policies that regulate behavior of the subscription.
type SystemOverrides struct {
	// READ-ONLY; The policy override for the subscription indicates whether the self-serve cancellation or seat reduction is
	// allowed.
	Cancellation *Cancellation

	// READ-ONLY; The end date in UTC time by when the self-serve cancellation ends.
	CancellationAllowedEndDate *time.Time
}

// TaxIdentifier - A tax identifier for the billing account.
type TaxIdentifier struct {
	// The country of the tax identifier.
	Country *string

	// The id of the tax identifier.
	ID *string

	// The scope of the tax identifier.
	Scope *string

	// The status of the tax identifier.
	Status *TaxIdentifierStatus

	// The type of the tax identifier.
	Type *TaxIdentifierType
}

// Transaction - A transaction.
type Transaction struct {
	// A transaction.
	Properties *TransactionProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// TransactionListResult - Paged collection of Transaction items
type TransactionListResult struct {
	// READ-ONLY; The Transaction items on this page
	Value []*Transaction

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

// TransactionProperties - A transaction.
type TransactionProperties struct {
	// The amount of any Azure credits automatically applied to this transaction.
	AzureCreditApplied *TransactionPropertiesAzureCreditApplied

	// Details of the Azure plan.
	AzurePlan *string

	// The ISO 4217 code for the currency in which this transaction is billed.
	BillingCurrency *string

	// The name of the billing profile.
	BillingProfileDisplayName any

	// The fully qualified ID that uniquely identifies a billing profile.
	BillingProfileID *string

	// The amount of Microsoft Azure Consumption Commitment(MACC) decrement through the transaction.
	ConsumptionCommitmentDecremented *TransactionPropertiesConsumptionCommitmentDecremented

	// The credit type of the transaction. Applies only to credited transactions.
	CreditType *CreditType

	// The name of the customer.
	CustomerDisplayName *string

	// The fully qualified ID that uniquely identifies a customer.
	CustomerID *string

	// The date of transaction.
	Date *time.Time

	// The percentage discount, if any, applied to this transaction.
	Discount *float32

	// The price of the product after applying any discounts.
	EffectivePrice *TransactionPropertiesEffectivePrice

	// The exchange rate used to convert charged amount to billing currency, if applicable.
	ExchangeRate *float32

	// Invoice name on which the transaction was billed or 'Pending' if the transaction is not billed.
	Invoice *string

	// The fully qualified ID of the invoice on which the transaction was billed. This field is only applicable for transactions
	// which are billed.
	InvoiceID *string

	// The name of the invoice section.
	InvoiceSectionDisplayName *string

	// The fully qualified ID that uniquely identifies an invoice section.
	InvoiceSectionID *string

	// Whether or not the transaction is third party.
	IsThirdParty *bool

	// Type of the transaction, billed or unbilled.
	Kind *TransactionKind

	// The retail price of the product.
	MarketPrice *TransactionPropertiesMarketPrice

	// The part number of the product for which the transaction took place. The field is only applicable for Enterprise Agreement
	// invoices.
	PartNumber *string

	// The ISO 4217 code for the currency in which the product is priced.
	PricingCurrency *string

	// The description of the product for which the transaction took place.
	ProductDescription *string

	// The family of the product for which the transaction took place.
	ProductFamily *string

	// The type of the product for which the transaction took place.
	ProductType *string

	// The ID of the product type for which the transaction took place.
	ProductTypeID *string

	// The quantity purchased in the transaction.
	Quantity *int32

	// There reason code for the transaction.
	ReasonCode *string

	// The refund details of a transaction.
	RefundTransactionDetails *TransactionPropertiesRefundTransactionDetails

	// The end date of the product term, or the end date of the month in which usage ended.
	ServicePeriodEndDate *time.Time

	// The date of the purchase of the product, or the start date of the month in which usage started.
	ServicePeriodStartDate *time.Time

	// Identifies the type of tax calculation used for the invoice. The field is applicable only to invoices with special tax
	// calculation logic.
	SpecialTaxationType *SpecialTaxationType

	// The pre-tax charged amount for the transaction.
	SubTotal *TransactionPropertiesSubTotal

	// The tax amount applied to the transaction.
	Tax *TransactionPropertiesTax

	// The charge associated with the transaction.
	TransactionAmount *TransactionPropertiesTransactionAmount

	// The type of transaction.
	TransactionType *string

	// The unit of measure used to bill for the product. For example, compute services are billed per hour.
	UnitOfMeasure *string

	// The description for the unit of measure for a given product.
	UnitType *string

	// The number of units used for a given product.
	Units *float32
}

// TransactionPropertiesAzureCreditApplied - The amount of any Azure credits automatically applied to this transaction.
type TransactionPropertiesAzureCreditApplied struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesConsumptionCommitmentDecremented - The amount of Microsoft Azure Consumption Commitment(MACC) decrement
// through the transaction.
type TransactionPropertiesConsumptionCommitmentDecremented struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesEffectivePrice - The price of the product after applying any discounts.
type TransactionPropertiesEffectivePrice struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesMarketPrice - The retail price of the product.
type TransactionPropertiesMarketPrice struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesRefundTransactionDetails - The refund details of a transaction.
type TransactionPropertiesRefundTransactionDetails struct {
	// The amount refunded.
	AmountRefunded *RefundTransactionDetailsAmountRefunded

	// The amount of refund requested.
	AmountRequested *RefundTransactionDetailsAmountRequested

	// The ID of refund operation.
	RefundOperationID *string
}

// TransactionPropertiesSubTotal - The pre-tax charged amount for the transaction.
type TransactionPropertiesSubTotal struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesTax - The tax amount applied to the transaction.
type TransactionPropertiesTax struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionPropertiesTransactionAmount - The charge associated with the transaction.
type TransactionPropertiesTransactionAmount struct {
	// READ-ONLY; The currency for the amount value.
	Currency *string

	// READ-ONLY; The amount value. For example, if the currency is USD, then a value of 600 would be $600.00.
	Value *float32
}

// TransactionSummary - A transaction summary.
type TransactionSummary struct {
	// READ-ONLY; The total amount of any Azure credits applied.
	AzureCreditApplied *float32

	// READ-ONLY; The ISO 4217 code for the currency in which the transactions are billed.
	BillingCurrency *string

	// READ-ONLY; The total Microsoft Azure Consumption Commitment (MACC) decrement through the invoice.
	ConsumptionCommitmentDecremented *float32

	// READ-ONLY; The total pre-tax charged amount.
	SubTotal *float32

	// READ-ONLY; The total tax amount applied.
	Tax *float32

	// READ-ONLY; The total charges.
	Total *float32
}

// TransferDetails - Details of the transfer.
type TransferDetails struct {
	// Details of the transfer.
	Properties *TransferProperties

	// Dictionary of metadata associated with the resource. It may not be populated for all resource types. Maximum key/value
	// length supported of 256 characters. Keys/value should not empty value nor null. Keys can not contain < > % & \ ? /
	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
}

// TransferDetailsListResult - Paged collection of TransferDetails items
type TransferDetailsListResult struct {
	// READ-ONLY; The TransferDetails items on this page
	Value []*TransferDetails

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

// TransferError - Error details for transfer execution.
type TransferError struct {
	// READ-ONLY; Error code.
	Code *string

	// READ-ONLY; Error message.
	Message *string
}

// TransferProperties - Transfer details
type TransferProperties struct {
	// READ-ONLY; The email ID of the user who canceled the transfer request.
	CanceledBy *string

	// READ-ONLY; Detailed transfer status.
	DetailedTransferStatus []*DetailedTransferStatus

	// READ-ONLY; The time at which the transfer request expires.
	ExpirationTime *time.Time

	// READ-ONLY; The email ID of the user who sent the transfer request.
	InitiatorEmailID *string

	// READ-ONLY; The email ID of the user to whom the transfer request was sent.
	RecipientEmailID *string

	// READ-ONLY; Overall transfer status.
	TransferStatus *TransferStatus
}

// TransitionDetails - The details for a billing account transitioned from agreement type Microsoft Online Services Program
// to agreement type Microsoft Customer Agreement.
type TransitionDetails struct {
	// READ-ONLY; The anniversary day of the pre-transitioned account of type Microsoft Online Services Program.
	AnniversaryDay *int32

	// READ-ONLY; The transition completion date.
	TransitionDate *time.Time
}

// Utilization - Savings plan utilization
type Utilization struct {
	// The array of aggregates of a savings plan's utilization
	Aggregates []*UtilizationAggregates

	// READ-ONLY; The trend for a savings plan's utilization
	Trend *string
}

// UtilizationAggregates - The aggregate values of savings plan utilization
type UtilizationAggregates struct {
	// READ-ONLY; The grain of the aggregate
	Grain *float32

	// READ-ONLY; The grain unit of the aggregate
	GrainUnit *string

	// READ-ONLY; The aggregate value
	Value *float32

	// READ-ONLY; The aggregate value unit
	ValueUnit *string
}

// ValidateTransferListResponse - Result of transfer validation.
type ValidateTransferListResponse struct {
	// READ-ONLY; The list of transfer validation results.
	Value []*ValidateTransferResponse
}

// ValidateTransferResponse - Transfer validation response.
type ValidateTransferResponse struct {
	// The properties of transfer validation response.
	Properties *ValidateTransferResponseProperties
}

// ValidateTransferResponseProperties - The properties of transfer validation response.
type ValidateTransferResponseProperties struct {
	// The array of validation results.
	Results []*ValidationResultProperties

	// READ-ONLY; The product id for which this result applies.
	ProductID *string

	// READ-ONLY; The status of validation
	Status *string
}

// ValidationResultProperties - The properties of the validation result.
type ValidationResultProperties struct {
	// READ-ONLY; Result Code.
	Code *string

	// READ-ONLY; Result Level.
	Level *string

	// READ-ONLY; The validation message.
	Message *string
}
