// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.appplatform.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class SpringCloudApiPortalSsoArgs extends com.pulumi.resources.ResourceArgs {

    public static final SpringCloudApiPortalSsoArgs Empty = new SpringCloudApiPortalSsoArgs();

    /**
     * The public identifier for the application.
     * 
     */
    @Import(name="clientId")
    private @Nullable Output<String> clientId;

    /**
     * @return The public identifier for the application.
     * 
     */
    public Optional<Output<String>> clientId() {
        return Optional.ofNullable(this.clientId);
    }

    /**
     * The secret known only to the application and the authorization server.
     * 
     */
    @Import(name="clientSecret")
    private @Nullable Output<String> clientSecret;

    /**
     * @return The secret known only to the application and the authorization server.
     * 
     */
    public Optional<Output<String>> clientSecret() {
        return Optional.ofNullable(this.clientSecret);
    }

    /**
     * The URI of Issuer Identifier.
     * 
     */
    @Import(name="issuerUri")
    private @Nullable Output<String> issuerUri;

    /**
     * @return The URI of Issuer Identifier.
     * 
     */
    public Optional<Output<String>> issuerUri() {
        return Optional.ofNullable(this.issuerUri);
    }

    /**
     * It defines the specific actions applications can be allowed to do on a user&#39;s behalf.
     * 
     */
    @Import(name="scopes")
    private @Nullable Output<List<String>> scopes;

    /**
     * @return It defines the specific actions applications can be allowed to do on a user&#39;s behalf.
     * 
     */
    public Optional<Output<List<String>>> scopes() {
        return Optional.ofNullable(this.scopes);
    }

    private SpringCloudApiPortalSsoArgs() {}

    private SpringCloudApiPortalSsoArgs(SpringCloudApiPortalSsoArgs $) {
        this.clientId = $.clientId;
        this.clientSecret = $.clientSecret;
        this.issuerUri = $.issuerUri;
        this.scopes = $.scopes;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(SpringCloudApiPortalSsoArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private SpringCloudApiPortalSsoArgs $;

        public Builder() {
            $ = new SpringCloudApiPortalSsoArgs();
        }

        public Builder(SpringCloudApiPortalSsoArgs defaults) {
            $ = new SpringCloudApiPortalSsoArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param clientId The public identifier for the application.
         * 
         * @return builder
         * 
         */
        public Builder clientId(@Nullable Output<String> clientId) {
            $.clientId = clientId;
            return this;
        }

        /**
         * @param clientId The public identifier for the application.
         * 
         * @return builder
         * 
         */
        public Builder clientId(String clientId) {
            return clientId(Output.of(clientId));
        }

        /**
         * @param clientSecret The secret known only to the application and the authorization server.
         * 
         * @return builder
         * 
         */
        public Builder clientSecret(@Nullable Output<String> clientSecret) {
            $.clientSecret = clientSecret;
            return this;
        }

        /**
         * @param clientSecret The secret known only to the application and the authorization server.
         * 
         * @return builder
         * 
         */
        public Builder clientSecret(String clientSecret) {
            return clientSecret(Output.of(clientSecret));
        }

        /**
         * @param issuerUri The URI of Issuer Identifier.
         * 
         * @return builder
         * 
         */
        public Builder issuerUri(@Nullable Output<String> issuerUri) {
            $.issuerUri = issuerUri;
            return this;
        }

        /**
         * @param issuerUri The URI of Issuer Identifier.
         * 
         * @return builder
         * 
         */
        public Builder issuerUri(String issuerUri) {
            return issuerUri(Output.of(issuerUri));
        }

        /**
         * @param scopes It defines the specific actions applications can be allowed to do on a user&#39;s behalf.
         * 
         * @return builder
         * 
         */
        public Builder scopes(@Nullable Output<List<String>> scopes) {
            $.scopes = scopes;
            return this;
        }

        /**
         * @param scopes It defines the specific actions applications can be allowed to do on a user&#39;s behalf.
         * 
         * @return builder
         * 
         */
        public Builder scopes(List<String> scopes) {
            return scopes(Output.of(scopes));
        }

        /**
         * @param scopes It defines the specific actions applications can be allowed to do on a user&#39;s behalf.
         * 
         * @return builder
         * 
         */
        public Builder scopes(String... scopes) {
            return scopes(List.of(scopes));
        }

        public SpringCloudApiPortalSsoArgs build() {
            return $;
        }
    }

}
