// *** 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.aws.connect.outputs;

import com.pulumi.aws.connect.outputs.GetUserIdentityInfo;
import com.pulumi.aws.connect.outputs.GetUserPhoneConfig;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@CustomType
public final class GetUserResult {
    /**
     * @return The Amazon Resource Name (ARN) of the User.
     * 
     */
    private String arn;
    /**
     * @return The identifier of the user account in the directory used for identity management.
     * 
     */
    private String directoryUserId;
    /**
     * @return The identifier of the hierarchy group for the user.
     * 
     */
    private String hierarchyGroupId;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    /**
     * @return A block that contains information about the identity of the user. Documented below.
     * 
     */
    private List<GetUserIdentityInfo> identityInfos;
    /**
     * @return Specifies the identifier of the hosting Amazon Connect Instance.
     * 
     */
    private String instanceId;
    private String name;
    /**
     * @return A block that contains information about the phone settings for the user. Documented below.
     * 
     */
    private List<GetUserPhoneConfig> phoneConfigs;
    /**
     * @return The identifier of the routing profile for the user.
     * 
     */
    private String routingProfileId;
    /**
     * @return A list of identifiers for the security profiles for the user.
     * 
     */
    private List<String> securityProfileIds;
    /**
     * @return A map of tags to assign to the User.
     * 
     */
    private Map<String,String> tags;
    private String userId;

    private GetUserResult() {}
    /**
     * @return The Amazon Resource Name (ARN) of the User.
     * 
     */
    public String arn() {
        return this.arn;
    }
    /**
     * @return The identifier of the user account in the directory used for identity management.
     * 
     */
    public String directoryUserId() {
        return this.directoryUserId;
    }
    /**
     * @return The identifier of the hierarchy group for the user.
     * 
     */
    public String hierarchyGroupId() {
        return this.hierarchyGroupId;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return A block that contains information about the identity of the user. Documented below.
     * 
     */
    public List<GetUserIdentityInfo> identityInfos() {
        return this.identityInfos;
    }
    /**
     * @return Specifies the identifier of the hosting Amazon Connect Instance.
     * 
     */
    public String instanceId() {
        return this.instanceId;
    }
    public String name() {
        return this.name;
    }
    /**
     * @return A block that contains information about the phone settings for the user. Documented below.
     * 
     */
    public List<GetUserPhoneConfig> phoneConfigs() {
        return this.phoneConfigs;
    }
    /**
     * @return The identifier of the routing profile for the user.
     * 
     */
    public String routingProfileId() {
        return this.routingProfileId;
    }
    /**
     * @return A list of identifiers for the security profiles for the user.
     * 
     */
    public List<String> securityProfileIds() {
        return this.securityProfileIds;
    }
    /**
     * @return A map of tags to assign to the User.
     * 
     */
    public Map<String,String> tags() {
        return this.tags;
    }
    public String userId() {
        return this.userId;
    }

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

    public static Builder builder(GetUserResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String arn;
        private String directoryUserId;
        private String hierarchyGroupId;
        private String id;
        private List<GetUserIdentityInfo> identityInfos;
        private String instanceId;
        private String name;
        private List<GetUserPhoneConfig> phoneConfigs;
        private String routingProfileId;
        private List<String> securityProfileIds;
        private Map<String,String> tags;
        private String userId;
        public Builder() {}
        public Builder(GetUserResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.arn = defaults.arn;
    	      this.directoryUserId = defaults.directoryUserId;
    	      this.hierarchyGroupId = defaults.hierarchyGroupId;
    	      this.id = defaults.id;
    	      this.identityInfos = defaults.identityInfos;
    	      this.instanceId = defaults.instanceId;
    	      this.name = defaults.name;
    	      this.phoneConfigs = defaults.phoneConfigs;
    	      this.routingProfileId = defaults.routingProfileId;
    	      this.securityProfileIds = defaults.securityProfileIds;
    	      this.tags = defaults.tags;
    	      this.userId = defaults.userId;
        }

        @CustomType.Setter
        public Builder arn(String arn) {
            this.arn = Objects.requireNonNull(arn);
            return this;
        }
        @CustomType.Setter
        public Builder directoryUserId(String directoryUserId) {
            this.directoryUserId = Objects.requireNonNull(directoryUserId);
            return this;
        }
        @CustomType.Setter
        public Builder hierarchyGroupId(String hierarchyGroupId) {
            this.hierarchyGroupId = Objects.requireNonNull(hierarchyGroupId);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder identityInfos(List<GetUserIdentityInfo> identityInfos) {
            this.identityInfos = Objects.requireNonNull(identityInfos);
            return this;
        }
        public Builder identityInfos(GetUserIdentityInfo... identityInfos) {
            return identityInfos(List.of(identityInfos));
        }
        @CustomType.Setter
        public Builder instanceId(String instanceId) {
            this.instanceId = Objects.requireNonNull(instanceId);
            return this;
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder phoneConfigs(List<GetUserPhoneConfig> phoneConfigs) {
            this.phoneConfigs = Objects.requireNonNull(phoneConfigs);
            return this;
        }
        public Builder phoneConfigs(GetUserPhoneConfig... phoneConfigs) {
            return phoneConfigs(List.of(phoneConfigs));
        }
        @CustomType.Setter
        public Builder routingProfileId(String routingProfileId) {
            this.routingProfileId = Objects.requireNonNull(routingProfileId);
            return this;
        }
        @CustomType.Setter
        public Builder securityProfileIds(List<String> securityProfileIds) {
            this.securityProfileIds = Objects.requireNonNull(securityProfileIds);
            return this;
        }
        public Builder securityProfileIds(String... securityProfileIds) {
            return securityProfileIds(List.of(securityProfileIds));
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        @CustomType.Setter
        public Builder userId(String userId) {
            this.userId = Objects.requireNonNull(userId);
            return this;
        }
        public GetUserResult build() {
            final var o = new GetUserResult();
            o.arn = arn;
            o.directoryUserId = directoryUserId;
            o.hierarchyGroupId = hierarchyGroupId;
            o.id = id;
            o.identityInfos = identityInfos;
            o.instanceId = instanceId;
            o.name = name;
            o.phoneConfigs = phoneConfigs;
            o.routingProfileId = routingProfileId;
            o.securityProfileIds = securityProfileIds;
            o.tags = tags;
            o.userId = userId;
            return o;
        }
    }
}
