1. Packages
  2. Zscaler Private Access (ZPA)
  3. API Docs
  4. getUserPortalController
Zscaler Private Access v1.0.3 published on Wednesday, Jan 21, 2026 by Zscaler
zpa logo
Zscaler Private Access v1.0.3 published on Wednesday, Jan 21, 2026 by Zscaler

    The zpa_user_portal_controller data source to get information about a user portal in the Zscaler Private Access cloud.

    Example Usage

    With Customer Own Certificate

    import * as pulumi from "@pulumi/pulumi";
    import * as zpa from "@bdzscaler/pulumi-zpa";
    
    const _this = zpa.getBaCertificate({
        name: "example.acme.com",
    });
    const thisUserPortalController = new zpa.UserPortalController("this", {
        name: "UserPortal01",
        description: "UserPortal01",
        enabled: true,
        userNotification: "User_Portal_Terraform_01",
        userNotificationEnabled: true,
        certificateId: _this.then(_this => _this.id),
        domain: "portal01",
    });
    
    import pulumi
    import pulumi_zpa as zpa
    import zscaler_pulumi_zpa as zpa
    
    this = zpa.get_ba_certificate(name="example.acme.com")
    this_user_portal_controller = zpa.UserPortalController("this",
        name="UserPortal01",
        description="UserPortal01",
        enabled=True,
        user_notification="User_Portal_Terraform_01",
        user_notification_enabled=True,
        certificate_id=this.id,
        domain="portal01")
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		this, err := zpa.GetBaCertificate(ctx, &zpa.GetBaCertificateArgs{
    			Name: pulumi.StringRef("example.acme.com"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		_, err = zpa.NewUserPortalController(ctx, "this", &zpa.UserPortalControllerArgs{
    			Name:                    pulumi.String("UserPortal01"),
    			Description:             pulumi.String("UserPortal01"),
    			Enabled:                 pulumi.Bool(true),
    			UserNotification:        pulumi.String("User_Portal_Terraform_01"),
    			UserNotificationEnabled: pulumi.Bool(true),
    			CertificateId:           pulumi.String(this.Id),
    			Domain:                  pulumi.String("portal01"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Zpa = Pulumi.Zpa;
    using Zpa = zscaler.PulumiPackage.Zpa;
    
    return await Deployment.RunAsync(() => 
    {
        var @this = Zpa.GetBaCertificate.Invoke(new()
        {
            Name = "example.acme.com",
        });
    
        var thisUserPortalController = new Zpa.UserPortalController("this", new()
        {
            Name = "UserPortal01",
            Description = "UserPortal01",
            Enabled = true,
            UserNotification = "User_Portal_Terraform_01",
            UserNotificationEnabled = true,
            CertificateId = @this.Apply(@this => @this.Apply(getBaCertificateResult => getBaCertificateResult.Id)),
            Domain = "portal01",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.zpa.ZpaFunctions;
    import com.pulumi.zpa.inputs.GetBaCertificateArgs;
    import com.pulumi.zpa.UserPortalController;
    import com.pulumi.zpa.UserPortalControllerArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var this = ZpaFunctions.getBaCertificate(GetBaCertificateArgs.builder()
                .name("example.acme.com")
                .build());
    
            var thisUserPortalController = new UserPortalController("thisUserPortalController", UserPortalControllerArgs.builder()
                .name("UserPortal01")
                .description("UserPortal01")
                .enabled(true)
                .userNotification("User_Portal_Terraform_01")
                .userNotificationEnabled(true)
                .certificateId(this_.id())
                .domain("portal01")
                .build());
    
        }
    }
    
    resources:
      thisUserPortalController:
        type: zpa:UserPortalController
        name: this
        properties:
          name: UserPortal01
          description: UserPortal01
          enabled: true
          userNotification: User_Portal_Terraform_01
          userNotificationEnabled: true
          certificateId: ${this.id}
          domain: portal01
    variables:
      this:
        fn::invoke:
          function: zpa:getBaCertificate
          arguments:
            name: example.acme.com
    

    With Zscaler Managed Certificate

    import * as pulumi from "@pulumi/pulumi";
    import * as zpa from "@bdzscaler/pulumi-zpa";
    
    const _this = zpa.getUserPortalController({
        name: "UserPortal01",
    });
    
    import pulumi
    import pulumi_zpa as zpa
    
    this = zpa.get_user_portal_controller(name="UserPortal01")
    
    package main
    
    import (
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    	"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := zpa.LookupUserPortalController(ctx, &zpa.LookupUserPortalControllerArgs{
    			Name: pulumi.StringRef("UserPortal01"),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Zpa = Pulumi.Zpa;
    
    return await Deployment.RunAsync(() => 
    {
        var @this = Zpa.GetUserPortalController.Invoke(new()
        {
            Name = "UserPortal01",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.zpa.ZpaFunctions;
    import com.pulumi.zpa.inputs.GetUserPortalControllerArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var this = ZpaFunctions.getUserPortalController(GetUserPortalControllerArgs.builder()
                .name("UserPortal01")
                .build());
    
        }
    }
    
    variables:
      this:
        fn::invoke:
          function: zpa:getUserPortalController
          arguments:
            name: UserPortal01
    

    Using getUserPortalController

    Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

    function getUserPortalController(args: GetUserPortalControllerArgs, opts?: InvokeOptions): Promise<GetUserPortalControllerResult>
    function getUserPortalControllerOutput(args: GetUserPortalControllerOutputArgs, opts?: InvokeOptions): Output<GetUserPortalControllerResult>
    def get_user_portal_controller(id: Optional[str] = None,
                                   microtenant_id: Optional[str] = None,
                                   name: Optional[str] = None,
                                   opts: Optional[InvokeOptions] = None) -> GetUserPortalControllerResult
    def get_user_portal_controller_output(id: Optional[pulumi.Input[str]] = None,
                                   microtenant_id: Optional[pulumi.Input[str]] = None,
                                   name: Optional[pulumi.Input[str]] = None,
                                   opts: Optional[InvokeOptions] = None) -> Output[GetUserPortalControllerResult]
    func LookupUserPortalController(ctx *Context, args *LookupUserPortalControllerArgs, opts ...InvokeOption) (*LookupUserPortalControllerResult, error)
    func LookupUserPortalControllerOutput(ctx *Context, args *LookupUserPortalControllerOutputArgs, opts ...InvokeOption) LookupUserPortalControllerResultOutput

    > Note: This function is named LookupUserPortalController in the Go SDK.

    public static class GetUserPortalController 
    {
        public static Task<GetUserPortalControllerResult> InvokeAsync(GetUserPortalControllerArgs args, InvokeOptions? opts = null)
        public static Output<GetUserPortalControllerResult> Invoke(GetUserPortalControllerInvokeArgs args, InvokeOptions? opts = null)
    }
    public static CompletableFuture<GetUserPortalControllerResult> getUserPortalController(GetUserPortalControllerArgs args, InvokeOptions options)
    public static Output<GetUserPortalControllerResult> getUserPortalController(GetUserPortalControllerArgs args, InvokeOptions options)
    
    fn::invoke:
      function: zpa:index/getUserPortalController:getUserPortalController
      arguments:
        # arguments dictionary

    The following arguments are supported:

    Id string
    MicrotenantId string
    Name string
    Id string
    MicrotenantId string
    Name string
    id String
    microtenantId String
    name String
    id string
    microtenantId string
    name string
    id String
    microtenantId String
    name String

    getUserPortalController Result

    The following output properties are available:

    Package Details

    Repository
    zpa zscaler/pulumi-zpa
    License
    MIT
    Notes
    This Pulumi package is based on the zpa Terraform Provider.
    zpa logo
    Zscaler Private Access v1.0.3 published on Wednesday, Jan 21, 2026 by Zscaler
      Meet Neo: Your AI Platform Teammate