// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.billing.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.billing.models.BillingProfileSpendingLimit;
import com.azure.resourcemanager.billing.models.BillingProfileStatus;
import com.azure.resourcemanager.billing.models.BillingProfileStatusReasonCode;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The billing property. */
@Fluent
public final class BillingPropertyProperties {
    /*
     * The email address on which the account admin gets all Azure notifications.
     */
    @JsonProperty(value = "accountAdminNotificationEmailAddress", access = JsonProperty.Access.WRITE_ONLY)
    private String accountAdminNotificationEmailAddress;

    /*
     * The Azure AD tenant ID of the billing account for the subscription.
     */
    @JsonProperty(value = "billingTenantId", access = JsonProperty.Access.WRITE_ONLY)
    private String billingTenantId;

    /*
     * The ID of the billing account to which the subscription is billed.
     */
    @JsonProperty(value = "billingAccountId", access = JsonProperty.Access.WRITE_ONLY)
    private String billingAccountId;

    /*
     * The name of the billing account to which the subscription is billed.
     */
    @JsonProperty(value = "billingAccountDisplayName", access = JsonProperty.Access.WRITE_ONLY)
    private String billingAccountDisplayName;

    /*
     * The ID of the billing profile to which the subscription is billed.
     */
    @JsonProperty(value = "billingProfileId", access = JsonProperty.Access.WRITE_ONLY)
    private String billingProfileId;

    /*
     * The name of the billing profile to which the subscription is billed.
     */
    @JsonProperty(value = "billingProfileDisplayName", access = JsonProperty.Access.WRITE_ONLY)
    private String billingProfileDisplayName;

    /*
     * The status of the billing profile.
     */
    @JsonProperty(value = "billingProfileStatus", access = JsonProperty.Access.WRITE_ONLY)
    private BillingProfileStatus billingProfileStatus;

    /*
     * Reason for the specified billing profile status.
     */
    @JsonProperty(value = "billingProfileStatusReasonCode", access = JsonProperty.Access.WRITE_ONLY)
    private BillingProfileStatusReasonCode billingProfileStatusReasonCode;

    /*
     * The billing profile spending limit.
     */
    @JsonProperty(value = "billingProfileSpendingLimit", access = JsonProperty.Access.WRITE_ONLY)
    private BillingProfileSpendingLimit billingProfileSpendingLimit;

    /*
     * The cost center applied to the subscription.
     */
    @JsonProperty(value = "costCenter")
    private String costCenter;

    /*
     * The ID of the invoice section to which the subscription is billed.
     */
    @JsonProperty(value = "invoiceSectionId", access = JsonProperty.Access.WRITE_ONLY)
    private String invoiceSectionId;

    /*
     * The name of the invoice section to which the subscription is billed.
     */
    @JsonProperty(value = "invoiceSectionDisplayName", access = JsonProperty.Access.WRITE_ONLY)
    private String invoiceSectionDisplayName;

