sdk/resourcemanager/consumption/armconsumption/models_serde.go (4,446 lines of code) (raw):

//go:build go1.18 // +build go1.18 // 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) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. package armconsumption import ( "encoding/json" "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "reflect" ) // MarshalJSON implements the json.Marshaller interface for type Amount. func (a Amount) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "currency", a.Currency) populate(objectMap, "value", a.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Amount. func (a *Amount) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", a, err) } for key, val := range rawMsg { var err error switch key { case "currency": err = unpopulate(val, "Currency", &a.Currency) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &a.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", a, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type AmountWithExchangeRate. func (a AmountWithExchangeRate) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "currency", a.Currency) populate(objectMap, "exchangeRate", a.ExchangeRate) populate(objectMap, "exchangeRateMonth", a.ExchangeRateMonth) populate(objectMap, "value", a.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type AmountWithExchangeRate. func (a *AmountWithExchangeRate) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", a, err) } for key, val := range rawMsg { var err error switch key { case "currency": err = unpopulate(val, "Currency", &a.Currency) delete(rawMsg, key) case "exchangeRate": err = unpopulate(val, "ExchangeRate", &a.ExchangeRate) delete(rawMsg, key) case "exchangeRateMonth": err = unpopulate(val, "ExchangeRateMonth", &a.ExchangeRateMonth) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &a.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", a, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Balance. func (b Balance) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", b.Etag) populate(objectMap, "id", b.ID) populate(objectMap, "name", b.Name) populate(objectMap, "properties", b.Properties) populate(objectMap, "tags", b.Tags) populate(objectMap, "type", b.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Balance. func (b *Balance) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &b.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &b.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &b.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &b.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &b.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &b.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BalanceProperties. func (b BalanceProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "adjustmentDetails", b.AdjustmentDetails) populate(objectMap, "adjustments", b.Adjustments) populate(objectMap, "azureMarketplaceServiceCharges", b.AzureMarketplaceServiceCharges) populate(objectMap, "beginningBalance", b.BeginningBalance) populate(objectMap, "billingFrequency", b.BillingFrequency) populate(objectMap, "chargesBilledSeparately", b.ChargesBilledSeparately) populate(objectMap, "currency", b.Currency) populate(objectMap, "endingBalance", b.EndingBalance) populate(objectMap, "newPurchases", b.NewPurchases) populate(objectMap, "newPurchasesDetails", b.NewPurchasesDetails) populate(objectMap, "priceHidden", b.PriceHidden) populate(objectMap, "serviceOverage", b.ServiceOverage) populate(objectMap, "totalOverage", b.TotalOverage) populate(objectMap, "totalUsage", b.TotalUsage) populate(objectMap, "utilized", b.Utilized) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BalanceProperties. func (b *BalanceProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "adjustmentDetails": err = unpopulate(val, "AdjustmentDetails", &b.AdjustmentDetails) delete(rawMsg, key) case "adjustments": err = unpopulate(val, "Adjustments", &b.Adjustments) delete(rawMsg, key) case "azureMarketplaceServiceCharges": err = unpopulate(val, "AzureMarketplaceServiceCharges", &b.AzureMarketplaceServiceCharges) delete(rawMsg, key) case "beginningBalance": err = unpopulate(val, "BeginningBalance", &b.BeginningBalance) delete(rawMsg, key) case "billingFrequency": err = unpopulate(val, "BillingFrequency", &b.BillingFrequency) delete(rawMsg, key) case "chargesBilledSeparately": err = unpopulate(val, "ChargesBilledSeparately", &b.ChargesBilledSeparately) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &b.Currency) delete(rawMsg, key) case "endingBalance": err = unpopulate(val, "EndingBalance", &b.EndingBalance) delete(rawMsg, key) case "newPurchases": err = unpopulate(val, "NewPurchases", &b.NewPurchases) delete(rawMsg, key) case "newPurchasesDetails": err = unpopulate(val, "NewPurchasesDetails", &b.NewPurchasesDetails) delete(rawMsg, key) case "priceHidden": err = unpopulate(val, "PriceHidden", &b.PriceHidden) delete(rawMsg, key) case "serviceOverage": err = unpopulate(val, "ServiceOverage", &b.ServiceOverage) delete(rawMsg, key) case "totalOverage": err = unpopulate(val, "TotalOverage", &b.TotalOverage) delete(rawMsg, key) case "totalUsage": err = unpopulate(val, "TotalUsage", &b.TotalUsage) delete(rawMsg, key) case "utilized": err = unpopulate(val, "Utilized", &b.Utilized) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BalancePropertiesAdjustmentDetailsItem. func (b BalancePropertiesAdjustmentDetailsItem) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "name", b.Name) populate(objectMap, "value", b.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BalancePropertiesAdjustmentDetailsItem. func (b *BalancePropertiesAdjustmentDetailsItem) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "name": err = unpopulate(val, "Name", &b.Name) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &b.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BalancePropertiesNewPurchasesDetailsItem. func (b BalancePropertiesNewPurchasesDetailsItem) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "name", b.Name) populate(objectMap, "value", b.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BalancePropertiesNewPurchasesDetailsItem. func (b *BalancePropertiesNewPurchasesDetailsItem) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "name": err = unpopulate(val, "Name", &b.Name) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &b.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Budget. func (b Budget) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", b.ETag) populate(objectMap, "id", b.ID) populate(objectMap, "name", b.Name) populate(objectMap, "properties", b.Properties) populate(objectMap, "type", b.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Budget. func (b *Budget) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &b.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &b.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &b.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &b.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &b.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetComparisonExpression. func (b BudgetComparisonExpression) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "name", b.Name) populate(objectMap, "operator", b.Operator) populate(objectMap, "values", b.Values) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetComparisonExpression. func (b *BudgetComparisonExpression) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "name": err = unpopulate(val, "Name", &b.Name) delete(rawMsg, key) case "operator": err = unpopulate(val, "Operator", &b.Operator) delete(rawMsg, key) case "values": err = unpopulate(val, "Values", &b.Values) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetFilter. func (b BudgetFilter) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "and", b.And) populate(objectMap, "dimensions", b.Dimensions) populate(objectMap, "tags", b.Tags) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetFilter. func (b *BudgetFilter) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "and": err = unpopulate(val, "And", &b.And) delete(rawMsg, key) case "dimensions": err = unpopulate(val, "Dimensions", &b.Dimensions) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &b.Tags) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetFilterProperties. func (b BudgetFilterProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "dimensions", b.Dimensions) populate(objectMap, "tags", b.Tags) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetFilterProperties. func (b *BudgetFilterProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "dimensions": err = unpopulate(val, "Dimensions", &b.Dimensions) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &b.Tags) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetProperties. func (b BudgetProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", b.Amount) populate(objectMap, "category", b.Category) populate(objectMap, "currentSpend", b.CurrentSpend) populate(objectMap, "filter", b.Filter) populate(objectMap, "forecastSpend", b.ForecastSpend) populate(objectMap, "notifications", b.Notifications) populate(objectMap, "timeGrain", b.TimeGrain) populate(objectMap, "timePeriod", b.TimePeriod) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetProperties. func (b *BudgetProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "amount": err = unpopulate(val, "Amount", &b.Amount) delete(rawMsg, key) case "category": err = unpopulate(val, "Category", &b.Category) delete(rawMsg, key) case "currentSpend": err = unpopulate(val, "CurrentSpend", &b.CurrentSpend) delete(rawMsg, key) case "filter": err = unpopulate(val, "Filter", &b.Filter) delete(rawMsg, key) case "forecastSpend": err = unpopulate(val, "ForecastSpend", &b.ForecastSpend) delete(rawMsg, key) case "notifications": err = unpopulate(val, "Notifications", &b.Notifications) delete(rawMsg, key) case "timeGrain": err = unpopulate(val, "TimeGrain", &b.TimeGrain) delete(rawMsg, key) case "timePeriod": err = unpopulate(val, "TimePeriod", &b.TimePeriod) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetTimePeriod. func (b BudgetTimePeriod) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populateDateTimeRFC3339(objectMap, "endDate", b.EndDate) populateDateTimeRFC3339(objectMap, "startDate", b.StartDate) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetTimePeriod. func (b *BudgetTimePeriod) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "endDate": err = unpopulateDateTimeRFC3339(val, "EndDate", &b.EndDate) delete(rawMsg, key) case "startDate": err = unpopulateDateTimeRFC3339(val, "StartDate", &b.StartDate) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type BudgetsListResult. func (b BudgetsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", b.NextLink) populate(objectMap, "value", b.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type BudgetsListResult. func (b *BudgetsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &b.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &b.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", b, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ChargeSummary. func (c ChargeSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", c.ETag) populate(objectMap, "id", c.ID) objectMap["kind"] = c.Kind populate(objectMap, "name", c.Name) populate(objectMap, "type", c.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ChargeSummary. func (c *ChargeSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &c.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &c.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &c.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &c.Name) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &c.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ChargesListResult. func (c ChargesListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "value", c.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ChargesListResult. func (c *ChargesListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "value": c.Value, err = unmarshalChargeSummaryClassificationArray(val) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CreditBalanceSummary. func (c CreditBalanceSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "currentBalance", c.CurrentBalance) populate(objectMap, "estimatedBalance", c.EstimatedBalance) populate(objectMap, "estimatedBalanceInBillingCurrency", c.EstimatedBalanceInBillingCurrency) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CreditBalanceSummary. func (c *CreditBalanceSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "currentBalance": err = unpopulate(val, "CurrentBalance", &c.CurrentBalance) delete(rawMsg, key) case "estimatedBalance": err = unpopulate(val, "EstimatedBalance", &c.EstimatedBalance) delete(rawMsg, key) case "estimatedBalanceInBillingCurrency": err = unpopulate(val, "EstimatedBalanceInBillingCurrency", &c.EstimatedBalanceInBillingCurrency) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CreditSummary. func (c CreditSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", c.Etag) populate(objectMap, "id", c.ID) populate(objectMap, "name", c.Name) populate(objectMap, "properties", c.Properties) populate(objectMap, "tags", c.Tags) populate(objectMap, "type", c.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CreditSummary. func (c *CreditSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &c.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &c.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &c.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &c.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &c.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &c.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CreditSummaryProperties. func (c CreditSummaryProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "balanceSummary", c.BalanceSummary) populate(objectMap, "billingCurrency", c.BillingCurrency) populate(objectMap, "creditCurrency", c.CreditCurrency) populate(objectMap, "eTag", c.ETag) populate(objectMap, "expiredCredit", c.ExpiredCredit) populate(objectMap, "pendingCreditAdjustments", c.PendingCreditAdjustments) populate(objectMap, "pendingEligibleCharges", c.PendingEligibleCharges) populate(objectMap, "reseller", c.Reseller) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CreditSummaryProperties. func (c *CreditSummaryProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "balanceSummary": err = unpopulate(val, "BalanceSummary", &c.BalanceSummary) delete(rawMsg, key) case "billingCurrency": err = unpopulate(val, "BillingCurrency", &c.BillingCurrency) delete(rawMsg, key) case "creditCurrency": err = unpopulate(val, "CreditCurrency", &c.CreditCurrency) delete(rawMsg, key) case "eTag": err = unpopulate(val, "ETag", &c.ETag) delete(rawMsg, key) case "expiredCredit": err = unpopulate(val, "ExpiredCredit", &c.ExpiredCredit) delete(rawMsg, key) case "pendingCreditAdjustments": err = unpopulate(val, "PendingCreditAdjustments", &c.PendingCreditAdjustments) delete(rawMsg, key) case "pendingEligibleCharges": err = unpopulate(val, "PendingEligibleCharges", &c.PendingEligibleCharges) delete(rawMsg, key) case "reseller": err = unpopulate(val, "Reseller", &c.Reseller) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type CurrentSpend. func (c CurrentSpend) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", c.Amount) populate(objectMap, "unit", c.Unit) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type CurrentSpend. func (c *CurrentSpend) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } for key, val := range rawMsg { var err error switch key { case "amount": err = unpopulate(val, "Amount", &c.Amount) delete(rawMsg, key) case "unit": err = unpopulate(val, "Unit", &c.Unit) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", c, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type DownloadProperties. func (d DownloadProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "downloadUrl", d.DownloadURL) populate(objectMap, "validTill", d.ValidTill) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type DownloadProperties. func (d *DownloadProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } for key, val := range rawMsg { var err error switch key { case "downloadUrl": err = unpopulate(val, "DownloadURL", &d.DownloadURL) delete(rawMsg, key) case "validTill": err = unpopulate(val, "ValidTill", &d.ValidTill) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", d, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ErrorDetails. func (e ErrorDetails) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "code", e.Code) populate(objectMap, "message", e.Message) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorDetails. func (e *ErrorDetails) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "code": err = unpopulate(val, "Code", &e.Code) delete(rawMsg, key) case "message": err = unpopulate(val, "Message", &e.Message) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ErrorResponse. func (e ErrorResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "error", e.Error) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ErrorResponse. func (e *ErrorResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "error": err = unpopulate(val, "Error", &e.Error) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type EventProperties. func (e EventProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "adjustments", e.Adjustments) populate(objectMap, "adjustmentsInBillingCurrency", e.AdjustmentsInBillingCurrency) populate(objectMap, "billingCurrency", e.BillingCurrency) populate(objectMap, "billingProfileDisplayName", e.BillingProfileDisplayName) populate(objectMap, "billingProfileId", e.BillingProfileID) populate(objectMap, "canceledCredit", e.CanceledCredit) populate(objectMap, "charges", e.Charges) populate(objectMap, "chargesInBillingCurrency", e.ChargesInBillingCurrency) populate(objectMap, "closedBalance", e.ClosedBalance) populate(objectMap, "closedBalanceInBillingCurrency", e.ClosedBalanceInBillingCurrency) populate(objectMap, "creditCurrency", e.CreditCurrency) populate(objectMap, "creditExpired", e.CreditExpired) populate(objectMap, "creditExpiredInBillingCurrency", e.CreditExpiredInBillingCurrency) populate(objectMap, "description", e.Description) populate(objectMap, "eTag", e.ETag) populate(objectMap, "eventType", e.EventType) populate(objectMap, "invoiceNumber", e.InvoiceNumber) populate(objectMap, "lotId", e.LotID) populate(objectMap, "lotSource", e.LotSource) populate(objectMap, "newCredit", e.NewCredit) populate(objectMap, "newCreditInBillingCurrency", e.NewCreditInBillingCurrency) populate(objectMap, "reseller", e.Reseller) populateDateTimeRFC3339(objectMap, "transactionDate", e.TransactionDate) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type EventProperties. func (e *EventProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "adjustments": err = unpopulate(val, "Adjustments", &e.Adjustments) delete(rawMsg, key) case "adjustmentsInBillingCurrency": err = unpopulate(val, "AdjustmentsInBillingCurrency", &e.AdjustmentsInBillingCurrency) delete(rawMsg, key) case "billingCurrency": err = unpopulate(val, "BillingCurrency", &e.BillingCurrency) delete(rawMsg, key) case "billingProfileDisplayName": err = unpopulate(val, "BillingProfileDisplayName", &e.BillingProfileDisplayName) delete(rawMsg, key) case "billingProfileId": err = unpopulate(val, "BillingProfileID", &e.BillingProfileID) delete(rawMsg, key) case "canceledCredit": err = unpopulate(val, "CanceledCredit", &e.CanceledCredit) delete(rawMsg, key) case "charges": err = unpopulate(val, "Charges", &e.Charges) delete(rawMsg, key) case "chargesInBillingCurrency": err = unpopulate(val, "ChargesInBillingCurrency", &e.ChargesInBillingCurrency) delete(rawMsg, key) case "closedBalance": err = unpopulate(val, "ClosedBalance", &e.ClosedBalance) delete(rawMsg, key) case "closedBalanceInBillingCurrency": err = unpopulate(val, "ClosedBalanceInBillingCurrency", &e.ClosedBalanceInBillingCurrency) delete(rawMsg, key) case "creditCurrency": err = unpopulate(val, "CreditCurrency", &e.CreditCurrency) delete(rawMsg, key) case "creditExpired": err = unpopulate(val, "CreditExpired", &e.CreditExpired) delete(rawMsg, key) case "creditExpiredInBillingCurrency": err = unpopulate(val, "CreditExpiredInBillingCurrency", &e.CreditExpiredInBillingCurrency) delete(rawMsg, key) case "description": err = unpopulate(val, "Description", &e.Description) delete(rawMsg, key) case "eTag": err = unpopulate(val, "ETag", &e.ETag) delete(rawMsg, key) case "eventType": err = unpopulate(val, "EventType", &e.EventType) delete(rawMsg, key) case "invoiceNumber": err = unpopulate(val, "InvoiceNumber", &e.InvoiceNumber) delete(rawMsg, key) case "lotId": err = unpopulate(val, "LotID", &e.LotID) delete(rawMsg, key) case "lotSource": err = unpopulate(val, "LotSource", &e.LotSource) delete(rawMsg, key) case "newCredit": err = unpopulate(val, "NewCredit", &e.NewCredit) delete(rawMsg, key) case "newCreditInBillingCurrency": err = unpopulate(val, "NewCreditInBillingCurrency", &e.NewCreditInBillingCurrency) delete(rawMsg, key) case "reseller": err = unpopulate(val, "Reseller", &e.Reseller) delete(rawMsg, key) case "transactionDate": err = unpopulateDateTimeRFC3339(val, "TransactionDate", &e.TransactionDate) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type EventSummary. func (e EventSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", e.ETag) populate(objectMap, "id", e.ID) populate(objectMap, "name", e.Name) populate(objectMap, "properties", e.Properties) populate(objectMap, "type", e.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type EventSummary. func (e *EventSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &e.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &e.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &e.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &e.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &e.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Events. func (e Events) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", e.NextLink) populate(objectMap, "value", e.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Events. func (e *Events) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &e.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &e.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ForecastSpend. func (f ForecastSpend) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", f.Amount) populate(objectMap, "unit", f.Unit) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ForecastSpend. func (f *ForecastSpend) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", f, err) } for key, val := range rawMsg { var err error switch key { case "amount": err = unpopulate(val, "Amount", &f.Amount) delete(rawMsg, key) case "unit": err = unpopulate(val, "Unit", &f.Unit) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", f, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type HighCasedErrorDetails. func (h HighCasedErrorDetails) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "code", h.Code) populate(objectMap, "message", h.Message) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type HighCasedErrorDetails. func (h *HighCasedErrorDetails) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", h, err) } for key, val := range rawMsg { var err error switch key { case "code": err = unpopulate(val, "Code", &h.Code) delete(rawMsg, key) case "message": err = unpopulate(val, "Message", &h.Message) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", h, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type HighCasedErrorResponse. func (h HighCasedErrorResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "error", h.Error) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type HighCasedErrorResponse. func (h *HighCasedErrorResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", h, err) } for key, val := range rawMsg { var err error switch key { case "error": err = unpopulate(val, "Error", &h.Error) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", h, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyChargeSummary. func (l LegacyChargeSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", l.ETag) populate(objectMap, "id", l.ID) objectMap["kind"] = ChargeSummaryKindLegacy populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyChargeSummary. func (l *LegacyChargeSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &l.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &l.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &l.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyChargeSummaryProperties. func (l LegacyChargeSummaryProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureCharges", l.AzureCharges) populate(objectMap, "billingPeriodId", l.BillingPeriodID) populate(objectMap, "chargesBilledSeparately", l.ChargesBilledSeparately) populate(objectMap, "currency", l.Currency) populate(objectMap, "marketplaceCharges", l.MarketplaceCharges) populate(objectMap, "usageEnd", l.UsageEnd) populate(objectMap, "usageStart", l.UsageStart) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyChargeSummaryProperties. func (l *LegacyChargeSummaryProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "azureCharges": err = unpopulate(val, "AzureCharges", &l.AzureCharges) delete(rawMsg, key) case "billingPeriodId": err = unpopulate(val, "BillingPeriodID", &l.BillingPeriodID) delete(rawMsg, key) case "chargesBilledSeparately": err = unpopulate(val, "ChargesBilledSeparately", &l.ChargesBilledSeparately) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &l.Currency) delete(rawMsg, key) case "marketplaceCharges": err = unpopulate(val, "MarketplaceCharges", &l.MarketplaceCharges) delete(rawMsg, key) case "usageEnd": err = unpopulate(val, "UsageEnd", &l.UsageEnd) delete(rawMsg, key) case "usageStart": err = unpopulate(val, "UsageStart", &l.UsageStart) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyReservationRecommendation. func (l LegacyReservationRecommendation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", l.Etag) populate(objectMap, "id", l.ID) objectMap["kind"] = ReservationRecommendationKindLegacy populate(objectMap, "location", l.Location) populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "sku", l.SKU) populate(objectMap, "tags", l.Tags) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyReservationRecommendation. func (l *LegacyReservationRecommendation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &l.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &l.Kind) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &l.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": l.Properties, err = unmarshalLegacyReservationRecommendationPropertiesClassification(val) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &l.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &l.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyReservationRecommendationProperties. func (l LegacyReservationRecommendationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "costWithNoReservedInstances", l.CostWithNoReservedInstances) populateDateTimeRFC3339(objectMap, "firstUsageDate", l.FirstUsageDate) populate(objectMap, "instanceFlexibilityGroup", l.InstanceFlexibilityGroup) populate(objectMap, "instanceFlexibilityRatio", l.InstanceFlexibilityRatio) populate(objectMap, "lookBackPeriod", l.LookBackPeriod) populate(objectMap, "meterId", l.MeterID) populate(objectMap, "netSavings", l.NetSavings) populate(objectMap, "normalizedSize", l.NormalizedSize) populate(objectMap, "recommendedQuantity", l.RecommendedQuantity) populate(objectMap, "recommendedQuantityNormalized", l.RecommendedQuantityNormalized) populate(objectMap, "resourceType", l.ResourceType) populate(objectMap, "skuProperties", l.SKUProperties) objectMap["scope"] = l.Scope populate(objectMap, "term", l.Term) populate(objectMap, "totalCostWithReservedInstances", l.TotalCostWithReservedInstances) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyReservationRecommendationProperties. func (l *LegacyReservationRecommendationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "costWithNoReservedInstances": err = unpopulate(val, "CostWithNoReservedInstances", &l.CostWithNoReservedInstances) delete(rawMsg, key) case "firstUsageDate": err = unpopulateDateTimeRFC3339(val, "FirstUsageDate", &l.FirstUsageDate) delete(rawMsg, key) case "instanceFlexibilityGroup": err = unpopulate(val, "InstanceFlexibilityGroup", &l.InstanceFlexibilityGroup) delete(rawMsg, key) case "instanceFlexibilityRatio": err = unpopulate(val, "InstanceFlexibilityRatio", &l.InstanceFlexibilityRatio) delete(rawMsg, key) case "lookBackPeriod": err = unpopulate(val, "LookBackPeriod", &l.LookBackPeriod) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &l.MeterID) delete(rawMsg, key) case "netSavings": err = unpopulate(val, "NetSavings", &l.NetSavings) delete(rawMsg, key) case "normalizedSize": err = unpopulate(val, "NormalizedSize", &l.NormalizedSize) delete(rawMsg, key) case "recommendedQuantity": err = unpopulate(val, "RecommendedQuantity", &l.RecommendedQuantity) delete(rawMsg, key) case "recommendedQuantityNormalized": err = unpopulate(val, "RecommendedQuantityNormalized", &l.RecommendedQuantityNormalized) delete(rawMsg, key) case "resourceType": err = unpopulate(val, "ResourceType", &l.ResourceType) delete(rawMsg, key) case "skuProperties": err = unpopulate(val, "SKUProperties", &l.SKUProperties) delete(rawMsg, key) case "scope": err = unpopulate(val, "Scope", &l.Scope) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &l.Term) delete(rawMsg, key) case "totalCostWithReservedInstances": err = unpopulate(val, "TotalCostWithReservedInstances", &l.TotalCostWithReservedInstances) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyReservationTransaction. func (l LegacyReservationTransaction) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", l.ID) populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "tags", l.Tags) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyReservationTransaction. func (l *LegacyReservationTransaction) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &l.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &l.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyReservationTransactionProperties. func (l LegacyReservationTransactionProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "accountName", l.AccountName) populate(objectMap, "accountOwnerEmail", l.AccountOwnerEmail) populate(objectMap, "amount", l.Amount) populate(objectMap, "armSkuName", l.ArmSKUName) populate(objectMap, "billingFrequency", l.BillingFrequency) populate(objectMap, "billingMonth", l.BillingMonth) populate(objectMap, "costCenter", l.CostCenter) populate(objectMap, "currency", l.Currency) populate(objectMap, "currentEnrollment", l.CurrentEnrollment) populate(objectMap, "departmentName", l.DepartmentName) populate(objectMap, "description", l.Description) populateDateTimeRFC3339(objectMap, "eventDate", l.EventDate) populate(objectMap, "eventType", l.EventType) populate(objectMap, "monetaryCommitment", l.MonetaryCommitment) populate(objectMap, "overage", l.Overage) populate(objectMap, "purchasingEnrollment", l.PurchasingEnrollment) populate(objectMap, "purchasingSubscriptionGuid", l.PurchasingSubscriptionGUID) populate(objectMap, "purchasingSubscriptionName", l.PurchasingSubscriptionName) populate(objectMap, "quantity", l.Quantity) populate(objectMap, "region", l.Region) populate(objectMap, "reservationOrderId", l.ReservationOrderID) populate(objectMap, "reservationOrderName", l.ReservationOrderName) populate(objectMap, "term", l.Term) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyReservationTransactionProperties. func (l *LegacyReservationTransactionProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "accountName": err = unpopulate(val, "AccountName", &l.AccountName) delete(rawMsg, key) case "accountOwnerEmail": err = unpopulate(val, "AccountOwnerEmail", &l.AccountOwnerEmail) delete(rawMsg, key) case "amount": err = unpopulate(val, "Amount", &l.Amount) delete(rawMsg, key) case "armSkuName": err = unpopulate(val, "ArmSKUName", &l.ArmSKUName) delete(rawMsg, key) case "billingFrequency": err = unpopulate(val, "BillingFrequency", &l.BillingFrequency) delete(rawMsg, key) case "billingMonth": err = unpopulate(val, "BillingMonth", &l.BillingMonth) delete(rawMsg, key) case "costCenter": err = unpopulate(val, "CostCenter", &l.CostCenter) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &l.Currency) delete(rawMsg, key) case "currentEnrollment": err = unpopulate(val, "CurrentEnrollment", &l.CurrentEnrollment) delete(rawMsg, key) case "departmentName": err = unpopulate(val, "DepartmentName", &l.DepartmentName) delete(rawMsg, key) case "description": err = unpopulate(val, "Description", &l.Description) delete(rawMsg, key) case "eventDate": err = unpopulateDateTimeRFC3339(val, "EventDate", &l.EventDate) delete(rawMsg, key) case "eventType": err = unpopulate(val, "EventType", &l.EventType) delete(rawMsg, key) case "monetaryCommitment": err = unpopulate(val, "MonetaryCommitment", &l.MonetaryCommitment) delete(rawMsg, key) case "overage": err = unpopulate(val, "Overage", &l.Overage) delete(rawMsg, key) case "purchasingEnrollment": err = unpopulate(val, "PurchasingEnrollment", &l.PurchasingEnrollment) delete(rawMsg, key) case "purchasingSubscriptionGuid": err = unpopulate(val, "PurchasingSubscriptionGUID", &l.PurchasingSubscriptionGUID) delete(rawMsg, key) case "purchasingSubscriptionName": err = unpopulate(val, "PurchasingSubscriptionName", &l.PurchasingSubscriptionName) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &l.Quantity) delete(rawMsg, key) case "region": err = unpopulate(val, "Region", &l.Region) delete(rawMsg, key) case "reservationOrderId": err = unpopulate(val, "ReservationOrderID", &l.ReservationOrderID) delete(rawMsg, key) case "reservationOrderName": err = unpopulate(val, "ReservationOrderName", &l.ReservationOrderName) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &l.Term) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacySharedScopeReservationRecommendationProperties. func (l LegacySharedScopeReservationRecommendationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "costWithNoReservedInstances", l.CostWithNoReservedInstances) populateDateTimeRFC3339(objectMap, "firstUsageDate", l.FirstUsageDate) populate(objectMap, "instanceFlexibilityGroup", l.InstanceFlexibilityGroup) populate(objectMap, "instanceFlexibilityRatio", l.InstanceFlexibilityRatio) populate(objectMap, "lookBackPeriod", l.LookBackPeriod) populate(objectMap, "meterId", l.MeterID) populate(objectMap, "netSavings", l.NetSavings) populate(objectMap, "normalizedSize", l.NormalizedSize) populate(objectMap, "recommendedQuantity", l.RecommendedQuantity) populate(objectMap, "recommendedQuantityNormalized", l.RecommendedQuantityNormalized) populate(objectMap, "resourceType", l.ResourceType) populate(objectMap, "skuProperties", l.SKUProperties) objectMap["scope"] = "Shared" populate(objectMap, "term", l.Term) populate(objectMap, "totalCostWithReservedInstances", l.TotalCostWithReservedInstances) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacySharedScopeReservationRecommendationProperties. func (l *LegacySharedScopeReservationRecommendationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "costWithNoReservedInstances": err = unpopulate(val, "CostWithNoReservedInstances", &l.CostWithNoReservedInstances) delete(rawMsg, key) case "firstUsageDate": err = unpopulateDateTimeRFC3339(val, "FirstUsageDate", &l.FirstUsageDate) delete(rawMsg, key) case "instanceFlexibilityGroup": err = unpopulate(val, "InstanceFlexibilityGroup", &l.InstanceFlexibilityGroup) delete(rawMsg, key) case "instanceFlexibilityRatio": err = unpopulate(val, "InstanceFlexibilityRatio", &l.InstanceFlexibilityRatio) delete(rawMsg, key) case "lookBackPeriod": err = unpopulate(val, "LookBackPeriod", &l.LookBackPeriod) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &l.MeterID) delete(rawMsg, key) case "netSavings": err = unpopulate(val, "NetSavings", &l.NetSavings) delete(rawMsg, key) case "normalizedSize": err = unpopulate(val, "NormalizedSize", &l.NormalizedSize) delete(rawMsg, key) case "recommendedQuantity": err = unpopulate(val, "RecommendedQuantity", &l.RecommendedQuantity) delete(rawMsg, key) case "recommendedQuantityNormalized": err = unpopulate(val, "RecommendedQuantityNormalized", &l.RecommendedQuantityNormalized) delete(rawMsg, key) case "resourceType": err = unpopulate(val, "ResourceType", &l.ResourceType) delete(rawMsg, key) case "skuProperties": err = unpopulate(val, "SKUProperties", &l.SKUProperties) delete(rawMsg, key) case "scope": err = unpopulate(val, "Scope", &l.Scope) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &l.Term) delete(rawMsg, key) case "totalCostWithReservedInstances": err = unpopulate(val, "TotalCostWithReservedInstances", &l.TotalCostWithReservedInstances) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacySingleScopeReservationRecommendationProperties. func (l LegacySingleScopeReservationRecommendationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "costWithNoReservedInstances", l.CostWithNoReservedInstances) populateDateTimeRFC3339(objectMap, "firstUsageDate", l.FirstUsageDate) populate(objectMap, "instanceFlexibilityGroup", l.InstanceFlexibilityGroup) populate(objectMap, "instanceFlexibilityRatio", l.InstanceFlexibilityRatio) populate(objectMap, "lookBackPeriod", l.LookBackPeriod) populate(objectMap, "meterId", l.MeterID) populate(objectMap, "netSavings", l.NetSavings) populate(objectMap, "normalizedSize", l.NormalizedSize) populate(objectMap, "recommendedQuantity", l.RecommendedQuantity) populate(objectMap, "recommendedQuantityNormalized", l.RecommendedQuantityNormalized) populate(objectMap, "resourceType", l.ResourceType) populate(objectMap, "skuProperties", l.SKUProperties) objectMap["scope"] = "Single" populate(objectMap, "subscriptionId", l.SubscriptionID) populate(objectMap, "term", l.Term) populate(objectMap, "totalCostWithReservedInstances", l.TotalCostWithReservedInstances) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacySingleScopeReservationRecommendationProperties. func (l *LegacySingleScopeReservationRecommendationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "costWithNoReservedInstances": err = unpopulate(val, "CostWithNoReservedInstances", &l.CostWithNoReservedInstances) delete(rawMsg, key) case "firstUsageDate": err = unpopulateDateTimeRFC3339(val, "FirstUsageDate", &l.FirstUsageDate) delete(rawMsg, key) case "instanceFlexibilityGroup": err = unpopulate(val, "InstanceFlexibilityGroup", &l.InstanceFlexibilityGroup) delete(rawMsg, key) case "instanceFlexibilityRatio": err = unpopulate(val, "InstanceFlexibilityRatio", &l.InstanceFlexibilityRatio) delete(rawMsg, key) case "lookBackPeriod": err = unpopulate(val, "LookBackPeriod", &l.LookBackPeriod) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &l.MeterID) delete(rawMsg, key) case "netSavings": err = unpopulate(val, "NetSavings", &l.NetSavings) delete(rawMsg, key) case "normalizedSize": err = unpopulate(val, "NormalizedSize", &l.NormalizedSize) delete(rawMsg, key) case "recommendedQuantity": err = unpopulate(val, "RecommendedQuantity", &l.RecommendedQuantity) delete(rawMsg, key) case "recommendedQuantityNormalized": err = unpopulate(val, "RecommendedQuantityNormalized", &l.RecommendedQuantityNormalized) delete(rawMsg, key) case "resourceType": err = unpopulate(val, "ResourceType", &l.ResourceType) delete(rawMsg, key) case "skuProperties": err = unpopulate(val, "SKUProperties", &l.SKUProperties) delete(rawMsg, key) case "scope": err = unpopulate(val, "Scope", &l.Scope) delete(rawMsg, key) case "subscriptionId": err = unpopulate(val, "SubscriptionID", &l.SubscriptionID) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &l.Term) delete(rawMsg, key) case "totalCostWithReservedInstances": err = unpopulate(val, "TotalCostWithReservedInstances", &l.TotalCostWithReservedInstances) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyUsageDetail. func (l LegacyUsageDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", l.Etag) populate(objectMap, "id", l.ID) objectMap["kind"] = UsageDetailsKindLegacy populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "tags", l.Tags) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyUsageDetail. func (l *LegacyUsageDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &l.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &l.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &l.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &l.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LegacyUsageDetailProperties. func (l LegacyUsageDetailProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "accountName", l.AccountName) populate(objectMap, "accountOwnerId", l.AccountOwnerID) populate(objectMap, "additionalInfo", l.AdditionalInfo) populate(objectMap, "benefitId", l.BenefitID) populate(objectMap, "benefitName", l.BenefitName) populate(objectMap, "billingAccountId", l.BillingAccountID) populate(objectMap, "billingAccountName", l.BillingAccountName) populate(objectMap, "billingCurrency", l.BillingCurrency) populateDateTimeRFC3339(objectMap, "billingPeriodEndDate", l.BillingPeriodEndDate) populateDateTimeRFC3339(objectMap, "billingPeriodStartDate", l.BillingPeriodStartDate) populate(objectMap, "billingProfileId", l.BillingProfileID) populate(objectMap, "billingProfileName", l.BillingProfileName) populate(objectMap, "chargeType", l.ChargeType) populate(objectMap, "consumedService", l.ConsumedService) populate(objectMap, "cost", l.Cost) populate(objectMap, "costCenter", l.CostCenter) populateDateTimeRFC3339(objectMap, "date", l.Date) populate(objectMap, "effectivePrice", l.EffectivePrice) populate(objectMap, "frequency", l.Frequency) populate(objectMap, "invoiceSection", l.InvoiceSection) populate(objectMap, "isAzureCreditEligible", l.IsAzureCreditEligible) populate(objectMap, "meterDetails", l.MeterDetails) populate(objectMap, "meterId", l.MeterID) populate(objectMap, "offerId", l.OfferID) populate(objectMap, "partNumber", l.PartNumber) populate(objectMap, "payGPrice", l.PayGPrice) populate(objectMap, "planName", l.PlanName) populate(objectMap, "pricingModel", l.PricingModel) populate(objectMap, "product", l.Product) populate(objectMap, "productOrderId", l.ProductOrderID) populate(objectMap, "productOrderName", l.ProductOrderName) populate(objectMap, "publisherName", l.PublisherName) populate(objectMap, "publisherType", l.PublisherType) populate(objectMap, "quantity", l.Quantity) populate(objectMap, "reservationId", l.ReservationID) populate(objectMap, "reservationName", l.ReservationName) populate(objectMap, "resourceGroup", l.ResourceGroup) populate(objectMap, "resourceId", l.ResourceID) populate(objectMap, "resourceLocation", l.ResourceLocation) populate(objectMap, "resourceName", l.ResourceName) populate(objectMap, "serviceInfo1", l.ServiceInfo1) populate(objectMap, "serviceInfo2", l.ServiceInfo2) populate(objectMap, "subscriptionId", l.SubscriptionID) populate(objectMap, "subscriptionName", l.SubscriptionName) populate(objectMap, "term", l.Term) populate(objectMap, "unitPrice", l.UnitPrice) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LegacyUsageDetailProperties. func (l *LegacyUsageDetailProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "accountName": err = unpopulate(val, "AccountName", &l.AccountName) delete(rawMsg, key) case "accountOwnerId": err = unpopulate(val, "AccountOwnerID", &l.AccountOwnerID) delete(rawMsg, key) case "additionalInfo": err = unpopulate(val, "AdditionalInfo", &l.AdditionalInfo) delete(rawMsg, key) case "benefitId": err = unpopulate(val, "BenefitID", &l.BenefitID) delete(rawMsg, key) case "benefitName": err = unpopulate(val, "BenefitName", &l.BenefitName) delete(rawMsg, key) case "billingAccountId": err = unpopulate(val, "BillingAccountID", &l.BillingAccountID) delete(rawMsg, key) case "billingAccountName": err = unpopulate(val, "BillingAccountName", &l.BillingAccountName) delete(rawMsg, key) case "billingCurrency": err = unpopulate(val, "BillingCurrency", &l.BillingCurrency) delete(rawMsg, key) case "billingPeriodEndDate": err = unpopulateDateTimeRFC3339(val, "BillingPeriodEndDate", &l.BillingPeriodEndDate) delete(rawMsg, key) case "billingPeriodStartDate": err = unpopulateDateTimeRFC3339(val, "BillingPeriodStartDate", &l.BillingPeriodStartDate) delete(rawMsg, key) case "billingProfileId": err = unpopulate(val, "BillingProfileID", &l.BillingProfileID) delete(rawMsg, key) case "billingProfileName": err = unpopulate(val, "BillingProfileName", &l.BillingProfileName) delete(rawMsg, key) case "chargeType": err = unpopulate(val, "ChargeType", &l.ChargeType) delete(rawMsg, key) case "consumedService": err = unpopulate(val, "ConsumedService", &l.ConsumedService) delete(rawMsg, key) case "cost": err = unpopulate(val, "Cost", &l.Cost) delete(rawMsg, key) case "costCenter": err = unpopulate(val, "CostCenter", &l.CostCenter) delete(rawMsg, key) case "date": err = unpopulateDateTimeRFC3339(val, "Date", &l.Date) delete(rawMsg, key) case "effectivePrice": err = unpopulate(val, "EffectivePrice", &l.EffectivePrice) delete(rawMsg, key) case "frequency": err = unpopulate(val, "Frequency", &l.Frequency) delete(rawMsg, key) case "invoiceSection": err = unpopulate(val, "InvoiceSection", &l.InvoiceSection) delete(rawMsg, key) case "isAzureCreditEligible": err = unpopulate(val, "IsAzureCreditEligible", &l.IsAzureCreditEligible) delete(rawMsg, key) case "meterDetails": err = unpopulate(val, "MeterDetails", &l.MeterDetails) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &l.MeterID) delete(rawMsg, key) case "offerId": err = unpopulate(val, "OfferID", &l.OfferID) delete(rawMsg, key) case "partNumber": err = unpopulate(val, "PartNumber", &l.PartNumber) delete(rawMsg, key) case "payGPrice": err = unpopulate(val, "PayGPrice", &l.PayGPrice) delete(rawMsg, key) case "planName": err = unpopulate(val, "PlanName", &l.PlanName) delete(rawMsg, key) case "pricingModel": err = unpopulate(val, "PricingModel", &l.PricingModel) delete(rawMsg, key) case "product": err = unpopulate(val, "Product", &l.Product) delete(rawMsg, key) case "productOrderId": err = unpopulate(val, "ProductOrderID", &l.ProductOrderID) delete(rawMsg, key) case "productOrderName": err = unpopulate(val, "ProductOrderName", &l.ProductOrderName) delete(rawMsg, key) case "publisherName": err = unpopulate(val, "PublisherName", &l.PublisherName) delete(rawMsg, key) case "publisherType": err = unpopulate(val, "PublisherType", &l.PublisherType) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &l.Quantity) delete(rawMsg, key) case "reservationId": err = unpopulate(val, "ReservationID", &l.ReservationID) delete(rawMsg, key) case "reservationName": err = unpopulate(val, "ReservationName", &l.ReservationName) delete(rawMsg, key) case "resourceGroup": err = unpopulate(val, "ResourceGroup", &l.ResourceGroup) delete(rawMsg, key) case "resourceId": err = unpopulate(val, "ResourceID", &l.ResourceID) delete(rawMsg, key) case "resourceLocation": err = unpopulate(val, "ResourceLocation", &l.ResourceLocation) delete(rawMsg, key) case "resourceName": err = unpopulate(val, "ResourceName", &l.ResourceName) delete(rawMsg, key) case "serviceInfo1": err = unpopulate(val, "ServiceInfo1", &l.ServiceInfo1) delete(rawMsg, key) case "serviceInfo2": err = unpopulate(val, "ServiceInfo2", &l.ServiceInfo2) delete(rawMsg, key) case "subscriptionId": err = unpopulate(val, "SubscriptionID", &l.SubscriptionID) delete(rawMsg, key) case "subscriptionName": err = unpopulate(val, "SubscriptionName", &l.SubscriptionName) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &l.Term) delete(rawMsg, key) case "unitPrice": err = unpopulate(val, "UnitPrice", &l.UnitPrice) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LotProperties. func (l LotProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "billingCurrency", l.BillingCurrency) populate(objectMap, "closedBalance", l.ClosedBalance) populate(objectMap, "closedBalanceInBillingCurrency", l.ClosedBalanceInBillingCurrency) populate(objectMap, "creditCurrency", l.CreditCurrency) populate(objectMap, "eTag", l.ETag) populateDateTimeRFC3339(objectMap, "expirationDate", l.ExpirationDate) populate(objectMap, "originalAmount", l.OriginalAmount) populate(objectMap, "originalAmountInBillingCurrency", l.OriginalAmountInBillingCurrency) populate(objectMap, "poNumber", l.PoNumber) populateDateTimeRFC3339(objectMap, "purchasedDate", l.PurchasedDate) populate(objectMap, "reseller", l.Reseller) populate(objectMap, "source", l.Source) populateDateTimeRFC3339(objectMap, "startDate", l.StartDate) populate(objectMap, "status", l.Status) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LotProperties. func (l *LotProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "billingCurrency": err = unpopulate(val, "BillingCurrency", &l.BillingCurrency) delete(rawMsg, key) case "closedBalance": err = unpopulate(val, "ClosedBalance", &l.ClosedBalance) delete(rawMsg, key) case "closedBalanceInBillingCurrency": err = unpopulate(val, "ClosedBalanceInBillingCurrency", &l.ClosedBalanceInBillingCurrency) delete(rawMsg, key) case "creditCurrency": err = unpopulate(val, "CreditCurrency", &l.CreditCurrency) delete(rawMsg, key) case "eTag": err = unpopulate(val, "ETag", &l.ETag) delete(rawMsg, key) case "expirationDate": err = unpopulateDateTimeRFC3339(val, "ExpirationDate", &l.ExpirationDate) delete(rawMsg, key) case "originalAmount": err = unpopulate(val, "OriginalAmount", &l.OriginalAmount) delete(rawMsg, key) case "originalAmountInBillingCurrency": err = unpopulate(val, "OriginalAmountInBillingCurrency", &l.OriginalAmountInBillingCurrency) delete(rawMsg, key) case "poNumber": err = unpopulate(val, "PoNumber", &l.PoNumber) delete(rawMsg, key) case "purchasedDate": err = unpopulateDateTimeRFC3339(val, "PurchasedDate", &l.PurchasedDate) delete(rawMsg, key) case "reseller": err = unpopulate(val, "Reseller", &l.Reseller) delete(rawMsg, key) case "source": err = unpopulate(val, "Source", &l.Source) delete(rawMsg, key) case "startDate": err = unpopulateDateTimeRFC3339(val, "StartDate", &l.StartDate) delete(rawMsg, key) case "status": err = unpopulate(val, "Status", &l.Status) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type LotSummary. func (l LotSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", l.ETag) populate(objectMap, "id", l.ID) populate(objectMap, "name", l.Name) populate(objectMap, "properties", l.Properties) populate(objectMap, "type", l.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type LotSummary. func (l *LotSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &l.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &l.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &l.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &l.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &l.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Lots. func (l Lots) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", l.NextLink) populate(objectMap, "value", l.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Lots. func (l *Lots) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &l.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &l.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", l, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ManagementGroupAggregatedCostProperties. func (m ManagementGroupAggregatedCostProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureCharges", m.AzureCharges) populate(objectMap, "billingPeriodId", m.BillingPeriodID) populate(objectMap, "chargesBilledSeparately", m.ChargesBilledSeparately) populate(objectMap, "children", m.Children) populate(objectMap, "currency", m.Currency) populate(objectMap, "excludedSubscriptions", m.ExcludedSubscriptions) populate(objectMap, "includedSubscriptions", m.IncludedSubscriptions) populate(objectMap, "marketplaceCharges", m.MarketplaceCharges) populateDateTimeRFC3339(objectMap, "usageEnd", m.UsageEnd) populateDateTimeRFC3339(objectMap, "usageStart", m.UsageStart) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ManagementGroupAggregatedCostProperties. func (m *ManagementGroupAggregatedCostProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "azureCharges": err = unpopulate(val, "AzureCharges", &m.AzureCharges) delete(rawMsg, key) case "billingPeriodId": err = unpopulate(val, "BillingPeriodID", &m.BillingPeriodID) delete(rawMsg, key) case "chargesBilledSeparately": err = unpopulate(val, "ChargesBilledSeparately", &m.ChargesBilledSeparately) delete(rawMsg, key) case "children": err = unpopulate(val, "Children", &m.Children) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &m.Currency) delete(rawMsg, key) case "excludedSubscriptions": err = unpopulate(val, "ExcludedSubscriptions", &m.ExcludedSubscriptions) delete(rawMsg, key) case "includedSubscriptions": err = unpopulate(val, "IncludedSubscriptions", &m.IncludedSubscriptions) delete(rawMsg, key) case "marketplaceCharges": err = unpopulate(val, "MarketplaceCharges", &m.MarketplaceCharges) delete(rawMsg, key) case "usageEnd": err = unpopulateDateTimeRFC3339(val, "UsageEnd", &m.UsageEnd) delete(rawMsg, key) case "usageStart": err = unpopulateDateTimeRFC3339(val, "UsageStart", &m.UsageStart) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ManagementGroupAggregatedCostResult. func (m ManagementGroupAggregatedCostResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", m.Etag) populate(objectMap, "id", m.ID) populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "tags", m.Tags) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ManagementGroupAggregatedCostResult. func (m *ManagementGroupAggregatedCostResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &m.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &m.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Marketplace. func (m Marketplace) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", m.Etag) populate(objectMap, "id", m.ID) populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "tags", m.Tags) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Marketplace. func (m *Marketplace) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &m.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &m.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MarketplaceProperties. func (m MarketplaceProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "accountName", m.AccountName) populate(objectMap, "additionalInfo", m.AdditionalInfo) populate(objectMap, "additionalProperties", m.AdditionalProperties) populate(objectMap, "billingPeriodId", m.BillingPeriodID) populate(objectMap, "consumedQuantity", m.ConsumedQuantity) populate(objectMap, "consumedService", m.ConsumedService) populate(objectMap, "costCenter", m.CostCenter) populate(objectMap, "currency", m.Currency) populate(objectMap, "departmentName", m.DepartmentName) populate(objectMap, "instanceId", m.InstanceID) populate(objectMap, "instanceName", m.InstanceName) populate(objectMap, "isEstimated", m.IsEstimated) populate(objectMap, "isRecurringCharge", m.IsRecurringCharge) populate(objectMap, "meterId", m.MeterID) populate(objectMap, "offerName", m.OfferName) populate(objectMap, "orderNumber", m.OrderNumber) populate(objectMap, "planName", m.PlanName) populate(objectMap, "pretaxCost", m.PretaxCost) populate(objectMap, "publisherName", m.PublisherName) populate(objectMap, "resourceGroup", m.ResourceGroup) populate(objectMap, "resourceRate", m.ResourceRate) populate(objectMap, "subscriptionGuid", m.SubscriptionGUID) populate(objectMap, "subscriptionName", m.SubscriptionName) populate(objectMap, "unitOfMeasure", m.UnitOfMeasure) populateDateTimeRFC3339(objectMap, "usageEnd", m.UsageEnd) populateDateTimeRFC3339(objectMap, "usageStart", m.UsageStart) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MarketplaceProperties. func (m *MarketplaceProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "accountName": err = unpopulate(val, "AccountName", &m.AccountName) delete(rawMsg, key) case "additionalInfo": err = unpopulate(val, "AdditionalInfo", &m.AdditionalInfo) delete(rawMsg, key) case "additionalProperties": err = unpopulate(val, "AdditionalProperties", &m.AdditionalProperties) delete(rawMsg, key) case "billingPeriodId": err = unpopulate(val, "BillingPeriodID", &m.BillingPeriodID) delete(rawMsg, key) case "consumedQuantity": err = unpopulate(val, "ConsumedQuantity", &m.ConsumedQuantity) delete(rawMsg, key) case "consumedService": err = unpopulate(val, "ConsumedService", &m.ConsumedService) delete(rawMsg, key) case "costCenter": err = unpopulate(val, "CostCenter", &m.CostCenter) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &m.Currency) delete(rawMsg, key) case "departmentName": err = unpopulate(val, "DepartmentName", &m.DepartmentName) delete(rawMsg, key) case "instanceId": err = unpopulate(val, "InstanceID", &m.InstanceID) delete(rawMsg, key) case "instanceName": err = unpopulate(val, "InstanceName", &m.InstanceName) delete(rawMsg, key) case "isEstimated": err = unpopulate(val, "IsEstimated", &m.IsEstimated) delete(rawMsg, key) case "isRecurringCharge": err = unpopulate(val, "IsRecurringCharge", &m.IsRecurringCharge) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &m.MeterID) delete(rawMsg, key) case "offerName": err = unpopulate(val, "OfferName", &m.OfferName) delete(rawMsg, key) case "orderNumber": err = unpopulate(val, "OrderNumber", &m.OrderNumber) delete(rawMsg, key) case "planName": err = unpopulate(val, "PlanName", &m.PlanName) delete(rawMsg, key) case "pretaxCost": err = unpopulate(val, "PretaxCost", &m.PretaxCost) delete(rawMsg, key) case "publisherName": err = unpopulate(val, "PublisherName", &m.PublisherName) delete(rawMsg, key) case "resourceGroup": err = unpopulate(val, "ResourceGroup", &m.ResourceGroup) delete(rawMsg, key) case "resourceRate": err = unpopulate(val, "ResourceRate", &m.ResourceRate) delete(rawMsg, key) case "subscriptionGuid": err = unpopulate(val, "SubscriptionGUID", &m.SubscriptionGUID) delete(rawMsg, key) case "subscriptionName": err = unpopulate(val, "SubscriptionName", &m.SubscriptionName) delete(rawMsg, key) case "unitOfMeasure": err = unpopulate(val, "UnitOfMeasure", &m.UnitOfMeasure) delete(rawMsg, key) case "usageEnd": err = unpopulateDateTimeRFC3339(val, "UsageEnd", &m.UsageEnd) delete(rawMsg, key) case "usageStart": err = unpopulateDateTimeRFC3339(val, "UsageStart", &m.UsageStart) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MarketplacesListResult. func (m MarketplacesListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", m.NextLink) populate(objectMap, "value", m.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MarketplacesListResult. func (m *MarketplacesListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &m.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &m.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MeterDetails. func (m MeterDetails) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "meterCategory", m.MeterCategory) populate(objectMap, "meterLocation", m.MeterLocation) populate(objectMap, "meterName", m.MeterName) populate(objectMap, "meterSubCategory", m.MeterSubCategory) populate(objectMap, "pretaxStandardRate", m.PretaxStandardRate) populate(objectMap, "serviceName", m.ServiceName) populate(objectMap, "serviceTier", m.ServiceTier) populate(objectMap, "totalIncludedQuantity", m.TotalIncludedQuantity) populate(objectMap, "unit", m.Unit) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MeterDetails. func (m *MeterDetails) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "meterCategory": err = unpopulate(val, "MeterCategory", &m.MeterCategory) delete(rawMsg, key) case "meterLocation": err = unpopulate(val, "MeterLocation", &m.MeterLocation) delete(rawMsg, key) case "meterName": err = unpopulate(val, "MeterName", &m.MeterName) delete(rawMsg, key) case "meterSubCategory": err = unpopulate(val, "MeterSubCategory", &m.MeterSubCategory) delete(rawMsg, key) case "pretaxStandardRate": err = unpopulate(val, "PretaxStandardRate", &m.PretaxStandardRate) delete(rawMsg, key) case "serviceName": err = unpopulate(val, "ServiceName", &m.ServiceName) delete(rawMsg, key) case "serviceTier": err = unpopulate(val, "ServiceTier", &m.ServiceTier) delete(rawMsg, key) case "totalIncludedQuantity": err = unpopulate(val, "TotalIncludedQuantity", &m.TotalIncludedQuantity) delete(rawMsg, key) case "unit": err = unpopulate(val, "Unit", &m.Unit) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type MeterDetailsResponse. func (m MeterDetailsResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "meterCategory", m.MeterCategory) populate(objectMap, "meterName", m.MeterName) populate(objectMap, "meterSubCategory", m.MeterSubCategory) populate(objectMap, "serviceFamily", m.ServiceFamily) populate(objectMap, "unitOfMeasure", m.UnitOfMeasure) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type MeterDetailsResponse. func (m *MeterDetailsResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "meterCategory": err = unpopulate(val, "MeterCategory", &m.MeterCategory) delete(rawMsg, key) case "meterName": err = unpopulate(val, "MeterName", &m.MeterName) delete(rawMsg, key) case "meterSubCategory": err = unpopulate(val, "MeterSubCategory", &m.MeterSubCategory) delete(rawMsg, key) case "serviceFamily": err = unpopulate(val, "ServiceFamily", &m.ServiceFamily) delete(rawMsg, key) case "unitOfMeasure": err = unpopulate(val, "UnitOfMeasure", &m.UnitOfMeasure) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernChargeSummary. func (m ModernChargeSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", m.ETag) populate(objectMap, "id", m.ID) objectMap["kind"] = ChargeSummaryKindModern populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernChargeSummary. func (m *ModernChargeSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &m.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &m.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernChargeSummaryProperties. func (m ModernChargeSummaryProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "azureCharges", m.AzureCharges) populate(objectMap, "billingAccountId", m.BillingAccountID) populate(objectMap, "billingPeriodId", m.BillingPeriodID) populate(objectMap, "billingProfileId", m.BillingProfileID) populate(objectMap, "chargesBilledSeparately", m.ChargesBilledSeparately) populate(objectMap, "customerId", m.CustomerID) populate(objectMap, "invoiceSectionId", m.InvoiceSectionID) populate(objectMap, "isInvoiced", m.IsInvoiced) populate(objectMap, "marketplaceCharges", m.MarketplaceCharges) populate(objectMap, "usageEnd", m.UsageEnd) populate(objectMap, "usageStart", m.UsageStart) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernChargeSummaryProperties. func (m *ModernChargeSummaryProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "azureCharges": err = unpopulate(val, "AzureCharges", &m.AzureCharges) delete(rawMsg, key) case "billingAccountId": err = unpopulate(val, "BillingAccountID", &m.BillingAccountID) delete(rawMsg, key) case "billingPeriodId": err = unpopulate(val, "BillingPeriodID", &m.BillingPeriodID) delete(rawMsg, key) case "billingProfileId": err = unpopulate(val, "BillingProfileID", &m.BillingProfileID) delete(rawMsg, key) case "chargesBilledSeparately": err = unpopulate(val, "ChargesBilledSeparately", &m.ChargesBilledSeparately) delete(rawMsg, key) case "customerId": err = unpopulate(val, "CustomerID", &m.CustomerID) delete(rawMsg, key) case "invoiceSectionId": err = unpopulate(val, "InvoiceSectionID", &m.InvoiceSectionID) delete(rawMsg, key) case "isInvoiced": err = unpopulate(val, "IsInvoiced", &m.IsInvoiced) delete(rawMsg, key) case "marketplaceCharges": err = unpopulate(val, "MarketplaceCharges", &m.MarketplaceCharges) delete(rawMsg, key) case "usageEnd": err = unpopulate(val, "UsageEnd", &m.UsageEnd) delete(rawMsg, key) case "usageStart": err = unpopulate(val, "UsageStart", &m.UsageStart) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernReservationRecommendation. func (m ModernReservationRecommendation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", m.Etag) populate(objectMap, "id", m.ID) objectMap["kind"] = ReservationRecommendationKindModern populate(objectMap, "location", m.Location) populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "sku", m.SKU) populate(objectMap, "tags", m.Tags) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernReservationRecommendation. func (m *ModernReservationRecommendation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &m.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &m.Kind) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &m.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &m.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &m.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernReservationRecommendationProperties. func (m ModernReservationRecommendationProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "costWithNoReservedInstances", m.CostWithNoReservedInstances) populateDateTimeRFC3339(objectMap, "firstUsageDate", m.FirstUsageDate) populate(objectMap, "instanceFlexibilityGroup", m.InstanceFlexibilityGroup) populate(objectMap, "instanceFlexibilityRatio", m.InstanceFlexibilityRatio) populate(objectMap, "location", m.Location) populate(objectMap, "lookBackPeriod", m.LookBackPeriod) populate(objectMap, "meterId", m.MeterID) populate(objectMap, "netSavings", m.NetSavings) populate(objectMap, "normalizedSize", m.NormalizedSize) populate(objectMap, "recommendedQuantity", m.RecommendedQuantity) populate(objectMap, "recommendedQuantityNormalized", m.RecommendedQuantityNormalized) populate(objectMap, "skuName", m.SKUName) populate(objectMap, "skuProperties", m.SKUProperties) populate(objectMap, "scope", m.Scope) populate(objectMap, "term", m.Term) populate(objectMap, "totalCostWithReservedInstances", m.TotalCostWithReservedInstances) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernReservationRecommendationProperties. func (m *ModernReservationRecommendationProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "costWithNoReservedInstances": err = unpopulate(val, "CostWithNoReservedInstances", &m.CostWithNoReservedInstances) delete(rawMsg, key) case "firstUsageDate": err = unpopulateDateTimeRFC3339(val, "FirstUsageDate", &m.FirstUsageDate) delete(rawMsg, key) case "instanceFlexibilityGroup": err = unpopulate(val, "InstanceFlexibilityGroup", &m.InstanceFlexibilityGroup) delete(rawMsg, key) case "instanceFlexibilityRatio": err = unpopulate(val, "InstanceFlexibilityRatio", &m.InstanceFlexibilityRatio) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &m.Location) delete(rawMsg, key) case "lookBackPeriod": err = unpopulate(val, "LookBackPeriod", &m.LookBackPeriod) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &m.MeterID) delete(rawMsg, key) case "netSavings": err = unpopulate(val, "NetSavings", &m.NetSavings) delete(rawMsg, key) case "normalizedSize": err = unpopulate(val, "NormalizedSize", &m.NormalizedSize) delete(rawMsg, key) case "recommendedQuantity": err = unpopulate(val, "RecommendedQuantity", &m.RecommendedQuantity) delete(rawMsg, key) case "recommendedQuantityNormalized": err = unpopulate(val, "RecommendedQuantityNormalized", &m.RecommendedQuantityNormalized) delete(rawMsg, key) case "skuName": err = unpopulate(val, "SKUName", &m.SKUName) delete(rawMsg, key) case "skuProperties": err = unpopulate(val, "SKUProperties", &m.SKUProperties) delete(rawMsg, key) case "scope": err = unpopulate(val, "Scope", &m.Scope) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &m.Term) delete(rawMsg, key) case "totalCostWithReservedInstances": err = unpopulate(val, "TotalCostWithReservedInstances", &m.TotalCostWithReservedInstances) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernReservationTransaction. func (m ModernReservationTransaction) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", m.ID) populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "tags", m.Tags) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernReservationTransaction. func (m *ModernReservationTransaction) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &m.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernReservationTransactionProperties. func (m ModernReservationTransactionProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", m.Amount) populate(objectMap, "armSkuName", m.ArmSKUName) populate(objectMap, "billingFrequency", m.BillingFrequency) populate(objectMap, "billingProfileId", m.BillingProfileID) populate(objectMap, "billingProfileName", m.BillingProfileName) populate(objectMap, "currency", m.Currency) populate(objectMap, "description", m.Description) populateDateTimeRFC3339(objectMap, "eventDate", m.EventDate) populate(objectMap, "eventType", m.EventType) populate(objectMap, "invoice", m.Invoice) populate(objectMap, "invoiceId", m.InvoiceID) populate(objectMap, "invoiceSectionId", m.InvoiceSectionID) populate(objectMap, "invoiceSectionName", m.InvoiceSectionName) populate(objectMap, "purchasingSubscriptionGuid", m.PurchasingSubscriptionGUID) populate(objectMap, "purchasingSubscriptionName", m.PurchasingSubscriptionName) populate(objectMap, "quantity", m.Quantity) populate(objectMap, "region", m.Region) populate(objectMap, "reservationOrderId", m.ReservationOrderID) populate(objectMap, "reservationOrderName", m.ReservationOrderName) populate(objectMap, "term", m.Term) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernReservationTransactionProperties. func (m *ModernReservationTransactionProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "amount": err = unpopulate(val, "Amount", &m.Amount) delete(rawMsg, key) case "armSkuName": err = unpopulate(val, "ArmSKUName", &m.ArmSKUName) delete(rawMsg, key) case "billingFrequency": err = unpopulate(val, "BillingFrequency", &m.BillingFrequency) delete(rawMsg, key) case "billingProfileId": err = unpopulate(val, "BillingProfileID", &m.BillingProfileID) delete(rawMsg, key) case "billingProfileName": err = unpopulate(val, "BillingProfileName", &m.BillingProfileName) delete(rawMsg, key) case "currency": err = unpopulate(val, "Currency", &m.Currency) delete(rawMsg, key) case "description": err = unpopulate(val, "Description", &m.Description) delete(rawMsg, key) case "eventDate": err = unpopulateDateTimeRFC3339(val, "EventDate", &m.EventDate) delete(rawMsg, key) case "eventType": err = unpopulate(val, "EventType", &m.EventType) delete(rawMsg, key) case "invoice": err = unpopulate(val, "Invoice", &m.Invoice) delete(rawMsg, key) case "invoiceId": err = unpopulate(val, "InvoiceID", &m.InvoiceID) delete(rawMsg, key) case "invoiceSectionId": err = unpopulate(val, "InvoiceSectionID", &m.InvoiceSectionID) delete(rawMsg, key) case "invoiceSectionName": err = unpopulate(val, "InvoiceSectionName", &m.InvoiceSectionName) delete(rawMsg, key) case "purchasingSubscriptionGuid": err = unpopulate(val, "PurchasingSubscriptionGUID", &m.PurchasingSubscriptionGUID) delete(rawMsg, key) case "purchasingSubscriptionName": err = unpopulate(val, "PurchasingSubscriptionName", &m.PurchasingSubscriptionName) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &m.Quantity) delete(rawMsg, key) case "region": err = unpopulate(val, "Region", &m.Region) delete(rawMsg, key) case "reservationOrderId": err = unpopulate(val, "ReservationOrderID", &m.ReservationOrderID) delete(rawMsg, key) case "reservationOrderName": err = unpopulate(val, "ReservationOrderName", &m.ReservationOrderName) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &m.Term) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernReservationTransactionsListResult. func (m ModernReservationTransactionsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", m.NextLink) populate(objectMap, "value", m.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernReservationTransactionsListResult. func (m *ModernReservationTransactionsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &m.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &m.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernUsageDetail. func (m ModernUsageDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", m.Etag) populate(objectMap, "id", m.ID) objectMap["kind"] = UsageDetailsKindModern populate(objectMap, "name", m.Name) populate(objectMap, "properties", m.Properties) populate(objectMap, "tags", m.Tags) populate(objectMap, "type", m.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernUsageDetail. func (m *ModernUsageDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &m.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &m.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &m.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &m.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &m.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &m.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ModernUsageDetailProperties. func (m ModernUsageDetailProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "additionalInfo", m.AdditionalInfo) populate(objectMap, "benefitId", m.BenefitID) populate(objectMap, "benefitName", m.BenefitName) populate(objectMap, "billingAccountId", m.BillingAccountID) populate(objectMap, "billingAccountName", m.BillingAccountName) populate(objectMap, "billingCurrencyCode", m.BillingCurrencyCode) populateDateTimeRFC3339(objectMap, "billingPeriodEndDate", m.BillingPeriodEndDate) populateDateTimeRFC3339(objectMap, "billingPeriodStartDate", m.BillingPeriodStartDate) populate(objectMap, "billingProfileId", m.BillingProfileID) populate(objectMap, "billingProfileName", m.BillingProfileName) populate(objectMap, "chargeType", m.ChargeType) populate(objectMap, "consumedService", m.ConsumedService) populate(objectMap, "costAllocationRuleName", m.CostAllocationRuleName) populate(objectMap, "costCenter", m.CostCenter) populate(objectMap, "costInBillingCurrency", m.CostInBillingCurrency) populate(objectMap, "costInPricingCurrency", m.CostInPricingCurrency) populate(objectMap, "costInUSD", m.CostInUSD) populate(objectMap, "customerName", m.CustomerName) populate(objectMap, "customerTenantId", m.CustomerTenantID) populateDateTimeRFC3339(objectMap, "date", m.Date) populate(objectMap, "effectivePrice", m.EffectivePrice) populate(objectMap, "exchangeRate", m.ExchangeRate) populateDateTimeRFC3339(objectMap, "exchangeRateDate", m.ExchangeRateDate) populate(objectMap, "exchangeRatePricingToBilling", m.ExchangeRatePricingToBilling) populate(objectMap, "frequency", m.Frequency) populate(objectMap, "instanceName", m.InstanceName) populate(objectMap, "invoiceId", m.InvoiceID) populate(objectMap, "invoiceSectionId", m.InvoiceSectionID) populate(objectMap, "invoiceSectionName", m.InvoiceSectionName) populate(objectMap, "isAzureCreditEligible", m.IsAzureCreditEligible) populate(objectMap, "marketPrice", m.MarketPrice) populate(objectMap, "meterCategory", m.MeterCategory) populate(objectMap, "meterId", m.MeterID) populate(objectMap, "meterName", m.MeterName) populate(objectMap, "meterRegion", m.MeterRegion) populate(objectMap, "meterSubCategory", m.MeterSubCategory) populate(objectMap, "partnerEarnedCreditApplied", m.PartnerEarnedCreditApplied) populate(objectMap, "partnerEarnedCreditRate", m.PartnerEarnedCreditRate) populate(objectMap, "partnerName", m.PartnerName) populate(objectMap, "partnerTenantId", m.PartnerTenantID) populate(objectMap, "payGPrice", m.PayGPrice) populate(objectMap, "paygCostInBillingCurrency", m.PaygCostInBillingCurrency) populate(objectMap, "paygCostInUSD", m.PaygCostInUSD) populate(objectMap, "previousInvoiceId", m.PreviousInvoiceID) populate(objectMap, "pricingCurrencyCode", m.PricingCurrencyCode) populate(objectMap, "pricingModel", m.PricingModel) populate(objectMap, "product", m.Product) populate(objectMap, "productIdentifier", m.ProductIdentifier) populate(objectMap, "productOrderId", m.ProductOrderID) populate(objectMap, "productOrderName", m.ProductOrderName) populate(objectMap, "provider", m.Provider) populate(objectMap, "publisherId", m.PublisherID) populate(objectMap, "publisherName", m.PublisherName) populate(objectMap, "publisherType", m.PublisherType) populate(objectMap, "quantity", m.Quantity) populate(objectMap, "resellerMpnId", m.ResellerMpnID) populate(objectMap, "resellerName", m.ResellerName) populate(objectMap, "reservationId", m.ReservationID) populate(objectMap, "reservationName", m.ReservationName) populate(objectMap, "resourceGroup", m.ResourceGroup) populate(objectMap, "resourceLocation", m.ResourceLocation) populate(objectMap, "resourceLocationNormalized", m.ResourceLocationNormalized) populate(objectMap, "serviceFamily", m.ServiceFamily) populate(objectMap, "serviceInfo1", m.ServiceInfo1) populate(objectMap, "serviceInfo2", m.ServiceInfo2) populateDateTimeRFC3339(objectMap, "servicePeriodEndDate", m.ServicePeriodEndDate) populateDateTimeRFC3339(objectMap, "servicePeriodStartDate", m.ServicePeriodStartDate) populate(objectMap, "subscriptionGuid", m.SubscriptionGUID) populate(objectMap, "subscriptionName", m.SubscriptionName) populate(objectMap, "term", m.Term) populate(objectMap, "unitOfMeasure", m.UnitOfMeasure) populate(objectMap, "unitPrice", m.UnitPrice) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ModernUsageDetailProperties. func (m *ModernUsageDetailProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } for key, val := range rawMsg { var err error switch key { case "additionalInfo": err = unpopulate(val, "AdditionalInfo", &m.AdditionalInfo) delete(rawMsg, key) case "benefitId": err = unpopulate(val, "BenefitID", &m.BenefitID) delete(rawMsg, key) case "benefitName": err = unpopulate(val, "BenefitName", &m.BenefitName) delete(rawMsg, key) case "billingAccountId": err = unpopulate(val, "BillingAccountID", &m.BillingAccountID) delete(rawMsg, key) case "billingAccountName": err = unpopulate(val, "BillingAccountName", &m.BillingAccountName) delete(rawMsg, key) case "billingCurrencyCode": err = unpopulate(val, "BillingCurrencyCode", &m.BillingCurrencyCode) delete(rawMsg, key) case "billingPeriodEndDate": err = unpopulateDateTimeRFC3339(val, "BillingPeriodEndDate", &m.BillingPeriodEndDate) delete(rawMsg, key) case "billingPeriodStartDate": err = unpopulateDateTimeRFC3339(val, "BillingPeriodStartDate", &m.BillingPeriodStartDate) delete(rawMsg, key) case "billingProfileId": err = unpopulate(val, "BillingProfileID", &m.BillingProfileID) delete(rawMsg, key) case "billingProfileName": err = unpopulate(val, "BillingProfileName", &m.BillingProfileName) delete(rawMsg, key) case "chargeType": err = unpopulate(val, "ChargeType", &m.ChargeType) delete(rawMsg, key) case "consumedService": err = unpopulate(val, "ConsumedService", &m.ConsumedService) delete(rawMsg, key) case "costAllocationRuleName": err = unpopulate(val, "CostAllocationRuleName", &m.CostAllocationRuleName) delete(rawMsg, key) case "costCenter": err = unpopulate(val, "CostCenter", &m.CostCenter) delete(rawMsg, key) case "costInBillingCurrency": err = unpopulate(val, "CostInBillingCurrency", &m.CostInBillingCurrency) delete(rawMsg, key) case "costInPricingCurrency": err = unpopulate(val, "CostInPricingCurrency", &m.CostInPricingCurrency) delete(rawMsg, key) case "costInUSD": err = unpopulate(val, "CostInUSD", &m.CostInUSD) delete(rawMsg, key) case "customerName": err = unpopulate(val, "CustomerName", &m.CustomerName) delete(rawMsg, key) case "customerTenantId": err = unpopulate(val, "CustomerTenantID", &m.CustomerTenantID) delete(rawMsg, key) case "date": err = unpopulateDateTimeRFC3339(val, "Date", &m.Date) delete(rawMsg, key) case "effectivePrice": err = unpopulate(val, "EffectivePrice", &m.EffectivePrice) delete(rawMsg, key) case "exchangeRate": err = unpopulate(val, "ExchangeRate", &m.ExchangeRate) delete(rawMsg, key) case "exchangeRateDate": err = unpopulateDateTimeRFC3339(val, "ExchangeRateDate", &m.ExchangeRateDate) delete(rawMsg, key) case "exchangeRatePricingToBilling": err = unpopulate(val, "ExchangeRatePricingToBilling", &m.ExchangeRatePricingToBilling) delete(rawMsg, key) case "frequency": err = unpopulate(val, "Frequency", &m.Frequency) delete(rawMsg, key) case "instanceName": err = unpopulate(val, "InstanceName", &m.InstanceName) delete(rawMsg, key) case "invoiceId": err = unpopulate(val, "InvoiceID", &m.InvoiceID) delete(rawMsg, key) case "invoiceSectionId": err = unpopulate(val, "InvoiceSectionID", &m.InvoiceSectionID) delete(rawMsg, key) case "invoiceSectionName": err = unpopulate(val, "InvoiceSectionName", &m.InvoiceSectionName) delete(rawMsg, key) case "isAzureCreditEligible": err = unpopulate(val, "IsAzureCreditEligible", &m.IsAzureCreditEligible) delete(rawMsg, key) case "marketPrice": err = unpopulate(val, "MarketPrice", &m.MarketPrice) delete(rawMsg, key) case "meterCategory": err = unpopulate(val, "MeterCategory", &m.MeterCategory) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &m.MeterID) delete(rawMsg, key) case "meterName": err = unpopulate(val, "MeterName", &m.MeterName) delete(rawMsg, key) case "meterRegion": err = unpopulate(val, "MeterRegion", &m.MeterRegion) delete(rawMsg, key) case "meterSubCategory": err = unpopulate(val, "MeterSubCategory", &m.MeterSubCategory) delete(rawMsg, key) case "partnerEarnedCreditApplied": err = unpopulate(val, "PartnerEarnedCreditApplied", &m.PartnerEarnedCreditApplied) delete(rawMsg, key) case "partnerEarnedCreditRate": err = unpopulate(val, "PartnerEarnedCreditRate", &m.PartnerEarnedCreditRate) delete(rawMsg, key) case "partnerName": err = unpopulate(val, "PartnerName", &m.PartnerName) delete(rawMsg, key) case "partnerTenantId": err = unpopulate(val, "PartnerTenantID", &m.PartnerTenantID) delete(rawMsg, key) case "payGPrice": err = unpopulate(val, "PayGPrice", &m.PayGPrice) delete(rawMsg, key) case "paygCostInBillingCurrency": err = unpopulate(val, "PaygCostInBillingCurrency", &m.PaygCostInBillingCurrency) delete(rawMsg, key) case "paygCostInUSD": err = unpopulate(val, "PaygCostInUSD", &m.PaygCostInUSD) delete(rawMsg, key) case "previousInvoiceId": err = unpopulate(val, "PreviousInvoiceID", &m.PreviousInvoiceID) delete(rawMsg, key) case "pricingCurrencyCode": err = unpopulate(val, "PricingCurrencyCode", &m.PricingCurrencyCode) delete(rawMsg, key) case "pricingModel": err = unpopulate(val, "PricingModel", &m.PricingModel) delete(rawMsg, key) case "product": err = unpopulate(val, "Product", &m.Product) delete(rawMsg, key) case "productIdentifier": err = unpopulate(val, "ProductIdentifier", &m.ProductIdentifier) delete(rawMsg, key) case "productOrderId": err = unpopulate(val, "ProductOrderID", &m.ProductOrderID) delete(rawMsg, key) case "productOrderName": err = unpopulate(val, "ProductOrderName", &m.ProductOrderName) delete(rawMsg, key) case "provider": err = unpopulate(val, "Provider", &m.Provider) delete(rawMsg, key) case "publisherId": err = unpopulate(val, "PublisherID", &m.PublisherID) delete(rawMsg, key) case "publisherName": err = unpopulate(val, "PublisherName", &m.PublisherName) delete(rawMsg, key) case "publisherType": err = unpopulate(val, "PublisherType", &m.PublisherType) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &m.Quantity) delete(rawMsg, key) case "resellerMpnId": err = unpopulate(val, "ResellerMpnID", &m.ResellerMpnID) delete(rawMsg, key) case "resellerName": err = unpopulate(val, "ResellerName", &m.ResellerName) delete(rawMsg, key) case "reservationId": err = unpopulate(val, "ReservationID", &m.ReservationID) delete(rawMsg, key) case "reservationName": err = unpopulate(val, "ReservationName", &m.ReservationName) delete(rawMsg, key) case "resourceGroup": err = unpopulate(val, "ResourceGroup", &m.ResourceGroup) delete(rawMsg, key) case "resourceLocation": err = unpopulate(val, "ResourceLocation", &m.ResourceLocation) delete(rawMsg, key) case "resourceLocationNormalized": err = unpopulate(val, "ResourceLocationNormalized", &m.ResourceLocationNormalized) delete(rawMsg, key) case "serviceFamily": err = unpopulate(val, "ServiceFamily", &m.ServiceFamily) delete(rawMsg, key) case "serviceInfo1": err = unpopulate(val, "ServiceInfo1", &m.ServiceInfo1) delete(rawMsg, key) case "serviceInfo2": err = unpopulate(val, "ServiceInfo2", &m.ServiceInfo2) delete(rawMsg, key) case "servicePeriodEndDate": err = unpopulateDateTimeRFC3339(val, "ServicePeriodEndDate", &m.ServicePeriodEndDate) delete(rawMsg, key) case "servicePeriodStartDate": err = unpopulateDateTimeRFC3339(val, "ServicePeriodStartDate", &m.ServicePeriodStartDate) delete(rawMsg, key) case "subscriptionGuid": err = unpopulate(val, "SubscriptionGUID", &m.SubscriptionGUID) delete(rawMsg, key) case "subscriptionName": err = unpopulate(val, "SubscriptionName", &m.SubscriptionName) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &m.Term) delete(rawMsg, key) case "unitOfMeasure": err = unpopulate(val, "UnitOfMeasure", &m.UnitOfMeasure) delete(rawMsg, key) case "unitPrice": err = unpopulate(val, "UnitPrice", &m.UnitPrice) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", m, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Notification. func (n Notification) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "contactEmails", n.ContactEmails) populate(objectMap, "contactGroups", n.ContactGroups) populate(objectMap, "contactRoles", n.ContactRoles) populate(objectMap, "enabled", n.Enabled) populate(objectMap, "locale", n.Locale) populate(objectMap, "operator", n.Operator) populate(objectMap, "threshold", n.Threshold) populate(objectMap, "thresholdType", n.ThresholdType) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Notification. func (n *Notification) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", n, err) } for key, val := range rawMsg { var err error switch key { case "contactEmails": err = unpopulate(val, "ContactEmails", &n.ContactEmails) delete(rawMsg, key) case "contactGroups": err = unpopulate(val, "ContactGroups", &n.ContactGroups) delete(rawMsg, key) case "contactRoles": err = unpopulate(val, "ContactRoles", &n.ContactRoles) delete(rawMsg, key) case "enabled": err = unpopulate(val, "Enabled", &n.Enabled) delete(rawMsg, key) case "locale": err = unpopulate(val, "Locale", &n.Locale) delete(rawMsg, key) case "operator": err = unpopulate(val, "Operator", &n.Operator) delete(rawMsg, key) case "threshold": err = unpopulate(val, "Threshold", &n.Threshold) delete(rawMsg, key) case "thresholdType": err = unpopulate(val, "ThresholdType", &n.ThresholdType) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", n, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Operation. func (o Operation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "display", o.Display) populate(objectMap, "id", o.ID) populate(objectMap, "name", o.Name) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Operation. func (o *Operation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "display": err = unpopulate(val, "Display", &o.Display) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &o.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &o.Name) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type OperationDisplay. func (o OperationDisplay) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "description", o.Description) populate(objectMap, "operation", o.Operation) populate(objectMap, "provider", o.Provider) populate(objectMap, "resource", o.Resource) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type OperationDisplay. func (o *OperationDisplay) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "description": err = unpopulate(val, "Description", &o.Description) delete(rawMsg, key) case "operation": err = unpopulate(val, "Operation", &o.Operation) delete(rawMsg, key) case "provider": err = unpopulate(val, "Provider", &o.Provider) delete(rawMsg, key) case "resource": err = unpopulate(val, "Resource", &o.Resource) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type OperationListResult. func (o OperationListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", o.NextLink) populate(objectMap, "value", o.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type OperationListResult. func (o *OperationListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &o.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &o.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", o, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PriceSheetModel. func (p PriceSheetModel) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "download", p.Download) populate(objectMap, "nextLink", p.NextLink) populate(objectMap, "pricesheets", p.Pricesheets) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PriceSheetModel. func (p *PriceSheetModel) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "download": err = unpopulate(val, "Download", &p.Download) delete(rawMsg, key) case "nextLink": err = unpopulate(val, "NextLink", &p.NextLink) delete(rawMsg, key) case "pricesheets": err = unpopulate(val, "Pricesheets", &p.Pricesheets) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PriceSheetProperties. func (p PriceSheetProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "billingPeriodId", p.BillingPeriodID) populate(objectMap, "currencyCode", p.CurrencyCode) populate(objectMap, "includedQuantity", p.IncludedQuantity) populate(objectMap, "meterDetails", p.MeterDetails) populate(objectMap, "meterId", p.MeterID) populate(objectMap, "offerId", p.OfferID) populate(objectMap, "partNumber", p.PartNumber) populate(objectMap, "unitOfMeasure", p.UnitOfMeasure) populate(objectMap, "unitPrice", p.UnitPrice) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PriceSheetProperties. func (p *PriceSheetProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "billingPeriodId": err = unpopulate(val, "BillingPeriodID", &p.BillingPeriodID) delete(rawMsg, key) case "currencyCode": err = unpopulate(val, "CurrencyCode", &p.CurrencyCode) delete(rawMsg, key) case "includedQuantity": err = unpopulate(val, "IncludedQuantity", &p.IncludedQuantity) delete(rawMsg, key) case "meterDetails": err = unpopulate(val, "MeterDetails", &p.MeterDetails) delete(rawMsg, key) case "meterId": err = unpopulate(val, "MeterID", &p.MeterID) delete(rawMsg, key) case "offerId": err = unpopulate(val, "OfferID", &p.OfferID) delete(rawMsg, key) case "partNumber": err = unpopulate(val, "PartNumber", &p.PartNumber) delete(rawMsg, key) case "unitOfMeasure": err = unpopulate(val, "UnitOfMeasure", &p.UnitOfMeasure) delete(rawMsg, key) case "unitPrice": err = unpopulate(val, "UnitPrice", &p.UnitPrice) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type PriceSheetResult. func (p PriceSheetResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", p.Etag) populate(objectMap, "id", p.ID) populate(objectMap, "name", p.Name) populate(objectMap, "properties", p.Properties) populate(objectMap, "tags", p.Tags) populate(objectMap, "type", p.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type PriceSheetResult. func (p *PriceSheetResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &p.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &p.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &p.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &p.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &p.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &p.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ProxyResource. func (p ProxyResource) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", p.ETag) populate(objectMap, "id", p.ID) populate(objectMap, "name", p.Name) populate(objectMap, "type", p.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ProxyResource. func (p *ProxyResource) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &p.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &p.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &p.Name) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &p.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", p, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Reseller. func (r Reseller) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "resellerDescription", r.ResellerDescription) populate(objectMap, "resellerId", r.ResellerID) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Reseller. func (r *Reseller) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "resellerDescription": err = unpopulate(val, "ResellerDescription", &r.ResellerDescription) delete(rawMsg, key) case "resellerId": err = unpopulate(val, "ResellerID", &r.ResellerID) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationDetail. func (r ReservationDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", r.Etag) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationDetail. func (r *ReservationDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &r.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationDetailProperties. func (r ReservationDetailProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "instanceFlexibilityGroup", r.InstanceFlexibilityGroup) populate(objectMap, "instanceFlexibilityRatio", r.InstanceFlexibilityRatio) populate(objectMap, "instanceId", r.InstanceID) populate(objectMap, "kind", r.Kind) populate(objectMap, "reservationId", r.ReservationID) populate(objectMap, "reservationOrderId", r.ReservationOrderID) populate(objectMap, "reservedHours", r.ReservedHours) populate(objectMap, "skuName", r.SKUName) populate(objectMap, "totalReservedQuantity", r.TotalReservedQuantity) populateDateTimeRFC3339(objectMap, "usageDate", r.UsageDate) populate(objectMap, "usedHours", r.UsedHours) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationDetailProperties. func (r *ReservationDetailProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "instanceFlexibilityGroup": err = unpopulate(val, "InstanceFlexibilityGroup", &r.InstanceFlexibilityGroup) delete(rawMsg, key) case "instanceFlexibilityRatio": err = unpopulate(val, "InstanceFlexibilityRatio", &r.InstanceFlexibilityRatio) delete(rawMsg, key) case "instanceId": err = unpopulate(val, "InstanceID", &r.InstanceID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &r.Kind) delete(rawMsg, key) case "reservationId": err = unpopulate(val, "ReservationID", &r.ReservationID) delete(rawMsg, key) case "reservationOrderId": err = unpopulate(val, "ReservationOrderID", &r.ReservationOrderID) delete(rawMsg, key) case "reservedHours": err = unpopulate(val, "ReservedHours", &r.ReservedHours) delete(rawMsg, key) case "skuName": err = unpopulate(val, "SKUName", &r.SKUName) delete(rawMsg, key) case "totalReservedQuantity": err = unpopulate(val, "TotalReservedQuantity", &r.TotalReservedQuantity) delete(rawMsg, key) case "usageDate": err = unpopulateDateTimeRFC3339(val, "UsageDate", &r.UsageDate) delete(rawMsg, key) case "usedHours": err = unpopulate(val, "UsedHours", &r.UsedHours) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationDetailsListResult. func (r ReservationDetailsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationDetailsListResult. func (r *ReservationDetailsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendation. func (r ReservationRecommendation) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", r.Etag) populate(objectMap, "id", r.ID) objectMap["kind"] = r.Kind populate(objectMap, "location", r.Location) populate(objectMap, "name", r.Name) populate(objectMap, "sku", r.SKU) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendation. func (r *ReservationRecommendation) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &r.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &r.Kind) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &r.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &r.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsCalculatedSavingsProperties. func (r ReservationRecommendationDetailsCalculatedSavingsProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "onDemandCost", r.OnDemandCost) populate(objectMap, "overageCost", r.OverageCost) populate(objectMap, "quantity", r.Quantity) populate(objectMap, "reservationCost", r.ReservationCost) populate(objectMap, "reservedUnitCount", r.ReservedUnitCount) populate(objectMap, "savings", r.Savings) populate(objectMap, "totalReservationCost", r.TotalReservationCost) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsCalculatedSavingsProperties. func (r *ReservationRecommendationDetailsCalculatedSavingsProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "onDemandCost": err = unpopulate(val, "OnDemandCost", &r.OnDemandCost) delete(rawMsg, key) case "overageCost": err = unpopulate(val, "OverageCost", &r.OverageCost) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &r.Quantity) delete(rawMsg, key) case "reservationCost": err = unpopulate(val, "ReservationCost", &r.ReservationCost) delete(rawMsg, key) case "reservedUnitCount": err = unpopulate(val, "ReservedUnitCount", &r.ReservedUnitCount) delete(rawMsg, key) case "savings": err = unpopulate(val, "Savings", &r.Savings) delete(rawMsg, key) case "totalReservationCost": err = unpopulate(val, "TotalReservationCost", &r.TotalReservationCost) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsModel. func (r ReservationRecommendationDetailsModel) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", r.Etag) populate(objectMap, "id", r.ID) populate(objectMap, "location", r.Location) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "sku", r.SKU) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsModel. func (r *ReservationRecommendationDetailsModel) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &r.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "location": err = unpopulate(val, "Location", &r.Location) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &r.SKU) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsProperties. func (r ReservationRecommendationDetailsProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "currency", r.Currency) populate(objectMap, "resource", r.Resource) populate(objectMap, "resourceGroup", r.ResourceGroup) populate(objectMap, "savings", r.Savings) populate(objectMap, "scope", r.Scope) populate(objectMap, "usage", r.Usage) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsProperties. func (r *ReservationRecommendationDetailsProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "currency": err = unpopulate(val, "Currency", &r.Currency) delete(rawMsg, key) case "resource": err = unpopulate(val, "Resource", &r.Resource) delete(rawMsg, key) case "resourceGroup": err = unpopulate(val, "ResourceGroup", &r.ResourceGroup) delete(rawMsg, key) case "savings": err = unpopulate(val, "Savings", &r.Savings) delete(rawMsg, key) case "scope": err = unpopulate(val, "Scope", &r.Scope) delete(rawMsg, key) case "usage": err = unpopulate(val, "Usage", &r.Usage) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsResourceProperties. func (r ReservationRecommendationDetailsResourceProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "appliedScopes", r.AppliedScopes) populate(objectMap, "onDemandRate", r.OnDemandRate) populate(objectMap, "product", r.Product) populate(objectMap, "region", r.Region) populate(objectMap, "reservationRate", r.ReservationRate) populate(objectMap, "resourceType", r.ResourceType) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsResourceProperties. func (r *ReservationRecommendationDetailsResourceProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "appliedScopes": err = unpopulate(val, "AppliedScopes", &r.AppliedScopes) delete(rawMsg, key) case "onDemandRate": err = unpopulate(val, "OnDemandRate", &r.OnDemandRate) delete(rawMsg, key) case "product": err = unpopulate(val, "Product", &r.Product) delete(rawMsg, key) case "region": err = unpopulate(val, "Region", &r.Region) delete(rawMsg, key) case "reservationRate": err = unpopulate(val, "ReservationRate", &r.ReservationRate) delete(rawMsg, key) case "resourceType": err = unpopulate(val, "ResourceType", &r.ResourceType) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsSavingsProperties. func (r ReservationRecommendationDetailsSavingsProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "calculatedSavings", r.CalculatedSavings) populate(objectMap, "lookBackPeriod", r.LookBackPeriod) populate(objectMap, "recommendedQuantity", r.RecommendedQuantity) populate(objectMap, "reservationOrderTerm", r.ReservationOrderTerm) populate(objectMap, "savingsType", r.SavingsType) populate(objectMap, "unitOfMeasure", r.UnitOfMeasure) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsSavingsProperties. func (r *ReservationRecommendationDetailsSavingsProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "calculatedSavings": err = unpopulate(val, "CalculatedSavings", &r.CalculatedSavings) delete(rawMsg, key) case "lookBackPeriod": err = unpopulate(val, "LookBackPeriod", &r.LookBackPeriod) delete(rawMsg, key) case "recommendedQuantity": err = unpopulate(val, "RecommendedQuantity", &r.RecommendedQuantity) delete(rawMsg, key) case "reservationOrderTerm": err = unpopulate(val, "ReservationOrderTerm", &r.ReservationOrderTerm) delete(rawMsg, key) case "savingsType": err = unpopulate(val, "SavingsType", &r.SavingsType) delete(rawMsg, key) case "unitOfMeasure": err = unpopulate(val, "UnitOfMeasure", &r.UnitOfMeasure) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationDetailsUsageProperties. func (r ReservationRecommendationDetailsUsageProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "firstConsumptionDate", r.FirstConsumptionDate) populate(objectMap, "lastConsumptionDate", r.LastConsumptionDate) populate(objectMap, "lookBackUnitType", r.LookBackUnitType) populate(objectMap, "usageData", r.UsageData) populate(objectMap, "usageGrain", r.UsageGrain) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationDetailsUsageProperties. func (r *ReservationRecommendationDetailsUsageProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "firstConsumptionDate": err = unpopulate(val, "FirstConsumptionDate", &r.FirstConsumptionDate) delete(rawMsg, key) case "lastConsumptionDate": err = unpopulate(val, "LastConsumptionDate", &r.LastConsumptionDate) delete(rawMsg, key) case "lookBackUnitType": err = unpopulate(val, "LookBackUnitType", &r.LookBackUnitType) delete(rawMsg, key) case "usageData": err = unpopulate(val, "UsageData", &r.UsageData) delete(rawMsg, key) case "usageGrain": err = unpopulate(val, "UsageGrain", &r.UsageGrain) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationRecommendationsListResult. func (r ReservationRecommendationsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "previousLink", r.PreviousLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationRecommendationsListResult. func (r *ReservationRecommendationsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "previousLink": err = unpopulate(val, "PreviousLink", &r.PreviousLink) delete(rawMsg, key) case "value": r.Value, err = unmarshalReservationRecommendationClassificationArray(val) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationSummariesListResult. func (r ReservationSummariesListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationSummariesListResult. func (r *ReservationSummariesListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationSummary. func (r ReservationSummary) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", r.Etag) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationSummary. func (r *ReservationSummary) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &r.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationSummaryProperties. func (r ReservationSummaryProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "avgUtilizationPercentage", r.AvgUtilizationPercentage) populate(objectMap, "kind", r.Kind) populate(objectMap, "maxUtilizationPercentage", r.MaxUtilizationPercentage) populate(objectMap, "minUtilizationPercentage", r.MinUtilizationPercentage) populate(objectMap, "purchasedQuantity", r.PurchasedQuantity) populate(objectMap, "remainingQuantity", r.RemainingQuantity) populate(objectMap, "reservationId", r.ReservationID) populate(objectMap, "reservationOrderId", r.ReservationOrderID) populate(objectMap, "reservedHours", r.ReservedHours) populate(objectMap, "skuName", r.SKUName) populate(objectMap, "totalReservedQuantity", r.TotalReservedQuantity) populateDateTimeRFC3339(objectMap, "usageDate", r.UsageDate) populate(objectMap, "usedHours", r.UsedHours) populate(objectMap, "usedQuantity", r.UsedQuantity) populate(objectMap, "utilizedPercentage", r.UtilizedPercentage) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationSummaryProperties. func (r *ReservationSummaryProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "avgUtilizationPercentage": err = unpopulate(val, "AvgUtilizationPercentage", &r.AvgUtilizationPercentage) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &r.Kind) delete(rawMsg, key) case "maxUtilizationPercentage": err = unpopulate(val, "MaxUtilizationPercentage", &r.MaxUtilizationPercentage) delete(rawMsg, key) case "minUtilizationPercentage": err = unpopulate(val, "MinUtilizationPercentage", &r.MinUtilizationPercentage) delete(rawMsg, key) case "purchasedQuantity": err = unpopulate(val, "PurchasedQuantity", &r.PurchasedQuantity) delete(rawMsg, key) case "remainingQuantity": err = unpopulate(val, "RemainingQuantity", &r.RemainingQuantity) delete(rawMsg, key) case "reservationId": err = unpopulate(val, "ReservationID", &r.ReservationID) delete(rawMsg, key) case "reservationOrderId": err = unpopulate(val, "ReservationOrderID", &r.ReservationOrderID) delete(rawMsg, key) case "reservedHours": err = unpopulate(val, "ReservedHours", &r.ReservedHours) delete(rawMsg, key) case "skuName": err = unpopulate(val, "SKUName", &r.SKUName) delete(rawMsg, key) case "totalReservedQuantity": err = unpopulate(val, "TotalReservedQuantity", &r.TotalReservedQuantity) delete(rawMsg, key) case "usageDate": err = unpopulateDateTimeRFC3339(val, "UsageDate", &r.UsageDate) delete(rawMsg, key) case "usedHours": err = unpopulate(val, "UsedHours", &r.UsedHours) delete(rawMsg, key) case "usedQuantity": err = unpopulate(val, "UsedQuantity", &r.UsedQuantity) delete(rawMsg, key) case "utilizedPercentage": err = unpopulate(val, "UtilizedPercentage", &r.UtilizedPercentage) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationTransaction. func (r ReservationTransaction) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "properties", r.Properties) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationTransaction. func (r *ReservationTransaction) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &r.Properties) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationTransactionResource. func (r ReservationTransactionResource) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationTransactionResource. func (r *ReservationTransactionResource) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ReservationTransactionsListResult. func (r ReservationTransactionsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", r.NextLink) populate(objectMap, "value", r.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ReservationTransactionsListResult. func (r *ReservationTransactionsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &r.NextLink) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &r.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Resource. func (r Resource) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", r.Etag) populate(objectMap, "id", r.ID) populate(objectMap, "name", r.Name) populate(objectMap, "tags", r.Tags) populate(objectMap, "type", r.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Resource. func (r *Resource) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &r.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &r.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &r.Name) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &r.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &r.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type ResourceAttributes. func (r ResourceAttributes) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "location", r.Location) populate(objectMap, "sku", r.SKU) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type ResourceAttributes. func (r *ResourceAttributes) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } for key, val := range rawMsg { var err error switch key { case "location": err = unpopulate(val, "Location", &r.Location) delete(rawMsg, key) case "sku": err = unpopulate(val, "SKU", &r.SKU) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", r, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type SKUProperty. func (s SKUProperty) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "name", s.Name) populate(objectMap, "value", s.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type SKUProperty. func (s *SKUProperty) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } for key, val := range rawMsg { var err error switch key { case "name": err = unpopulate(val, "Name", &s.Name) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &s.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", s, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type Tag. func (t Tag) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "key", t.Key) populate(objectMap, "value", t.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type Tag. func (t *Tag) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } for key, val := range rawMsg { var err error switch key { case "key": err = unpopulate(val, "Key", &t.Key) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &t.Value) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type TagProperties. func (t TagProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", t.NextLink) populate(objectMap, "previousLink", t.PreviousLink) populate(objectMap, "tags", t.Tags) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type TagProperties. func (t *TagProperties) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &t.NextLink) delete(rawMsg, key) case "previousLink": err = unpopulate(val, "PreviousLink", &t.PreviousLink) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &t.Tags) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type TagsResult. func (t TagsResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "eTag", t.ETag) populate(objectMap, "id", t.ID) populate(objectMap, "name", t.Name) populate(objectMap, "properties", t.Properties) populate(objectMap, "type", t.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type TagsResult. func (t *TagsResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } for key, val := range rawMsg { var err error switch key { case "eTag": err = unpopulate(val, "ETag", &t.ETag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &t.ID) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &t.Name) delete(rawMsg, key) case "properties": err = unpopulate(val, "Properties", &t.Properties) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &t.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", t, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type UsageDetail. func (u UsageDetail) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "etag", u.Etag) populate(objectMap, "id", u.ID) objectMap["kind"] = u.Kind populate(objectMap, "name", u.Name) populate(objectMap, "tags", u.Tags) populate(objectMap, "type", u.Type) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type UsageDetail. func (u *UsageDetail) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", u, err) } for key, val := range rawMsg { var err error switch key { case "etag": err = unpopulate(val, "Etag", &u.Etag) delete(rawMsg, key) case "id": err = unpopulate(val, "ID", &u.ID) delete(rawMsg, key) case "kind": err = unpopulate(val, "Kind", &u.Kind) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &u.Name) delete(rawMsg, key) case "tags": err = unpopulate(val, "Tags", &u.Tags) delete(rawMsg, key) case "type": err = unpopulate(val, "Type", &u.Type) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", u, err) } } return nil } // MarshalJSON implements the json.Marshaller interface for type UsageDetailsListResult. func (u UsageDetailsListResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "nextLink", u.NextLink) populate(objectMap, "value", u.Value) return json.Marshal(objectMap) } // UnmarshalJSON implements the json.Unmarshaller interface for type UsageDetailsListResult. func (u *UsageDetailsListResult) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", u, err) } for key, val := range rawMsg { var err error switch key { case "nextLink": err = unpopulate(val, "NextLink", &u.NextLink) delete(rawMsg, key) case "value": u.Value, err = unmarshalUsageDetailClassificationArray(val) delete(rawMsg, key) } if err != nil { return fmt.Errorf("unmarshalling type %T: %v", u, err) } } return nil } func populate(m map[string]any, k string, v any) { if v == nil { return } else if azcore.IsNullValue(v) { m[k] = nil } else if !reflect.ValueOf(v).IsNil() { m[k] = v } } func unpopulate(data json.RawMessage, fn string, v any) error { if data == nil { return nil } if err := json.Unmarshal(data, v); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } return nil }