// *** 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.azure.apimanagement;

import com.pulumi.azure.Utilities;
import com.pulumi.azure.apimanagement.inputs.GetApiArgs;
import com.pulumi.azure.apimanagement.inputs.GetApiPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetArgs;
import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationArgs;
import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetGatewayPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetGroupArgs;
import com.pulumi.azure.apimanagement.inputs.GetGroupPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetProductArgs;
import com.pulumi.azure.apimanagement.inputs.GetProductPlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
import com.pulumi.azure.apimanagement.inputs.GetServicePlainArgs;
import com.pulumi.azure.apimanagement.inputs.GetUserArgs;
import com.pulumi.azure.apimanagement.inputs.GetUserPlainArgs;
import com.pulumi.azure.apimanagement.outputs.GetApiResult;
import com.pulumi.azure.apimanagement.outputs.GetApiVersionSetResult;
import com.pulumi.azure.apimanagement.outputs.GetGatewayHostNameConfigurationResult;
import com.pulumi.azure.apimanagement.outputs.GetGatewayResult;
import com.pulumi.azure.apimanagement.outputs.GetGroupResult;
import com.pulumi.azure.apimanagement.outputs.GetProductResult;
import com.pulumi.azure.apimanagement.outputs.GetServiceResult;
import com.pulumi.azure.apimanagement.outputs.GetUserResult;
import com.pulumi.core.Output;
import com.pulumi.core.TypeShape;
import com.pulumi.deployment.Deployment;
import com.pulumi.deployment.InvokeOptions;
import java.util.concurrent.CompletableFuture;

