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

package com.azure.resourcemanager.apimanagement.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** Identity Provider Base Parameter Properties. */
@Fluent
public class IdentityProviderBaseParameters {
    /*
     * Identity Provider Type identifier.
     */
    @JsonProperty(value = "type")
    private IdentityProviderType type;

    /*
     * The TenantId to use instead of Common when logging into Active Directory
     */
    @JsonProperty(value = "signinTenant")
    private String signinTenant;

    /*
     * List of Allowed Tenants when configuring Azure Active Directory login.
     */
    @JsonProperty(value = "allowedTenants")
    private List<String> allowedTenants;

    /*
     * OpenID Connect discovery endpoint hostname for AAD or AAD B2C.
     */
    @JsonProperty(value = "authority")
    private String authority;

    /*
     * Signup Policy Name. Only applies to AAD B2C Identity Provider.
     */
    @JsonProperty(value = "signupPolicyName")
    private String signupPolicyName;

    /*
     * Signin Policy Name. Only applies to AAD B2C Identity Provider.
     */
    @JsonProperty(value = "signinPolicyName")
    private String signinPolicyName;

    /*
     * Profile Editing Policy Name. Only applies to AAD B2C Identity Provider.
     */
    @JsonProperty(value = "profileEditingPolicyName")
    private String profileEditingPolicyName;

    /*
     * Password Reset Policy Name. Only applies to AAD B2C Identity Provider.
     */
    @JsonProperty(value = "passwordResetPolicyName")
    private String passwordResetPolicyName;

    /**
     * Get the type property: Identity Provider Type identifier.
     *
     * @return the type value.
     */
    public IdentityProviderType type() {
        return this.type;
    }

    /**
     * Set the type property: Identity Provider Type identifier.
     *
     * @param type the type value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withType(IdentityProviderType type) {
        this.type = type;
        return this;
    }

    /**
     * Get the signinTenant property: The TenantId to use instead of Common when logging into Active Directory.
     *
     * @return the signinTenant value.
     */
    public String signinTenant() {
        return this.signinTenant;
    }

    /**
     * Set the signinTenant property: The TenantId to use instead of Common when logging into Active Directory.
     *
     * @param signinTenant the signinTenant value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withSigninTenant(String signinTenant) {
        this.signinTenant = signinTenant;
        return this;
    }

    /**
     * Get the allowedTenants property: List of Allowed Tenants when configuring Azure Active Directory login.
     *
     * @return the allowedTenants value.
     */
    public List<String> allowedTenants() {
        return this.allowedTenants;
    }

    /**
     * Set the allowedTenants property: List of Allowed Tenants when configuring Azure Active Directory login.
     *
     * @param allowedTenants the allowedTenants value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withAllowedTenants(List<String> allowedTenants) {
        this.allowedTenants = allowedTenants;
        return this;
    }

    /**
     * Get the authority property: OpenID Connect discovery endpoint hostname for AAD or AAD B2C.
     *
     * @return the authority value.
     */
    public String authority() {
        return this.authority;
    }

    /**
     * Set the authority property: OpenID Connect discovery endpoint hostname for AAD or AAD B2C.
     *
     * @param authority the authority value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withAuthority(String authority) {
        this.authority = authority;
        return this;
    }

    /**
     * Get the signupPolicyName property: Signup Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @return the signupPolicyName value.
     */
    public String signupPolicyName() {
        return this.signupPolicyName;
    }

    /**
     * Set the signupPolicyName property: Signup Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @param signupPolicyName the signupPolicyName value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withSignupPolicyName(String signupPolicyName) {
        this.signupPolicyName = signupPolicyName;
        return this;
    }

    /**
     * Get the signinPolicyName property: Signin Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @return the signinPolicyName value.
     */
    public String signinPolicyName() {
        return this.signinPolicyName;
    }

    /**
     * Set the signinPolicyName property: Signin Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @param signinPolicyName the signinPolicyName value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withSigninPolicyName(String signinPolicyName) {
        this.signinPolicyName = signinPolicyName;
        return this;
    }

    /**
     * Get the profileEditingPolicyName property: Profile Editing Policy Name. Only applies to AAD B2C Identity
     * Provider.
     *
     * @return the profileEditingPolicyName value.
     */
    public String profileEditingPolicyName() {
        return this.profileEditingPolicyName;
    }

    /**
     * Set the profileEditingPolicyName property: Profile Editing Policy Name. Only applies to AAD B2C Identity
     * Provider.
     *
     * @param profileEditingPolicyName the profileEditingPolicyName value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withProfileEditingPolicyName(String profileEditingPolicyName) {
        this.profileEditingPolicyName = profileEditingPolicyName;
        return this;
    }

    /**
     * Get the passwordResetPolicyName property: Password Reset Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @return the passwordResetPolicyName value.
     */
    public String passwordResetPolicyName() {
        return this.passwordResetPolicyName;
    }

    /**
     * Set the passwordResetPolicyName property: Password Reset Policy Name. Only applies to AAD B2C Identity Provider.
     *
     * @param passwordResetPolicyName the passwordResetPolicyName value to set.
     * @return the IdentityProviderBaseParameters object itself.
     */
    public IdentityProviderBaseParameters withPasswordResetPolicyName(String passwordResetPolicyName) {
        this.passwordResetPolicyName = passwordResetPolicyName;
        return this;
    }

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