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

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

import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.customerinsights.models.HubBillingInfoFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Properties of hub. */
@Fluent
public final class HubPropertiesFormat {
    /*
     * API endpoint URL of the hub.
     */
    @JsonProperty(value = "apiEndpoint", access = JsonProperty.Access.WRITE_ONLY)
    private String apiEndpoint;

    /*
     * Web endpoint URL of the hub.
     */
    @JsonProperty(value = "webEndpoint", access = JsonProperty.Access.WRITE_ONLY)
    private String webEndpoint;

    /*
     * Provisioning state of the hub.
     */
    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
    private String provisioningState;

    /*
     * The bit flags for enabled hub features. Bit 0 is set to 1 indicates graph is enabled, or disabled if set to 0.
     * Bit 1 is set to 1 indicates the hub is disabled, or enabled if set to 0.
     */
    @JsonProperty(value = "tenantFeatures")
    private Integer tenantFeatures;

    /*
     * Billing settings of the hub.
     */
    @JsonProperty(value = "hubBillingInfo")
    private HubBillingInfoFormat hubBillingInfo;

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

    /**
     * Get the apiEndpoint property: API endpoint URL of the hub.
     *
     * @return the apiEndpoint value.
     */
    public String apiEndpoint() {
        return this.apiEndpoint;
    }

    /**
     * Get the webEndpoint property: Web endpoint URL of the hub.
     *
     * @return the webEndpoint value.
     */
    public String webEndpoint() {
        return this.webEndpoint;
    }

    /**
     * Get the provisioningState property: Provisioning state of the hub.
     *
     * @return the provisioningState value.
     */
    public String provisioningState() {
        return this.provisioningState;
    }

    /**
     * Get the tenantFeatures property: The bit flags for enabled hub features. Bit 0 is set to 1 indicates graph is
     * enabled, or disabled if set to 0. Bit 1 is set to 1 indicates the hub is disabled, or enabled if set to 0.
     *
     * @return the tenantFeatures value.
     */
    public Integer tenantFeatures() {
        return this.tenantFeatures;
    }

    /**
     * Set the tenantFeatures property: The bit flags for enabled hub features. Bit 0 is set to 1 indicates graph is
     * enabled, or disabled if set to 0. Bit 1 is set to 1 indicates the hub is disabled, or enabled if set to 0.
     *
     * @param tenantFeatures the tenantFeatures value to set.
     * @return the HubPropertiesFormat object itself.
     */
    public HubPropertiesFormat withTenantFeatures(Integer tenantFeatures) {
        this.tenantFeatures = tenantFeatures;
        return this;
    }

    /**
     * Get the hubBillingInfo property: Billing settings of the hub.
     *
     * @return the hubBillingInfo value.
     */
    public HubBillingInfoFormat hubBillingInfo() {
        return this.hubBillingInfo;
    }

    /**
     * Set the hubBillingInfo property: Billing settings of the hub.
     *
     * @param hubBillingInfo the hubBillingInfo value to set.
     * @return the HubPropertiesFormat object itself.
     */
    public HubPropertiesFormat withHubBillingInfo(HubBillingInfoFormat hubBillingInfo) {
        this.hubBillingInfo = hubBillingInfo;
        return this;
    }

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