// *** 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.gcp.organizations;

import com.pulumi.core.Output;
import com.pulumi.core.TypeShape;
import com.pulumi.deployment.Deployment;
import com.pulumi.deployment.InvokeOptions;
import com.pulumi.gcp.Utilities;
import com.pulumi.gcp.organizations.inputs.GetActiveFolderArgs;
import com.pulumi.gcp.organizations.inputs.GetActiveFolderPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
import com.pulumi.gcp.organizations.inputs.GetBillingAccountPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
import com.pulumi.gcp.organizations.inputs.GetFolderPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetFoldersArgs;
import com.pulumi.gcp.organizations.inputs.GetFoldersPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
import com.pulumi.gcp.organizations.inputs.GetIAMPolicyPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
import com.pulumi.gcp.organizations.inputs.GetOrganizationPlainArgs;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.organizations.inputs.GetProjectPlainArgs;
import com.pulumi.gcp.organizations.outputs.GetActiveFolderResult;
import com.pulumi.gcp.organizations.outputs.GetBillingAccountResult;
import com.pulumi.gcp.organizations.outputs.GetClientConfigResult;
import com.pulumi.gcp.organizations.outputs.GetClientOpenIdUserInfoResult;
import com.pulumi.gcp.organizations.outputs.GetFolderResult;
import com.pulumi.gcp.organizations.outputs.GetFoldersResult;
import com.pulumi.gcp.organizations.outputs.GetIAMPolicyResult;
import com.pulumi.gcp.organizations.outputs.GetOrganizationResult;
import com.pulumi.gcp.organizations.outputs.GetProjectResult;
import com.pulumi.resources.InvokeArgs;
import java.util.concurrent.CompletableFuture;