public final class ApimanagementFunctions {
    /**
     * Use this data source to access information about an existing API Management API.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiArgs;
     * 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 example = ApimanagementFunctions.getApi(GetApiArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .apiManagementName(&#34;search-api-management&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .revision(&#34;2&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiId&#34;, example.applyValue(getApiResult -&gt; getApiResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetApiResult> getApi(GetApiArgs args) {
        return getApi(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management API.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiArgs;
     * 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 example = ApimanagementFunctions.getApi(GetApiArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .apiManagementName(&#34;search-api-management&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .revision(&#34;2&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiId&#34;, example.applyValue(getApiResult -&gt; getApiResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetApiResult> getApiPlain(GetApiPlainArgs args) {
        return getApiPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management API.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiArgs;
     * 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 example = ApimanagementFunctions.getApi(GetApiArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .apiManagementName(&#34;search-api-management&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .revision(&#34;2&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiId&#34;, example.applyValue(getApiResult -&gt; getApiResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetApiResult> getApi(GetApiArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getApi:getApi", TypeShape.of(GetApiResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management API.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiArgs;
     * 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 example = ApimanagementFunctions.getApi(GetApiArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .apiManagementName(&#34;search-api-management&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .revision(&#34;2&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiId&#34;, example.applyValue(getApiResult -&gt; getApiResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetApiResult> getApiPlain(GetApiPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getApi:getApi", TypeShape.of(GetApiResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Uses this data source to access information about an API Version Set within an API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetArgs;
     * 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 example = ApimanagementFunctions.getApiVersionSet(GetApiVersionSetArgs.builder()
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .apiManagementName(&#34;example-api&#34;)
     *             .name(&#34;example-api-version-set&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiVersionSetId&#34;, example.applyValue(getApiVersionSetResult -&gt; getApiVersionSetResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetApiVersionSetResult> getApiVersionSet(GetApiVersionSetArgs args) {
        return getApiVersionSet(args, InvokeOptions.Empty);
    }
    /**
     * Uses this data source to access information about an API Version Set within an API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetArgs;
     * 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 example = ApimanagementFunctions.getApiVersionSet(GetApiVersionSetArgs.builder()
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .apiManagementName(&#34;example-api&#34;)
     *             .name(&#34;example-api-version-set&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiVersionSetId&#34;, example.applyValue(getApiVersionSetResult -&gt; getApiVersionSetResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetApiVersionSetResult> getApiVersionSetPlain(GetApiVersionSetPlainArgs args) {
        return getApiVersionSetPlain(args, InvokeOptions.Empty);
    }
    /**
     * Uses this data source to access information about an API Version Set within an API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetArgs;
     * 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 example = ApimanagementFunctions.getApiVersionSet(GetApiVersionSetArgs.builder()
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .apiManagementName(&#34;example-api&#34;)
     *             .name(&#34;example-api-version-set&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiVersionSetId&#34;, example.applyValue(getApiVersionSetResult -&gt; getApiVersionSetResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetApiVersionSetResult> getApiVersionSet(GetApiVersionSetArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getApiVersionSet:getApiVersionSet", TypeShape.of(GetApiVersionSetResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Uses this data source to access information about an API Version Set within an API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetApiVersionSetArgs;
     * 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 example = ApimanagementFunctions.getApiVersionSet(GetApiVersionSetArgs.builder()
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .apiManagementName(&#34;example-api&#34;)
     *             .name(&#34;example-api-version-set&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementApiVersionSetId&#34;, example.applyValue(getApiVersionSetResult -&gt; getApiVersionSetResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetApiVersionSetResult> getApiVersionSetPlain(GetApiVersionSetPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getApiVersionSet:getApiVersionSet", TypeShape.of(GetApiVersionSetResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Gateway.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-rg&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-api-gateway&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGatewayResult> getGateway(GetGatewayArgs args) {
        return getGateway(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Gateway.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-rg&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-api-gateway&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGatewayResult> getGatewayPlain(GetGatewayPlainArgs args) {
        return getGatewayPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Gateway.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-rg&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-api-gateway&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGatewayResult> getGateway(GetGatewayArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getGateway:getGateway", TypeShape.of(GetGatewayResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Gateway.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-rg&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-api-gateway&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .build());
     * 
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGatewayResult> getGatewayPlain(GetGatewayPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getGateway:getGateway", TypeShape.of(GetGatewayResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Gateway Host Configuration.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-gateway&#34;)
     *             .apiManagementId(data.azurerm_api_management().main().id())
     *             .build());
     * 
     *         final var exampleGatewayHostNameConfiguration = ApimanagementFunctions.getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs.builder()
     *             .name(&#34;example-host-configuration&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .gatewayName(exampleGateway.applyValue(getGatewayResult -&gt; getGatewayResult.name()))
     *             .build());
     * 
     *         ctx.export(&#34;hostName&#34;, exampleGatewayHostNameConfiguration.applyValue(getGatewayHostNameConfigurationResult -&gt; getGatewayHostNameConfigurationResult.hostName()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGatewayHostNameConfigurationResult> getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs args) {
        return getGatewayHostNameConfiguration(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Gateway Host Configuration.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-gateway&#34;)
     *             .apiManagementId(data.azurerm_api_management().main().id())
     *             .build());
     * 
     *         final var exampleGatewayHostNameConfiguration = ApimanagementFunctions.getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs.builder()
     *             .name(&#34;example-host-configuration&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .gatewayName(exampleGateway.applyValue(getGatewayResult -&gt; getGatewayResult.name()))
     *             .build());
     * 
     *         ctx.export(&#34;hostName&#34;, exampleGatewayHostNameConfiguration.applyValue(getGatewayHostNameConfigurationResult -&gt; getGatewayHostNameConfigurationResult.hostName()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGatewayHostNameConfigurationResult> getGatewayHostNameConfigurationPlain(GetGatewayHostNameConfigurationPlainArgs args) {
        return getGatewayHostNameConfigurationPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Gateway Host Configuration.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-gateway&#34;)
     *             .apiManagementId(data.azurerm_api_management().main().id())
     *             .build());
     * 
     *         final var exampleGatewayHostNameConfiguration = ApimanagementFunctions.getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs.builder()
     *             .name(&#34;example-host-configuration&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .gatewayName(exampleGateway.applyValue(getGatewayResult -&gt; getGatewayResult.name()))
     *             .build());
     * 
     *         ctx.export(&#34;hostName&#34;, exampleGatewayHostNameConfiguration.applyValue(getGatewayHostNameConfigurationResult -&gt; getGatewayHostNameConfigurationResult.hostName()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGatewayHostNameConfigurationResult> getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getGatewayHostNameConfiguration:getGatewayHostNameConfiguration", TypeShape.of(GetGatewayHostNameConfigurationResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Gateway Host Configuration.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayArgs;
     * import com.pulumi.azure.apimanagement.inputs.GetGatewayHostNameConfigurationArgs;
     * 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 exampleService = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;example-resources&#34;)
     *             .build());
     * 
     *         final var exampleGateway = ApimanagementFunctions.getGateway(GetGatewayArgs.builder()
     *             .name(&#34;example-gateway&#34;)
     *             .apiManagementId(data.azurerm_api_management().main().id())
     *             .build());
     * 
     *         final var exampleGatewayHostNameConfiguration = ApimanagementFunctions.getGatewayHostNameConfiguration(GetGatewayHostNameConfigurationArgs.builder()
     *             .name(&#34;example-host-configuration&#34;)
     *             .apiManagementId(exampleService.applyValue(getServiceResult -&gt; getServiceResult.id()))
     *             .gatewayName(exampleGateway.applyValue(getGatewayResult -&gt; getGatewayResult.name()))
     *             .build());
     * 
     *         ctx.export(&#34;hostName&#34;, exampleGatewayHostNameConfiguration.applyValue(getGatewayHostNameConfigurationResult -&gt; getGatewayHostNameConfigurationResult.hostName()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGatewayHostNameConfigurationResult> getGatewayHostNameConfigurationPlain(GetGatewayHostNameConfigurationPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getGatewayHostNameConfiguration:getGatewayHostNameConfiguration", TypeShape.of(GetGatewayHostNameConfigurationResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Group.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetGroupArgs;
     * 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 example = ApimanagementFunctions.getGroup(GetGroupArgs.builder()
     *             .name(&#34;my-group&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;groupType&#34;, example.applyValue(getGroupResult -&gt; getGroupResult.type()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGroupResult> getGroup(GetGroupArgs args) {
        return getGroup(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Group.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetGroupArgs;
     * 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 example = ApimanagementFunctions.getGroup(GetGroupArgs.builder()
     *             .name(&#34;my-group&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;groupType&#34;, example.applyValue(getGroupResult -&gt; getGroupResult.type()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGroupResult> getGroupPlain(GetGroupPlainArgs args) {
        return getGroupPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Group.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetGroupArgs;
     * 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 example = ApimanagementFunctions.getGroup(GetGroupArgs.builder()
     *             .name(&#34;my-group&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;groupType&#34;, example.applyValue(getGroupResult -&gt; getGroupResult.type()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetGroupResult> getGroup(GetGroupArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getGroup:getGroup", TypeShape.of(GetGroupResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Group.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetGroupArgs;
     * 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 example = ApimanagementFunctions.getGroup(GetGroupArgs.builder()
     *             .name(&#34;my-group&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;groupType&#34;, example.applyValue(getGroupResult -&gt; getGroupResult.type()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetGroupResult> getGroupPlain(GetGroupPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getGroup:getGroup", TypeShape.of(GetGroupResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Product.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetProductArgs;
     * 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 example = ApimanagementFunctions.getProduct(GetProductArgs.builder()
     *             .productId(&#34;my-product&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;productTerms&#34;, example.applyValue(getProductResult -&gt; getProductResult.terms()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetProductResult> getProduct(GetProductArgs args) {
        return getProduct(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Product.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetProductArgs;
     * 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 example = ApimanagementFunctions.getProduct(GetProductArgs.builder()
     *             .productId(&#34;my-product&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;productTerms&#34;, example.applyValue(getProductResult -&gt; getProductResult.terms()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetProductResult> getProductPlain(GetProductPlainArgs args) {
        return getProductPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Product.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetProductArgs;
     * 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 example = ApimanagementFunctions.getProduct(GetProductArgs.builder()
     *             .productId(&#34;my-product&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;productTerms&#34;, example.applyValue(getProductResult -&gt; getProductResult.terms()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetProductResult> getProduct(GetProductArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getProduct:getProduct", TypeShape.of(GetProductResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Product.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetProductArgs;
     * 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 example = ApimanagementFunctions.getProduct(GetProductArgs.builder()
     *             .productId(&#34;my-product&#34;)
     *             .apiManagementName(&#34;example-apim&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;productTerms&#34;, example.applyValue(getProductResult -&gt; getProductResult.terms()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetProductResult> getProductPlain(GetProductPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getProduct:getProduct", TypeShape.of(GetProductResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * 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 example = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementId&#34;, example.applyValue(getServiceResult -&gt; getServiceResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetServiceResult> getService(GetServiceArgs args) {
        return getService(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * 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 example = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementId&#34;, example.applyValue(getServiceResult -&gt; getServiceResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetServiceResult> getServicePlain(GetServicePlainArgs args) {
        return getServicePlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * 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 example = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementId&#34;, example.applyValue(getServiceResult -&gt; getServiceResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static Output<GetServiceResult> getService(GetServiceArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getService:getService", TypeShape.of(GetServiceResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management Service.
     * 
     * ## Example Usage
     * ```java
     * package generated_program;
     * 
     * import com.pulumi.Context;
     * import com.pulumi.Pulumi;
     * import com.pulumi.core.Output;
     * import com.pulumi.azure.apimanagement.ApimanagementFunctions;
     * import com.pulumi.azure.apimanagement.inputs.GetServiceArgs;
     * 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 example = ApimanagementFunctions.getService(GetServiceArgs.builder()
     *             .name(&#34;search-api&#34;)
     *             .resourceGroupName(&#34;search-service&#34;)
     *             .build());
     * 
     *         ctx.export(&#34;apiManagementId&#34;, example.applyValue(getServiceResult -&gt; getServiceResult.id()));
     *     }
     * }
     * ```
     * 
     */
    public static CompletableFuture<GetServiceResult> getServicePlain(GetServicePlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getService:getService", TypeShape.of(GetServiceResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management User.
     * 
     */
    public static Output<GetUserResult> getUser(GetUserArgs args) {
        return getUser(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management User.
     * 
     */
    public static CompletableFuture<GetUserResult> getUserPlain(GetUserPlainArgs args) {
        return getUserPlain(args, InvokeOptions.Empty);
    }
    /**
     * Use this data source to access information about an existing API Management User.
     * 
     */
    public static Output<GetUserResult> getUser(GetUserArgs args, InvokeOptions options) {
        return Deployment.getInstance().invoke("azure:apimanagement/getUser:getUser", TypeShape.of(GetUserResult.class), args, Utilities.withVersion(options));
    }
    /**
     * Use this data source to access information about an existing API Management User.
     * 
     */
    public static CompletableFuture<GetUserResult> getUserPlain(GetUserPlainArgs args, InvokeOptions options) {
        return Deployment.getInstance().invokeAsync("azure:apimanagement/getUser:getUser", TypeShape.of(GetUserResult.class), args, Utilities.withVersion(options));
    }
}
