published on Tuesday, Jun 9, 2026 by Pulumiverse
published on Tuesday, Jun 9, 2026 by Pulumiverse
Dynatrace SaaS only
To utilize this resource, please define the environment variables
DT_CLIENT_ID,DT_CLIENT_SECRET,DT_ACCOUNT_IDwith an OAuth client including the following permission: Allow read access for identity resources (users and groups) (account-idm-read).
This data source allows you to query a service user by ID, name, or email address. Note: as the name of a service user is not necessarily unique, the data source will produce an error if two or more service users exist with the specified name.
Example Usage
Query a service user by name:
import * as pulumi from "@pulumi/pulumi";
import * as dynatrace from "@pulumiverse/dynatrace";
export = async () => {
const testServiceUser = await dynatrace.getIamServiceUser({
name: "test",
});
return {
testServiceUser: testServiceUser,
};
}
import pulumi
import pulumi_dynatrace as dynatrace
test_service_user = dynatrace.get_iam_service_user(name="test")
pulumi.export("testServiceUser", test_service_user)
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-dynatrace/sdk/go/dynatrace"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
testServiceUser, err := dynatrace.GetIamServiceUser(ctx, &dynatrace.LookupIamServiceUserArgs{
Name: pulumi.StringRef("test"),
}, nil)
if err != nil {
return err
}
ctx.Export("testServiceUser", testServiceUser)
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Dynatrace = Pulumiverse.Dynatrace;
return await Deployment.RunAsync(() =>
{
var testServiceUser = Dynatrace.GetIamServiceUser.Invoke(new()
{
Name = "test",
});
return new Dictionary<string, object?>
{
["testServiceUser"] = testServiceUser,
};
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.dynatrace.DynatraceFunctions;
import com.pulumi.dynatrace.inputs.GetIamServiceUserArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 testServiceUser = DynatraceFunctions.getIamServiceUser(GetIamServiceUserArgs.builder()
.name("test")
.build());
ctx.export("testServiceUser", testServiceUser);
}
}
variables:
testServiceUser:
fn::invoke:
function: dynatrace:getIamServiceUser
arguments:
name: test
outputs:
testServiceUser: ${testServiceUser}
pulumi {
required_providers {
dynatrace = {
source = "pulumi/dynatrace"
}
}
}
data "dynatrace_getiamserviceuser" "testServiceUser" {
name = "test"
}
output "testServiceUser" {
value = data.dynatrace_getiamserviceuser.testServiceUser
}
Query a service user by ID:
import * as pulumi from "@pulumi/pulumi";
import * as dynatrace from "@pulumiverse/dynatrace";
export = async () => {
const testServiceUser = await dynatrace.getIamServiceUser({
id: "12345678-90ab-cdef-1234-567890abcdef",
});
return {
testServiceUser: testServiceUser,
};
}
import pulumi
import pulumi_dynatrace as dynatrace
test_service_user = dynatrace.get_iam_service_user(id="12345678-90ab-cdef-1234-567890abcdef")
pulumi.export("testServiceUser", test_service_user)
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-dynatrace/sdk/go/dynatrace"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
testServiceUser, err := dynatrace.GetIamServiceUser(ctx, &dynatrace.LookupIamServiceUserArgs{
Id: pulumi.StringRef("12345678-90ab-cdef-1234-567890abcdef"),
}, nil)
if err != nil {
return err
}
ctx.Export("testServiceUser", testServiceUser)
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Dynatrace = Pulumiverse.Dynatrace;
return await Deployment.RunAsync(() =>
{
var testServiceUser = Dynatrace.GetIamServiceUser.Invoke(new()
{
Id = "12345678-90ab-cdef-1234-567890abcdef",
});
return new Dictionary<string, object?>
{
["testServiceUser"] = testServiceUser,
};
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.dynatrace.DynatraceFunctions;
import com.pulumi.dynatrace.inputs.GetIamServiceUserArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 testServiceUser = DynatraceFunctions.getIamServiceUser(GetIamServiceUserArgs.builder()
.id("12345678-90ab-cdef-1234-567890abcdef")
.build());
ctx.export("testServiceUser", testServiceUser);
}
}
variables:
testServiceUser:
fn::invoke:
function: dynatrace:getIamServiceUser
arguments:
id: 12345678-90ab-cdef-1234-567890abcdef
outputs:
testServiceUser: ${testServiceUser}
pulumi {
required_providers {
dynatrace = {
source = "pulumi/dynatrace"
}
}
}
data "dynatrace_getiamserviceuser" "testServiceUser" {
id = "12345678-90ab-cdef-1234-567890abcdef"
}
output "testServiceUser" {
value = data.dynatrace_getiamserviceuser.testServiceUser
}
Query a service user by email:
import * as pulumi from "@pulumi/pulumi";
import * as dynatrace from "@pulumiverse/dynatrace";
export = async () => {
const testServiceUser = await dynatrace.getIamServiceUser({
email: "12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com",
});
return {
testServiceUser: testServiceUser,
};
}
import pulumi
import pulumi_dynatrace as dynatrace
test_service_user = dynatrace.get_iam_service_user(email="12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com")
pulumi.export("testServiceUser", test_service_user)
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumiverse/pulumi-dynatrace/sdk/go/dynatrace"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
testServiceUser, err := dynatrace.GetIamServiceUser(ctx, &dynatrace.LookupIamServiceUserArgs{
Email: pulumi.StringRef("12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com"),
}, nil)
if err != nil {
return err
}
ctx.Export("testServiceUser", testServiceUser)
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Dynatrace = Pulumiverse.Dynatrace;
return await Deployment.RunAsync(() =>
{
var testServiceUser = Dynatrace.GetIamServiceUser.Invoke(new()
{
Email = "12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com",
});
return new Dictionary<string, object?>
{
["testServiceUser"] = testServiceUser,
};
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.dynatrace.DynatraceFunctions;
import com.pulumi.dynatrace.inputs.GetIamServiceUserArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 testServiceUser = DynatraceFunctions.getIamServiceUser(GetIamServiceUserArgs.builder()
.email("12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com")
.build());
ctx.export("testServiceUser", testServiceUser);
}
}
variables:
testServiceUser:
fn::invoke:
function: dynatrace:getIamServiceUser
arguments:
email: 12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com
outputs:
testServiceUser: ${testServiceUser}
pulumi {
required_providers {
dynatrace = {
source = "pulumi/dynatrace"
}
}
}
data "dynatrace_getiamserviceuser" "testServiceUser" {
email = "12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com"
}
output "testServiceUser" {
value = data.dynatrace_getiamserviceuser.testServiceUser
}
Example Output
test_service_user = {
"description" = "Test service user"
"email" = "12345678-90ab-cdef-1234-567890abcdef@service.sso.dynatrace.com"
"groups" = tolist([
"abcdef12-3456-7890-abcd-ef1234567890",
])
"id" = "12345678-90ab-cdef-1234-567890abcdef"
"name" = "test"
}
Using getIamServiceUser
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 getIamServiceUser(args: GetIamServiceUserArgs, opts?: InvokeOptions): Promise<GetIamServiceUserResult>
function getIamServiceUserOutput(args: GetIamServiceUserOutputArgs, opts?: InvokeOptions): Output<GetIamServiceUserResult>def get_iam_service_user(email: Optional[str] = None,
id: Optional[str] = None,
name: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetIamServiceUserResult
def get_iam_service_user_output(email: pulumi.Input[Optional[str]] = None,
id: pulumi.Input[Optional[str]] = None,
name: pulumi.Input[Optional[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetIamServiceUserResult]func LookupIamServiceUser(ctx *Context, args *LookupIamServiceUserArgs, opts ...InvokeOption) (*LookupIamServiceUserResult, error)
func LookupIamServiceUserOutput(ctx *Context, args *LookupIamServiceUserOutputArgs, opts ...InvokeOption) LookupIamServiceUserResultOutput> Note: This function is named LookupIamServiceUser in the Go SDK.
public static class GetIamServiceUser
{
public static Task<GetIamServiceUserResult> InvokeAsync(GetIamServiceUserArgs args, InvokeOptions? opts = null)
public static Output<GetIamServiceUserResult> Invoke(GetIamServiceUserInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetIamServiceUserResult> getIamServiceUser(GetIamServiceUserArgs args, InvokeOptions options)
public static Output<GetIamServiceUserResult> getIamServiceUser(GetIamServiceUserArgs args, InvokeOptions options)
fn::invoke:
function: dynatrace:index/getIamServiceUser:getIamServiceUser
arguments:
# arguments dictionarydata "dynatrace_getiamserviceuser" "name" {
# arguments
}The following arguments are supported:
getIamServiceUser Result
The following output properties are available:
- Description string
- The description of the service user
- Groups List<string>
- The UUIDs of the groups the service user belongs to
- Email string
- The email of the service user
- Id string
- The UUID of the service user
- Name string
- The name of the service user
- Description string
- The description of the service user
- Groups []string
- The UUIDs of the groups the service user belongs to
- Email string
- The email of the service user
- Id string
- The UUID of the service user
- Name string
- The name of the service user
- description string
- The description of the service user
- groups list(string)
- The UUIDs of the groups the service user belongs to
- email string
- The email of the service user
- id string
- The UUID of the service user
- name string
- The name of the service user
- description String
- The description of the service user
- groups List<String>
- The UUIDs of the groups the service user belongs to
- email String
- The email of the service user
- id String
- The UUID of the service user
- name String
- The name of the service user
- description string
- The description of the service user
- groups string[]
- The UUIDs of the groups the service user belongs to
- email string
- The email of the service user
- id string
- The UUID of the service user
- name string
- The name of the service user
- description str
- The description of the service user
- groups Sequence[str]
- The UUIDs of the groups the service user belongs to
- email str
- The email of the service user
- id str
- The UUID of the service user
- name str
- The name of the service user
- description String
- The description of the service user
- groups List<String>
- The UUIDs of the groups the service user belongs to
- email String
- The email of the service user
- id String
- The UUID of the service user
- name String
- The name of the service user
Package Details
- Repository
- dynatrace pulumiverse/pulumi-dynatrace
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
dynatraceTerraform Provider.
published on Tuesday, Jun 9, 2026 by Pulumiverse