public final class OrganizationsFunctions {
    /**
     * Get an active folder within GCP by `display_name` and `parent`.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetActiveFolderArgs;
     * 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 department1 = OrganizationsFunctions.getActiveFolder(GetActiveFolderArgs.builder()
     *             .displayName(&#34;Department 1&#34;)
     *             .parent(&#34;organizations/1234567&#34;)
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetActiveFolderResult> getActiveFolder(GetActiveFolderArgs args) {
        return getActiveFolder(args, InvokeOptions.Empty);
    }
    /**
     * Get an active folder within GCP by `display_name` and `parent`.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetActiveFolderArgs;
     * 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 department1 = OrganizationsFunctions.getActiveFolder(GetActiveFolderArgs.builder()
     *             .displayName(&#34;Department 1&#34;)
     *             .parent(&#34;organizations/1234567&#34;)
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetActiveFolderResult> getActiveFolderPlain(GetActiveFolderPlainArgs args) {
        return getActiveFolderPlain(args, InvokeOptions.Empty);
    }
    /**
     * Get an active folder within GCP by `display_name` and `parent`.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetActiveFolderArgs;
     * 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 department1 = OrganizationsFunctions.getActiveFolder(GetActiveFolderArgs.builder()
     *             .displayName(&#34;Department 1&#34;)
     *             .parent(&#34;organizations/1234567&#34;)
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetActiveFolderResult> getActiveFolder(GetActiveFolderArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getActiveFolder:getActiveFolder", TypeShape.of(GetActiveFolderResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Get an active folder within GCP by `display_name` and `parent`.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetActiveFolderArgs;
     * 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 department1 = OrganizationsFunctions.getActiveFolder(GetActiveFolderArgs.builder()
     *             .displayName(&#34;Department 1&#34;)
     *             .parent(&#34;organizations/1234567&#34;)
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetActiveFolderResult> getActiveFolderPlain(GetActiveFolderPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getActiveFolder:getActiveFolder", TypeShape.of(GetActiveFolderResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetBillingAccountResult> getBillingAccount() {
        return getBillingAccount(GetBillingAccountArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetBillingAccountResult> getBillingAccountPlain() {
        return getBillingAccountPlain(GetBillingAccountPlainArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetBillingAccountResult> getBillingAccount(GetBillingAccountArgs args) {
        return getBillingAccount(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetBillingAccountResult> getBillingAccountPlain(GetBillingAccountPlainArgs args) {
        return getBillingAccountPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetBillingAccountResult> getBillingAccount(GetBillingAccountArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getBillingAccount:getBillingAccount", TypeShape.of(GetBillingAccountResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get information about a Google Billing Account.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;
     * import com.pulumi.gcp.organizations.Project;
     * import com.pulumi.gcp.organizations.ProjectArgs;
     * 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 acct = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()
     *             .displayName(&#34;My Billing Account&#34;)
     *             .open(true)
     *             .build());
     * 
     *         var myProject = new Project(&#34;myProject&#34;, ProjectArgs.builder()        
     *             .projectId(&#34;your-project-id&#34;)
     *             .orgId(&#34;1234567&#34;)
     *             .billingAccount(acct.applyValue(getBillingAccountResult -&gt; getBillingAccountResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetBillingAccountResult> getBillingAccountPlain(GetBillingAccountPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getBillingAccount:getBillingAccount", TypeShape.of(GetBillingAccountResult.class), args, Utilities.withVersion(options));
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientConfigResult> getClientConfig() {
        return getClientConfig(InvokeArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientConfigResult> getClientConfigPlain() {
        return getClientConfigPlain(InvokeArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientConfigResult> getClientConfig(InvokeArgs args) {
        return getClientConfig(args, InvokeOptions.Empty);
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientConfigResult> getClientConfigPlain(InvokeArgs args) {
        return getClientConfigPlain(args, InvokeOptions.Empty);
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientConfigResult> getClientConfig(InvokeArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getClientConfig:getClientConfig", TypeShape.of(GetClientConfigResult.class), args, Utilities.withVersion(options));
    }
    /**
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 current = OrganizationsFunctions.getClientConfig();
     * 
     *         ctx.export(&#34;project&#34;, current.applyValue(getClientConfigResult -&gt; getClientConfigResult.project()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientConfigResult> getClientConfigPlain(InvokeArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getClientConfig:getClientConfig", TypeShape.of(GetClientConfigResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfo() {
        return getClientOpenIdUserInfo(InvokeArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfoPlain() {
        return getClientOpenIdUserInfoPlain(InvokeArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfo(InvokeArgs args) {
        return getClientOpenIdUserInfo(args, InvokeOptions.Empty);
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfoPlain(InvokeArgs args) {
        return getClientOpenIdUserInfoPlain(args, InvokeOptions.Empty);
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfo(InvokeArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getClientOpenIdUserInfo:getClientOpenIdUserInfo", TypeShape.of(GetClientOpenIdUserInfoResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Get OpenID userinfo about the credentials used with the Google provider,
     * specifically the email.
     * 
     * This datasource enables you to export the email of the account you&#39;ve
     * authenticated the provider with; this can be used alongside
     * `data.google_client_config`&#39;s `access_token` to perform OpenID Connect
     * authentication with GKE and configure an RBAC role for the email used.
     * 
     * &gt; This resource will only work as expected if the provider is configured to
     * use the `https://www.googleapis.com/auth/userinfo.email` scope! You will
     * receive an error otherwise. The provider uses this scope by default.
     * 
     * ## Example Usage
     * ### Exporting An Email
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * 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 me = OrganizationsFunctions.getClientOpenIdUserInfo();
     * 
     *         ctx.export(&#34;my-email&#34;, me.applyValue(getClientOpenIdUserInfoResult -&gt; getClientOpenIdUserInfoResult.email()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetClientOpenIdUserInfoResult> getClientOpenIdUserInfoPlain(InvokeArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getClientOpenIdUserInfo:getClientOpenIdUserInfo", TypeShape.of(GetClientOpenIdUserInfoResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get information about a Google Cloud Folder.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 myFolder1 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/12345&#34;)
     *             .lookupOrganization(true)
     *             .build());
     * 
     *         final var myFolder2 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/23456&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;myFolder1Organization&#34;, myFolder1.applyValue(getFolderResult -&gt; getFolderResult.organization()));
     *         ctx.export(&#34;myFolder2Parent&#34;, myFolder2.applyValue(getFolderResult -&gt; getFolderResult.parent()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetFolderResult> getFolder(GetFolderArgs args) {
        return getFolder(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Cloud Folder.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 myFolder1 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/12345&#34;)
     *             .lookupOrganization(true)
     *             .build());
     * 
     *         final var myFolder2 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/23456&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;myFolder1Organization&#34;, myFolder1.applyValue(getFolderResult -&gt; getFolderResult.organization()));
     *         ctx.export(&#34;myFolder2Parent&#34;, myFolder2.applyValue(getFolderResult -&gt; getFolderResult.parent()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetFolderResult> getFolderPlain(GetFolderPlainArgs args) {
        return getFolderPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get information about a Google Cloud Folder.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 myFolder1 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/12345&#34;)
     *             .lookupOrganization(true)
     *             .build());
     * 
     *         final var myFolder2 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/23456&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;myFolder1Organization&#34;, myFolder1.applyValue(getFolderResult -&gt; getFolderResult.organization()));
     *         ctx.export(&#34;myFolder2Parent&#34;, myFolder2.applyValue(getFolderResult -&gt; getFolderResult.parent()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetFolderResult> getFolder(GetFolderArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getFolder:getFolder", TypeShape.of(GetFolderResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get information about a Google Cloud Folder.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 myFolder1 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/12345&#34;)
     *             .lookupOrganization(true)
     *             .build());
     * 
     *         final var myFolder2 = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(&#34;folders/23456&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;myFolder1Organization&#34;, myFolder1.applyValue(getFolderResult -&gt; getFolderResult.organization()));
     *         ctx.export(&#34;myFolder2Parent&#34;, myFolder2.applyValue(getFolderResult -&gt; getFolderResult.parent()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetFolderResult> getFolderPlain(GetFolderPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getFolder:getFolder", TypeShape.of(GetFolderResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Retrieve information about a set of folders based on a parent ID. See the
     * [REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)
     * for more details.
     * 
     * ## Example Usage
     * ### Searching For Folders At The Root Of An Org
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFoldersArgs;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()
     *             .parentId(String.format(&#34;organizations/%s&#34;, var_.organization_id()))
     *             .build());
     * 
     *         final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(my_org_folders.folders()[0].name())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetFoldersResult> getFolders(GetFoldersArgs args) {
        return getFolders(args, InvokeOptions.Empty);
    }
    /**
     * Retrieve information about a set of folders based on a parent ID. See the
     * [REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)
     * for more details.
     * 
     * ## Example Usage
     * ### Searching For Folders At The Root Of An Org
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFoldersArgs;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()
     *             .parentId(String.format(&#34;organizations/%s&#34;, var_.organization_id()))
     *             .build());
     * 
     *         final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(my_org_folders.folders()[0].name())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetFoldersResult> getFoldersPlain(GetFoldersPlainArgs args) {
        return getFoldersPlain(args, InvokeOptions.Empty);
    }
    /**
     * Retrieve information about a set of folders based on a parent ID. See the
     * [REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)
     * for more details.
     * 
     * ## Example Usage
     * ### Searching For Folders At The Root Of An Org
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFoldersArgs;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()
     *             .parentId(String.format(&#34;organizations/%s&#34;, var_.organization_id()))
     *             .build());
     * 
     *         final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(my_org_folders.folders()[0].name())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetFoldersResult> getFolders(GetFoldersArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getFolders:getFolders", TypeShape.of(GetFoldersResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Retrieve information about a set of folders based on a parent ID. See the
     * [REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)
     * for more details.
     * 
     * ## Example Usage
     * ### Searching For Folders At The Root Of An Org
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetFoldersArgs;
     * import com.pulumi.gcp.organizations.inputs.GetFolderArgs;
     * 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 my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()
     *             .parentId(String.format(&#34;organizations/%s&#34;, var_.organization_id()))
     *             .build());
     * 
     *         final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()
     *             .folder(my_org_folders.folders()[0].name())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetFoldersResult> getFoldersPlain(GetFoldersPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getFolders:getFolders", TypeShape.of(GetFoldersResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static Output<GetIAMPolicyResult> getIAMPolicy() {
        return getIAMPolicy(GetIAMPolicyArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static CompletableFuture<GetIAMPolicyResult> getIAMPolicyPlain() {
        return getIAMPolicyPlain(GetIAMPolicyPlainArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static Output<GetIAMPolicyResult> getIAMPolicy(GetIAMPolicyArgs args) {
        return getIAMPolicy(args, InvokeOptions.Empty);
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static CompletableFuture<GetIAMPolicyResult> getIAMPolicyPlain(GetIAMPolicyPlainArgs args) {
        return getIAMPolicyPlain(args, InvokeOptions.Empty);
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static Output<GetIAMPolicyResult> getIAMPolicy(GetIAMPolicyArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getIAMPolicy:getIAMPolicy", TypeShape.of(GetIAMPolicyResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Generates an IAM policy document that may be referenced by and applied to
     * other Google Cloud Platform IAM resources, such as the `gcp.projects.IAMPolicy` resource.
     * 
     * **Note:** Please review the documentation of the resource that you will be using the datasource with. Some resources such as `gcp.projects.IAMPolicy` and others have limitations in their API methods which are noted on their respective page.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;
     * 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 admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()
     *             .auditConfigs(GetIAMPolicyAuditConfigArgs.builder()
     *                 .auditLogConfigs(                
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .exemptedMembers(&#34;user:you@domain.com&#34;)
     *                         .logType(&#34;DATA_READ&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;DATA_WRITE&#34;)
     *                         .build(),
     *                     GetIAMPolicyAuditConfigAuditLogConfigArgs.builder()
     *                         .logType(&#34;ADMIN_READ&#34;)
     *                         .build())
     *                 .service(&#34;cloudkms.googleapis.com&#34;)
     *                 .build())
     *             .bindings(            
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;serviceAccount:your-custom-sa@your-project.iam.gserviceaccount.com&#34;)
     *                     .role(&#34;roles/compute.instanceAdmin&#34;)
     *                     .build(),
     *                 GetIAMPolicyBindingArgs.builder()
     *                     .members(&#34;user:alice@gmail.com&#34;)
     *                     .role(&#34;roles/storage.objectViewer&#34;)
     *                     .build())
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     * This data source is used to define IAM policies to apply to other resources.
     * Currently, defining a policy through a datasource and referencing that policy
     * from another resource is the only way to apply an IAM policy to a resource.
     * 
     */
    public static CompletableFuture<GetIAMPolicyResult> getIAMPolicyPlain(GetIAMPolicyPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getIAMPolicy:getIAMPolicy", TypeShape.of(GetIAMPolicyResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetOrganizationResult> getOrganization() {
        return getOrganization(GetOrganizationArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetOrganizationResult> getOrganizationPlain() {
        return getOrganizationPlain(GetOrganizationPlainArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetOrganizationResult> getOrganization(GetOrganizationArgs args) {
        return getOrganization(args, InvokeOptions.Empty);
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetOrganizationResult> getOrganizationPlain(GetOrganizationPlainArgs args) {
        return getOrganizationPlain(args, InvokeOptions.Empty);
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetOrganizationResult> getOrganization(GetOrganizationArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getOrganization:getOrganization", TypeShape.of(GetOrganizationResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Get information about a Google Cloud Organization. Note that you must have the `roles/resourcemanager.organizationViewer` role (or equivalent permissions) at the organization level to use this datasource.
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;
     * import com.pulumi.gcp.organizations.Folder;
     * import com.pulumi.gcp.organizations.FolderArgs;
     * 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 org = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
     *             .domain(&#34;example.com&#34;)
     *             .build());
     * 
     *         var sales = new Folder(&#34;sales&#34;, FolderArgs.builder()        
     *             .displayName(&#34;Sales&#34;)
     *             .parent(org.applyValue(getOrganizationResult -&gt; getOrganizationResult.name()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetOrganizationResult> getOrganizationPlain(GetOrganizationPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getOrganization:getOrganization", TypeShape.of(GetOrganizationResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetProjectResult> getProject() {
        return getProject(GetProjectArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetProjectResult> getProjectPlain() {
        return getProjectPlain(GetProjectPlainArgs.Empty, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetProjectResult> getProject(GetProjectArgs args) {
        return getProject(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetProjectResult> getProjectPlain(GetProjectPlainArgs args) {
        return getProjectPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetProjectResult> getProject(GetProjectArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("gcp:organizations/getProject:getProject", TypeShape.of(GetProjectResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to get project details.
     * For more information see
     * [API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.gcp.organizations.OrganizationsFunctions;
     * import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
     * 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 project = OrganizationsFunctions.getProject();
     * 
     *         ctx.export(&#34;projectNumber&#34;, project.applyValue(getProjectResult -&gt; getProjectResult.number()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetProjectResult> getProjectPlain(GetProjectPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("gcp:organizations/getProject:getProject", TypeShape.of(GetProjectResult.class), args, Utilities.withVersion(options));
    }
}
