Zscaler Private Access v1.0.3 published on Wednesday, Jan 21, 2026 by Zscaler
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 dictionaryThe following arguments are supported:
- Id string
- Microtenant
Id string - Name string
- Id string
- Microtenant
Id string - Name string
- id String
- microtenant
Id String - name String
- id string
- microtenant
Id string - name string
- id str
- microtenant_
id str - name str
- id String
- microtenant
Id String - name String
getUserPortalController Result
The following output properties are available:
- Certificate
Id string - Certificate
Name string - Creation
Time string - Description string
- Domain string
- Enabled bool
- Ext
Domain string - Ext
Domain stringName - Ext
Domain stringTranslation - Ext
Label string - Getc
Name string - Image
Data string - Managed
By boolZs - Microtenant
Name string - Modified
By string - Modified
Time string - User
Notification string - User
Notification boolEnabled - Id string
- Microtenant
Id string - Name string
- Certificate
Id string - Certificate
Name string - Creation
Time string - Description string
- Domain string
- Enabled bool
- Ext
Domain string - Ext
Domain stringName - Ext
Domain stringTranslation - Ext
Label string - Getc
Name string - Image
Data string - Managed
By boolZs - Microtenant
Name string - Modified
By string - Modified
Time string - User
Notification string - User
Notification boolEnabled - Id string
- Microtenant
Id string - Name string
- certificate
Id String - certificate
Name String - creation
Time String - description String
- domain String
- enabled Boolean
- ext
Domain String - ext
Domain StringName - ext
Domain StringTranslation - ext
Label String - getc
Name String - image
Data String - managed
By BooleanZs - microtenant
Name String - modified
By String - modified
Time String - user
Notification String - user
Notification BooleanEnabled - id String
- microtenant
Id String - name String
- certificate
Id string - certificate
Name string - creation
Time string - description string
- domain string
- enabled boolean
- ext
Domain string - ext
Domain stringName - ext
Domain stringTranslation - ext
Label string - getc
Name string - image
Data string - managed
By booleanZs - microtenant
Name string - modified
By string - modified
Time string - user
Notification string - user
Notification booleanEnabled - id string
- microtenant
Id string - name string
- certificate_
id str - certificate_
name str - creation_
time str - description str
- domain str
- enabled bool
- ext_
domain str - ext_
domain_ strname - ext_
domain_ strtranslation - ext_
label str - getc_
name str - image_
data str - managed_
by_ boolzs - microtenant_
name str - modified_
by str - modified_
time str - user_
notification str - user_
notification_ boolenabled - id str
- microtenant_
id str - name str
- certificate
Id String - certificate
Name String - creation
Time String - description String
- domain String
- enabled Boolean
- ext
Domain String - ext
Domain StringName - ext
Domain StringTranslation - ext
Label String - getc
Name String - image
Data String - managed
By BooleanZs - microtenant
Name String - modified
By String - modified
Time String - user
Notification String - user
Notification BooleanEnabled - id String
- microtenant
Id String - name String
Package Details
- Repository
- zpa zscaler/pulumi-zpa
- License
- MIT
- Notes
- This Pulumi package is based on the
zpaTerraform Provider.
Zscaler Private Access v1.0.3 published on Wednesday, Jan 21, 2026 by Zscaler