    /*
     * Indicates whether user is the account admin.
     */
    @JsonProperty(value = "isAccountAdmin", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean isAccountAdmin;

    /*
     * The product ID of the Azure plan.
     */
    @JsonProperty(value = "productId", access = JsonProperty.Access.WRITE_ONLY)
    private String productId;

    /*
     * The product name of the Azure plan.
     */
    @JsonProperty(value = "productName", access = JsonProperty.Access.WRITE_ONLY)
    private String productName;

    /*
     * The sku ID of the Azure plan for the subscription.
     */
    @JsonProperty(value = "skuId", access = JsonProperty.Access.WRITE_ONLY)
    private String skuId;

    /*
     * The sku description of the Azure plan for the subscription.
     */
    @JsonProperty(value = "skuDescription", access = JsonProperty.Access.WRITE_ONLY)
    private String skuDescription;

    /** Creates an instance of BillingPropertyProperties class. */
    public BillingPropertyProperties() {
    }

    /**
     * Get the accountAdminNotificationEmailAddress property: The email address on which the account admin gets all
     * Azure notifications.
     *
     * @return the accountAdminNotificationEmailAddress value.
     */
    public String accountAdminNotificationEmailAddress() {
        return this.accountAdminNotificationEmailAddress;
    }

    /**
     * Get the billingTenantId property: The Azure AD tenant ID of the billing account for the subscription.
     *
     * @return the billingTenantId value.
     */
    public String billingTenantId() {
        return this.billingTenantId;
    }

    /**
     * Get the billingAccountId property: The ID of the billing account to which the subscription is billed.
     *
     * @return the billingAccountId value.
     */
    public String billingAccountId() {
        return this.billingAccountId;
    }

    /**
     * Get the billingAccountDisplayName property: The name of the billing account to which the subscription is billed.
     *
     * @return the billingAccountDisplayName value.
     */
    public String billingAccountDisplayName() {
        return this.billingAccountDisplayName;
    }

    /**
     * Get the billingProfileId property: The ID of the billing profile to which the subscription is billed.
     *
     * @return the billingProfileId value.
     */
    public String billingProfileId() {
        return this.billingProfileId;
    }

    /**
     * Get the billingProfileDisplayName property: The name of the billing profile to which the subscription is billed.
     *
     * @return the billingProfileDisplayName value.
     */
    public String billingProfileDisplayName() {
        return this.billingProfileDisplayName;
    }

    /**
     * Get the billingProfileStatus property: The status of the billing profile.
     *
     * @return the billingProfileStatus value.
     */
    public BillingProfileStatus billingProfileStatus() {
        return this.billingProfileStatus;
    }

    /**
     * Get the billingProfileStatusReasonCode property: Reason for the specified billing profile status.
     *
     * @return the billingProfileStatusReasonCode value.
     */
    public BillingProfileStatusReasonCode billingProfileStatusReasonCode() {
        return this.billingProfileStatusReasonCode;
    }

    /**
     * Get the billingProfileSpendingLimit property: The billing profile spending limit.
     *
     * @return the billingProfileSpendingLimit value.
     */
    public BillingProfileSpendingLimit billingProfileSpendingLimit() {
        return this.billingProfileSpendingLimit;
    }

    /**
     * Get the costCenter property: The cost center applied to the subscription.
     *
     * @return the costCenter value.
     */
    public String costCenter() {
        return this.costCenter;
    }

    /**
     * Set the costCenter property: The cost center applied to the subscription.
     *
     * @param costCenter the costCenter value to set.
     * @return the BillingPropertyProperties object itself.
     */
    public BillingPropertyProperties withCostCenter(String costCenter) {
        this.costCenter = costCenter;
        return this;
    }

    /**
     * Get the invoiceSectionId property: The ID of the invoice section to which the subscription is billed.
     *
     * @return the invoiceSectionId value.
     */
    public String invoiceSectionId() {
        return this.invoiceSectionId;
    }

    /**
     * Get the invoiceSectionDisplayName property: The name of the invoice section to which the subscription is billed.
     *
     * @return the invoiceSectionDisplayName value.
     */
    public String invoiceSectionDisplayName() {
        return this.invoiceSectionDisplayName;
    }

    /**
     * Get the isAccountAdmin property: Indicates whether user is the account admin.
     *
     * @return the isAccountAdmin value.
     */
    public Boolean isAccountAdmin() {
        return this.isAccountAdmin;
    }

    /**
     * Get the productId property: The product ID of the Azure plan.
     *
     * @return the productId value.
     */
    public String productId() {
        return this.productId;
    }

    /**
     * Get the productName property: The product name of the Azure plan.
     *
     * @return the productName value.
     */
    public String productName() {
        return this.productName;
    }

    /**
     * Get the skuId property: The sku ID of the Azure plan for the subscription.
     *
     * @return the skuId value.
     */
    public String skuId() {
        return this.skuId;
    }

    /**
     * Get the skuDescription property: The sku description of the Azure plan for the subscription.
     *
     * @return the skuDescription value.
     */
    public String skuDescription() {
        return this.skuDescription;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
