diff --git a/sdk/dotnet/Apigatewayv2/HttpApi.cs b/sdk/dotnet/Apigatewayv2/HttpApi.cs
new file mode 100644
index 000000000..2f89422f2
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/HttpApi.cs
@@ -0,0 +1,247 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2
+{
+ ///
+ /// Creates an HTTP API with associated sub-resources.
+ ///
+ [AwsxResourceType("awsx:apigatewayv2:HttpApi")]
+ public partial class HttpApi : global::Pulumi.CustomResource
+ {
+ ///
+ /// The underlying API resource.
+ ///
+ [Output("api")]
+ public Output Api { get; private set; } = null!;
+
+ ///
+ /// The API mappings for the HTTP API.
+ ///
+ [Output("apiMappings")]
+ public Output> ApiMappings { get; private set; } = null!;
+
+ ///
+ /// The authorizers for the HTTP API routes.
+ ///
+ [Output("authorizers")]
+ public Output> Authorizers { get; private set; } = null!;
+
+ ///
+ /// The deployment for the HTTP API.
+ ///
+ [Output("deployment")]
+ public Output Deployment { get; private set; } = null!;
+
+ ///
+ /// The domain names for the HTTP API.
+ ///
+ [Output("domainNames")]
+ public Output> DomainNames { get; private set; } = null!;
+
+ ///
+ /// The integrations for the HTTP API routes. This is a map from integration name to the integration arguments.
+ ///
+ [Output("integrations")]
+ public Output> Integrations { get; private set; } = null!;
+
+ ///
+ /// The routes for the HTTP API. This is a map from route key (for example `GET /pets`) to route arguments.
+ ///
+ [Output("routes")]
+ public Output> Routes { get; private set; } = null!;
+
+ ///
+ /// The deployment stages for the HTTP API.
+ ///
+ [Output("stages")]
+ public Output> Stages { get; private set; } = null!;
+
+
+ ///
+ /// Create a HttpApi resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public HttpApi(string name, HttpApiArgs args, CustomResourceOptions? options = null)
+ : base("awsx:apigatewayv2:HttpApi", name, args ?? new HttpApiArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private HttpApi(string name, Input id, CustomResourceOptions? options = null)
+ : base("awsx:apigatewayv2:HttpApi", name, null, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing HttpApi resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// A bag of options that control this resource's behavior
+ public static HttpApi Get(string name, Input id, CustomResourceOptions? options = null)
+ {
+ return new HttpApi(name, id, options);
+ }
+ }
+
+ public sealed class HttpApiArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// An [API key selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).
+ /// Valid values: `$context.authorizer.usageIdentifierKey`, `$request.header.x-api-key`. Defaults to `$request.header.x-api-key`.
+ /// Applicable for WebSocket APIs.
+ ///
+ [Input("apiKeySelectionExpression")]
+ public Input? ApiKeySelectionExpression { get; set; }
+
+ [Input("authorizers")]
+ private InputMap? _authorizers;
+
+ ///
+ /// The authorizers for the HTTP API routes.
+ ///
+ public InputMap Authorizers
+ {
+ get => _authorizers ?? (_authorizers = new InputMap());
+ set => _authorizers = value;
+ }
+
+ ///
+ /// An OpenAPI specification that defines the set of routes and integrations to create as part of the HTTP APIs. Supported only for HTTP APIs.
+ ///
+ [Input("body")]
+ public Input? Body { get; set; }
+
+ ///
+ /// Cross-origin resource sharing (CORS) [configuration](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html). Applicable for HTTP APIs.
+ ///
+ [Input("corsConfiguration")]
+ public Input? CorsConfiguration { get; set; }
+
+ ///
+ /// Description of the API. Must be less than or equal to 1024 characters in length.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// Whether clients can invoke the API by using the default `execute-api` endpoint.
+ /// By default, clients can invoke the API with the default `{api_id}.execute-api.{region}.amazonaws.com endpoint`.
+ /// To require that clients use a custom domain name to invoke the API, disable the default endpoint.
+ ///
+ [Input("disableExecuteApiEndpoint")]
+ public Input? DisableExecuteApiEndpoint { get; set; }
+
+ [Input("domainMappings")]
+ private InputMap? _domainMappings;
+
+ ///
+ /// The domain names for the HTTP API.
+ ///
+ public InputMap DomainMappings
+ {
+ get => _domainMappings ?? (_domainMappings = new InputMap());
+ set => _domainMappings = value;
+ }
+
+ ///
+ /// Whether warnings should return an error while API Gateway is creating or updating the resource using an OpenAPI specification. Defaults to `false`. Applicable for HTTP APIs.
+ ///
+ [Input("failOnWarnings")]
+ public Input? FailOnWarnings { get; set; }
+
+ [Input("integrations")]
+ private InputMap? _integrations;
+
+ ///
+ /// The integrations for the HTTP API routes.
+ ///
+ public InputMap Integrations
+ {
+ get => _integrations ?? (_integrations = new InputMap());
+ set => _integrations = value;
+ }
+
+ ///
+ /// Name of the API. Must be less than or equal to 128 characters in length.
+ ///
+ [Input("name")]
+ public Input? Name { get; set; }
+
+ ///
+ /// The [route selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-selection-expressions) for the API.
+ /// Defaults to `$request.method $request.path`.
+ ///
+ [Input("routeSelectionExpression")]
+ public Input? RouteSelectionExpression { get; set; }
+
+ [Input("routes", required: true)]
+ private InputMap? _routes;
+
+ ///
+ /// The routes for the HTTP API.
+ ///
+ public InputMap Routes
+ {
+ get => _routes ?? (_routes = new InputMap());
+ set => _routes = value;
+ }
+
+ [Input("stages")]
+ private InputMap? _stages;
+
+ ///
+ /// The deployment stages for the HTTP API.
+ ///
+ public InputMap Stages
+ {
+ get => _stages ?? (_stages = new InputMap());
+ set => _stages = value;
+ }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// Map of tags to assign to the API. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ ///
+ /// Version identifier for the API. Must be between 1 and 64 characters in length.
+ ///
+ [Input("version")]
+ public Input? Version { get; set; }
+
+ public HttpApiArgs()
+ {
+ }
+ public static new HttpApiArgs Empty => new HttpApiArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/DomainConfigurationArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/DomainConfigurationArgs.cs
new file mode 100644
index 000000000..1a24151a4
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/DomainConfigurationArgs.cs
@@ -0,0 +1,383 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ ///
+ /// Manages an Amazon API Gateway Version 2 domain name.
+ /// More information can be found in the [Amazon API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).
+ ///
+ /// > **Note:** This resource establishes ownership of and the TLS settings for
+ /// a particular domain name. An API stage can be associated with the domain name using the `aws.apigatewayv2.ApiMapping` resource.
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ /// ### Basic
+ ///
+ /// ```typescript
+ /// import * as pulumi from "@pulumi/pulumi";
+ /// import * as aws from "@pulumi/aws";
+ ///
+ /// const example = new aws.apigatewayv2.DomainName("example", {
+ /// domainName: "ws-api.example.com",
+ /// domainNameConfiguration: {
+ /// certificateArn: aws_acm_certificate.example.arn,
+ /// endpointType: "REGIONAL",
+ /// securityPolicy: "TLS_1_2",
+ /// },
+ /// });
+ /// ```
+ /// ```python
+ /// import pulumi
+ /// import pulumi_aws as aws
+ ///
+ /// example = aws.apigatewayv2.DomainName("example",
+ /// domain_name="ws-api.example.com",
+ /// domain_name_configuration=aws.apigatewayv2.DomainNameDomainNameConfigurationArgs(
+ /// certificate_arn=aws_acm_certificate["example"]["arn"],
+ /// endpoint_type="REGIONAL",
+ /// security_policy="TLS_1_2",
+ /// ))
+ /// ```
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new Aws.ApiGatewayV2.DomainName("example", new()
+ /// {
+ /// Domain = "ws-api.example.com",
+ /// DomainNameConfiguration = new Aws.ApiGatewayV2.Inputs.DomainNameDomainNameConfigurationArgs
+ /// {
+ /// CertificateArn = aws_acm_certificate.Example.Arn,
+ /// EndpointType = "REGIONAL",
+ /// SecurityPolicy = "TLS_1_2",
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// ```go
+ /// package main
+ ///
+ /// import (
+ /// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+ /// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+ /// )
+ ///
+ /// func main() {
+ /// pulumi.Run(func(ctx *pulumi.Context) error {
+ /// _, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
+ /// DomainName: pulumi.String("ws-api.example.com"),
+ /// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+ /// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+ /// EndpointType: pulumi.String("REGIONAL"),
+ /// SecurityPolicy: pulumi.String("TLS_1_2"),
+ /// },
+ /// })
+ /// if err != nil {
+ /// return err
+ /// }
+ /// return nil
+ /// })
+ /// }
+ /// ```
+ /// ```java
+ /// package generated_program;
+ ///
+ /// import com.pulumi.Context;
+ /// import com.pulumi.Pulumi;
+ /// import com.pulumi.core.Output;
+ /// import com.pulumi.aws.apigatewayv2.DomainName;
+ /// import com.pulumi.aws.apigatewayv2.DomainNameArgs;
+ /// import com.pulumi.aws.apigatewayv2.inputs.DomainNameDomainNameConfigurationArgs;
+ /// 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) {
+ /// var example = new DomainName("example", DomainNameArgs.builder()
+ /// .domainName("ws-api.example.com")
+ /// .domainNameConfiguration(DomainNameDomainNameConfigurationArgs.builder()
+ /// .certificateArn(aws_acm_certificate.example().arn())
+ /// .endpointType("REGIONAL")
+ /// .securityPolicy("TLS_1_2")
+ /// .build())
+ /// .build());
+ ///
+ /// }
+ /// }
+ /// ```
+ /// ```yaml
+ /// resources:
+ /// example:
+ /// type: aws:apigatewayv2:DomainName
+ /// properties:
+ /// domainName: ws-api.example.com
+ /// domainNameConfiguration:
+ /// certificateArn: ${aws_acm_certificate.example.arn}
+ /// endpointType: REGIONAL
+ /// securityPolicy: TLS_1_2
+ /// ```
+ /// {{% /example %}}
+ /// {{% example %}}
+ /// ### Associated Route 53 Resource Record
+ ///
+ /// ```typescript
+ /// import * as pulumi from "@pulumi/pulumi";
+ /// import * as aws from "@pulumi/aws";
+ ///
+ /// const exampleDomainName = new aws.apigatewayv2.DomainName("exampleDomainName", {
+ /// domainName: "http-api.example.com",
+ /// domainNameConfiguration: {
+ /// certificateArn: aws_acm_certificate.example.arn,
+ /// endpointType: "REGIONAL",
+ /// securityPolicy: "TLS_1_2",
+ /// },
+ /// });
+ /// const exampleRecord = new aws.route53.Record("exampleRecord", {
+ /// name: exampleDomainName.domainName,
+ /// type: "A",
+ /// zoneId: aws_route53_zone.example.zone_id,
+ /// aliases: [{
+ /// name: exampleDomainName.domainNameConfiguration.apply(domainNameConfiguration => domainNameConfiguration.targetDomainName),
+ /// zoneId: exampleDomainName.domainNameConfiguration.apply(domainNameConfiguration => domainNameConfiguration.hostedZoneId),
+ /// evaluateTargetHealth: false,
+ /// }],
+ /// });
+ /// ```
+ /// ```python
+ /// import pulumi
+ /// import pulumi_aws as aws
+ ///
+ /// example_domain_name = aws.apigatewayv2.DomainName("exampleDomainName",
+ /// domain_name="http-api.example.com",
+ /// domain_name_configuration=aws.apigatewayv2.DomainNameDomainNameConfigurationArgs(
+ /// certificate_arn=aws_acm_certificate["example"]["arn"],
+ /// endpoint_type="REGIONAL",
+ /// security_policy="TLS_1_2",
+ /// ))
+ /// example_record = aws.route53.Record("exampleRecord",
+ /// name=example_domain_name.domain_name,
+ /// type="A",
+ /// zone_id=aws_route53_zone["example"]["zone_id"],
+ /// aliases=[aws.route53.RecordAliasArgs(
+ /// name=example_domain_name.domain_name_configuration.target_domain_name,
+ /// zone_id=example_domain_name.domain_name_configuration.hosted_zone_id,
+ /// evaluate_target_health=False,
+ /// )])
+ /// ```
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using System.Linq;
+ /// using Pulumi;
+ /// using Aws = Pulumi.Aws;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleDomainName = new Aws.ApiGatewayV2.DomainName("exampleDomainName", new()
+ /// {
+ /// Domain = "http-api.example.com",
+ /// DomainNameConfiguration = new Aws.ApiGatewayV2.Inputs.DomainNameDomainNameConfigurationArgs
+ /// {
+ /// CertificateArn = aws_acm_certificate.Example.Arn,
+ /// EndpointType = "REGIONAL",
+ /// SecurityPolicy = "TLS_1_2",
+ /// },
+ /// });
+ ///
+ /// var exampleRecord = new Aws.Route53.Record("exampleRecord", new()
+ /// {
+ /// Name = exampleDomainName.Domain,
+ /// Type = "A",
+ /// ZoneId = aws_route53_zone.Example.Zone_id,
+ /// Aliases = new[]
+ /// {
+ /// new Aws.Route53.Inputs.RecordAliasArgs
+ /// {
+ /// Name = exampleDomainName.DomainNameConfiguration.Apply(domainNameConfiguration => domainNameConfiguration.TargetDomainName),
+ /// ZoneId = exampleDomainName.DomainNameConfiguration.Apply(domainNameConfiguration => domainNameConfiguration.HostedZoneId),
+ /// EvaluateTargetHealth = false,
+ /// },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ /// ```go
+ /// package main
+ ///
+ /// import (
+ /// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+ /// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
+ /// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+ /// )
+ ///
+ /// func main() {
+ /// pulumi.Run(func(ctx *pulumi.Context) error {
+ /// exampleDomainName, err := apigatewayv2.NewDomainName(ctx, "exampleDomainName", &apigatewayv2.DomainNameArgs{
+ /// DomainName: pulumi.String("http-api.example.com"),
+ /// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+ /// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+ /// EndpointType: pulumi.String("REGIONAL"),
+ /// SecurityPolicy: pulumi.String("TLS_1_2"),
+ /// },
+ /// })
+ /// if err != nil {
+ /// return err
+ /// }
+ /// _, err = route53.NewRecord(ctx, "exampleRecord", &route53.RecordArgs{
+ /// Name: exampleDomainName.DomainName,
+ /// Type: pulumi.String("A"),
+ /// ZoneId: pulumi.Any(aws_route53_zone.Example.Zone_id),
+ /// Aliases: route53.RecordAliasArray{
+ /// &route53.RecordAliasArgs{
+ /// Name: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+ /// return &domainNameConfiguration.TargetDomainName, nil
+ /// }).(pulumi.StringPtrOutput),
+ /// ZoneId: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+ /// return &domainNameConfiguration.HostedZoneId, nil
+ /// }).(pulumi.StringPtrOutput),
+ /// EvaluateTargetHealth: pulumi.Bool(false),
+ /// },
+ /// },
+ /// })
+ /// if err != nil {
+ /// return err
+ /// }
+ /// return nil
+ /// })
+ /// }
+ /// ```
+ /// ```java
+ /// package generated_program;
+ ///
+ /// import com.pulumi.Context;
+ /// import com.pulumi.Pulumi;
+ /// import com.pulumi.core.Output;
+ /// import com.pulumi.aws.apigatewayv2.DomainName;
+ /// import com.pulumi.aws.apigatewayv2.DomainNameArgs;
+ /// import com.pulumi.aws.apigatewayv2.inputs.DomainNameDomainNameConfigurationArgs;
+ /// import com.pulumi.aws.route53.Record;
+ /// import com.pulumi.aws.route53.RecordArgs;
+ /// import com.pulumi.aws.route53.inputs.RecordAliasArgs;
+ /// 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) {
+ /// var exampleDomainName = new DomainName("exampleDomainName", DomainNameArgs.builder()
+ /// .domainName("http-api.example.com")
+ /// .domainNameConfiguration(DomainNameDomainNameConfigurationArgs.builder()
+ /// .certificateArn(aws_acm_certificate.example().arn())
+ /// .endpointType("REGIONAL")
+ /// .securityPolicy("TLS_1_2")
+ /// .build())
+ /// .build());
+ ///
+ /// var exampleRecord = new Record("exampleRecord", RecordArgs.builder()
+ /// .name(exampleDomainName.domainName())
+ /// .type("A")
+ /// .zoneId(aws_route53_zone.example().zone_id())
+ /// .aliases(RecordAliasArgs.builder()
+ /// .name(exampleDomainName.domainNameConfiguration().applyValue(domainNameConfiguration -> domainNameConfiguration.targetDomainName()))
+ /// .zoneId(exampleDomainName.domainNameConfiguration().applyValue(domainNameConfiguration -> domainNameConfiguration.hostedZoneId()))
+ /// .evaluateTargetHealth(false)
+ /// .build())
+ /// .build());
+ ///
+ /// }
+ /// }
+ /// ```
+ /// ```yaml
+ /// resources:
+ /// exampleDomainName:
+ /// type: aws:apigatewayv2:DomainName
+ /// properties:
+ /// domainName: http-api.example.com
+ /// domainNameConfiguration:
+ /// certificateArn: ${aws_acm_certificate.example.arn}
+ /// endpointType: REGIONAL
+ /// securityPolicy: TLS_1_2
+ /// exampleRecord:
+ /// type: aws:route53:Record
+ /// properties:
+ /// name: ${exampleDomainName.domainName}
+ /// type: A
+ /// zoneId: ${aws_route53_zone.example.zone_id}
+ /// aliases:
+ /// - name: ${exampleDomainName.domainNameConfiguration.targetDomainName}
+ /// zoneId: ${exampleDomainName.domainNameConfiguration.hostedZoneId}
+ /// evaluateTargetHealth: false
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ /// ## Import
+ ///
+ /// Using `pulumi import`, import `aws_apigatewayv2_domain_name` using the domain name. For example:
+ ///
+ /// ```sh
+ /// $ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com
+ /// ```
+ ///
+ ///
+ public sealed class DomainConfigurationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Domain name configuration. See below.
+ ///
+ [Input("domainNameConfiguration")]
+ public Input? DomainNameConfiguration { get; set; }
+
+ ///
+ /// Mutual TLS authentication configuration for the domain name.
+ ///
+ [Input("mutualTlsAuthentication")]
+ public Input? MutualTlsAuthentication { get; set; }
+
+ [Input("tags")]
+ private InputMap? _tags;
+
+ ///
+ /// Map of tags to assign to the domain name. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ ///
+ public InputMap Tags
+ {
+ get => _tags ?? (_tags = new InputMap());
+ set => _tags = value;
+ }
+
+ public DomainConfigurationArgs()
+ {
+ }
+ public static new DomainConfigurationArgs Empty => new DomainConfigurationArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/DomainMappingArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/DomainMappingArgs.cs
new file mode 100644
index 000000000..5bea78cd1
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/DomainMappingArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ public sealed class DomainMappingArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Configuration of the domain name to create. Cannot be specified together with `domainId`.
+ ///
+ [Input("domainConfiguration")]
+ public Input? DomainConfiguration { get; set; }
+
+ ///
+ /// Identifier of an existing domain. Cannot be specified together with `domainConfiguration`.
+ ///
+ [Input("domainId")]
+ public Input? DomainId { get; set; }
+
+ public DomainMappingArgs()
+ {
+ }
+ public static new DomainMappingArgs Empty => new DomainMappingArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/HttpAuthorizerArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/HttpAuthorizerArgs.cs
new file mode 100644
index 000000000..4321e4eff
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/HttpAuthorizerArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ public sealed class HttpAuthorizerArgs : global::Pulumi.ResourceArgs
+ {
+ public HttpAuthorizerArgs()
+ {
+ }
+ public static new HttpAuthorizerArgs Empty => new HttpAuthorizerArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/HttpIntegrationArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/HttpIntegrationArgs.cs
new file mode 100644
index 000000000..6d380100a
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/HttpIntegrationArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ public sealed class HttpIntegrationArgs : global::Pulumi.ResourceArgs
+ {
+ public HttpIntegrationArgs()
+ {
+ }
+ public static new HttpIntegrationArgs Empty => new HttpIntegrationArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/HttpRouteArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/HttpRouteArgs.cs
new file mode 100644
index 000000000..ccb2387fd
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/HttpRouteArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ public sealed class HttpRouteArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The key of the target authorizer for the route specified in the `authorizers` property. This is used to automatically calculate the `authorizerId` property of the route.
+ ///
+ [Input("authorizer")]
+ public Input? Authorizer { get; set; }
+
+ ///
+ /// The key of the target integration for the route specified in the `integrations` property. This is used to automatically calculate the `target` property of the route. One of `integration` or `target` must be specified.
+ ///
+ [Input("integration")]
+ public Input? Integration { get; set; }
+
+ public HttpRouteArgs()
+ {
+ }
+ public static new HttpRouteArgs Empty => new HttpRouteArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/Inputs/HttpStageArgs.cs b/sdk/dotnet/Apigatewayv2/Inputs/HttpStageArgs.cs
new file mode 100644
index 000000000..06bdee75a
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/Inputs/HttpStageArgs.cs
@@ -0,0 +1,20 @@
+// *** WARNING: this file was generated by pulumi-gen-awsx. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.Awsx.Apigatewayv2.Inputs
+{
+
+ public sealed class HttpStageArgs : global::Pulumi.ResourceArgs
+ {
+ public HttpStageArgs()
+ {
+ }
+ public static new HttpStageArgs Empty => new HttpStageArgs();
+ }
+}
diff --git a/sdk/dotnet/Apigatewayv2/README.md b/sdk/dotnet/Apigatewayv2/README.md
new file mode 100644
index 000000000..f5452bf23
--- /dev/null
+++ b/sdk/dotnet/Apigatewayv2/README.md
@@ -0,0 +1 @@
+Pulumi Amazon Web Services (AWS) AWSX Components.
diff --git a/sdk/go/awsx/apigatewayv2/httpApi.go b/sdk/go/awsx/apigatewayv2/httpApi.go
new file mode 100644
index 000000000..3dd7118ef
--- /dev/null
+++ b/sdk/go/awsx/apigatewayv2/httpApi.go
@@ -0,0 +1,368 @@
+// Code generated by pulumi-gen-awsx DO NOT EDIT.
+// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
+
+package apigatewayv2
+
+import (
+ "context"
+ "reflect"
+
+ "errors"
+ "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+ "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
+)
+
+// Creates an HTTP API with associated sub-resources.
+type HttpApi struct {
+ pulumi.CustomResourceState
+
+ // The underlying API resource.
+ Api apigatewayv2.ApiOutput `pulumi:"api"`
+ // The API mappings for the HTTP API.
+ ApiMappings apigatewayv2.ApiMappingArrayOutput `pulumi:"apiMappings"`
+ // The authorizers for the HTTP API routes.
+ Authorizers apigatewayv2.AuthorizerArrayOutput `pulumi:"authorizers"`
+ // The deployment for the HTTP API.
+ Deployment apigatewayv2.DeploymentOutput `pulumi:"deployment"`
+ // The domain names for the HTTP API.
+ DomainNames apigatewayv2.DomainNameArrayOutput `pulumi:"domainNames"`
+ // The integrations for the HTTP API routes. This is a map from integration name to the integration arguments.
+ Integrations apigatewayv2.IntegrationArrayOutput `pulumi:"integrations"`
+ // The routes for the HTTP API. This is a map from route key (for example `GET /pets`) to route arguments.
+ Routes apigatewayv2.RouteArrayOutput `pulumi:"routes"`
+ // The deployment stages for the HTTP API.
+ Stages apigatewayv2.StageArrayOutput `pulumi:"stages"`
+}
+
+// NewHttpApi registers a new resource with the given unique name, arguments, and options.
+func NewHttpApi(ctx *pulumi.Context,
+ name string, args *HttpApiArgs, opts ...pulumi.ResourceOption) (*HttpApi, error) {
+ if args == nil {
+ return nil, errors.New("missing one or more required arguments")
+ }
+
+ if args.Routes == nil {
+ return nil, errors.New("invalid value for required argument 'Routes'")
+ }
+ opts = internal.PkgResourceDefaultOpts(opts)
+ var resource HttpApi
+ err := ctx.RegisterResource("awsx:apigatewayv2:HttpApi", name, args, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// GetHttpApi gets an existing HttpApi resource's state with the given name, ID, and optional
+// state properties that are used to uniquely qualify the lookup (nil if not required).
+func GetHttpApi(ctx *pulumi.Context,
+ name string, id pulumi.IDInput, state *HttpApiState, opts ...pulumi.ResourceOption) (*HttpApi, error) {
+ var resource HttpApi
+ err := ctx.ReadResource("awsx:apigatewayv2:HttpApi", name, id, state, &resource, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return &resource, nil
+}
+
+// Input properties used for looking up and filtering HttpApi resources.
+type httpApiState struct {
+}
+
+type HttpApiState struct {
+}
+
+func (HttpApiState) ElementType() reflect.Type {
+ return reflect.TypeOf((*httpApiState)(nil)).Elem()
+}
+
+type httpApiArgs struct {
+ // An [API key selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).
+ // Valid values: `$context.authorizer.usageIdentifierKey`, `$request.header.x-api-key`. Defaults to `$request.header.x-api-key`.
+ // Applicable for WebSocket APIs.
+ ApiKeySelectionExpression *string `pulumi:"apiKeySelectionExpression"`
+ // The authorizers for the HTTP API routes.
+ Authorizers map[string]HttpAuthorizer `pulumi:"authorizers"`
+ // An OpenAPI specification that defines the set of routes and integrations to create as part of the HTTP APIs. Supported only for HTTP APIs.
+ Body *string `pulumi:"body"`
+ // Cross-origin resource sharing (CORS) [configuration](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html). Applicable for HTTP APIs.
+ CorsConfiguration *apigatewayv2.ApiCorsConfiguration `pulumi:"corsConfiguration"`
+ // Description of the API. Must be less than or equal to 1024 characters in length.
+ Description *string `pulumi:"description"`
+ // Whether clients can invoke the API by using the default `execute-api` endpoint.
+ // By default, clients can invoke the API with the default `{api_id}.execute-api.{region}.amazonaws.com endpoint`.
+ // To require that clients use a custom domain name to invoke the API, disable the default endpoint.
+ DisableExecuteApiEndpoint *bool `pulumi:"disableExecuteApiEndpoint"`
+ // The domain names for the HTTP API.
+ DomainMappings map[string]DomainMapping `pulumi:"domainMappings"`
+ // Whether warnings should return an error while API Gateway is creating or updating the resource using an OpenAPI specification. Defaults to `false`. Applicable for HTTP APIs.
+ FailOnWarnings *bool `pulumi:"failOnWarnings"`
+ // The integrations for the HTTP API routes.
+ Integrations map[string]HttpIntegration `pulumi:"integrations"`
+ // Name of the API. Must be less than or equal to 128 characters in length.
+ Name *string `pulumi:"name"`
+ // The [route selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-selection-expressions) for the API.
+ // Defaults to `$request.method $request.path`.
+ RouteSelectionExpression *string `pulumi:"routeSelectionExpression"`
+ // The routes for the HTTP API.
+ Routes map[string]HttpRoute `pulumi:"routes"`
+ // The deployment stages for the HTTP API.
+ Stages map[string]HttpStage `pulumi:"stages"`
+ // Map of tags to assign to the API. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ Tags map[string]string `pulumi:"tags"`
+ // Version identifier for the API. Must be between 1 and 64 characters in length.
+ Version *string `pulumi:"version"`
+}
+
+// The set of arguments for constructing a HttpApi resource.
+type HttpApiArgs struct {
+ // An [API key selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).
+ // Valid values: `$context.authorizer.usageIdentifierKey`, `$request.header.x-api-key`. Defaults to `$request.header.x-api-key`.
+ // Applicable for WebSocket APIs.
+ ApiKeySelectionExpression pulumi.StringPtrInput
+ // The authorizers for the HTTP API routes.
+ Authorizers HttpAuthorizerMapInput
+ // An OpenAPI specification that defines the set of routes and integrations to create as part of the HTTP APIs. Supported only for HTTP APIs.
+ Body pulumi.StringPtrInput
+ // Cross-origin resource sharing (CORS) [configuration](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html). Applicable for HTTP APIs.
+ CorsConfiguration apigatewayv2.ApiCorsConfigurationPtrInput
+ // Description of the API. Must be less than or equal to 1024 characters in length.
+ Description pulumi.StringPtrInput
+ // Whether clients can invoke the API by using the default `execute-api` endpoint.
+ // By default, clients can invoke the API with the default `{api_id}.execute-api.{region}.amazonaws.com endpoint`.
+ // To require that clients use a custom domain name to invoke the API, disable the default endpoint.
+ DisableExecuteApiEndpoint pulumi.BoolPtrInput
+ // The domain names for the HTTP API.
+ DomainMappings DomainMappingMapInput
+ // Whether warnings should return an error while API Gateway is creating or updating the resource using an OpenAPI specification. Defaults to `false`. Applicable for HTTP APIs.
+ FailOnWarnings pulumi.BoolPtrInput
+ // The integrations for the HTTP API routes.
+ Integrations HttpIntegrationMapInput
+ // Name of the API. Must be less than or equal to 128 characters in length.
+ Name pulumi.StringPtrInput
+ // The [route selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-route-selection-expressions) for the API.
+ // Defaults to `$request.method $request.path`.
+ RouteSelectionExpression pulumi.StringPtrInput
+ // The routes for the HTTP API.
+ Routes HttpRouteMapInput
+ // The deployment stages for the HTTP API.
+ Stages HttpStageMapInput
+ // Map of tags to assign to the API. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ Tags pulumi.StringMapInput
+ // Version identifier for the API. Must be between 1 and 64 characters in length.
+ Version pulumi.StringPtrInput
+}
+
+func (HttpApiArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*httpApiArgs)(nil)).Elem()
+}
+
+type HttpApiInput interface {
+ pulumi.Input
+
+ ToHttpApiOutput() HttpApiOutput
+ ToHttpApiOutputWithContext(ctx context.Context) HttpApiOutput
+}
+
+func (*HttpApi) ElementType() reflect.Type {
+ return reflect.TypeOf((**HttpApi)(nil)).Elem()
+}
+
+func (i *HttpApi) ToHttpApiOutput() HttpApiOutput {
+ return i.ToHttpApiOutputWithContext(context.Background())
+}
+
+func (i *HttpApi) ToHttpApiOutputWithContext(ctx context.Context) HttpApiOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpApiOutput)
+}
+
+func (i *HttpApi) ToOutput(ctx context.Context) pulumix.Output[*HttpApi] {
+ return pulumix.Output[*HttpApi]{
+ OutputState: i.ToHttpApiOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpApiArrayInput is an input type that accepts HttpApiArray and HttpApiArrayOutput values.
+// You can construct a concrete instance of `HttpApiArrayInput` via:
+//
+// HttpApiArray{ HttpApiArgs{...} }
+type HttpApiArrayInput interface {
+ pulumi.Input
+
+ ToHttpApiArrayOutput() HttpApiArrayOutput
+ ToHttpApiArrayOutputWithContext(context.Context) HttpApiArrayOutput
+}
+
+type HttpApiArray []HttpApiInput
+
+func (HttpApiArray) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*HttpApi)(nil)).Elem()
+}
+
+func (i HttpApiArray) ToHttpApiArrayOutput() HttpApiArrayOutput {
+ return i.ToHttpApiArrayOutputWithContext(context.Background())
+}
+
+func (i HttpApiArray) ToHttpApiArrayOutputWithContext(ctx context.Context) HttpApiArrayOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpApiArrayOutput)
+}
+
+func (i HttpApiArray) ToOutput(ctx context.Context) pulumix.Output[[]*HttpApi] {
+ return pulumix.Output[[]*HttpApi]{
+ OutputState: i.ToHttpApiArrayOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpApiMapInput is an input type that accepts HttpApiMap and HttpApiMapOutput values.
+// You can construct a concrete instance of `HttpApiMapInput` via:
+//
+// HttpApiMap{ "key": HttpApiArgs{...} }
+type HttpApiMapInput interface {
+ pulumi.Input
+
+ ToHttpApiMapOutput() HttpApiMapOutput
+ ToHttpApiMapOutputWithContext(context.Context) HttpApiMapOutput
+}
+
+type HttpApiMap map[string]HttpApiInput
+
+func (HttpApiMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*HttpApi)(nil)).Elem()
+}
+
+func (i HttpApiMap) ToHttpApiMapOutput() HttpApiMapOutput {
+ return i.ToHttpApiMapOutputWithContext(context.Background())
+}
+
+func (i HttpApiMap) ToHttpApiMapOutputWithContext(ctx context.Context) HttpApiMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpApiMapOutput)
+}
+
+func (i HttpApiMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*HttpApi] {
+ return pulumix.Output[map[string]*HttpApi]{
+ OutputState: i.ToHttpApiMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type HttpApiOutput struct{ *pulumi.OutputState }
+
+func (HttpApiOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**HttpApi)(nil)).Elem()
+}
+
+func (o HttpApiOutput) ToHttpApiOutput() HttpApiOutput {
+ return o
+}
+
+func (o HttpApiOutput) ToHttpApiOutputWithContext(ctx context.Context) HttpApiOutput {
+ return o
+}
+
+func (o HttpApiOutput) ToOutput(ctx context.Context) pulumix.Output[*HttpApi] {
+ return pulumix.Output[*HttpApi]{
+ OutputState: o.OutputState,
+ }
+}
+
+// The underlying API resource.
+func (o HttpApiOutput) Api() apigatewayv2.ApiOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.ApiOutput { return v.Api }).(apigatewayv2.ApiOutput)
+}
+
+// The API mappings for the HTTP API.
+func (o HttpApiOutput) ApiMappings() apigatewayv2.ApiMappingArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.ApiMappingArrayOutput { return v.ApiMappings }).(apigatewayv2.ApiMappingArrayOutput)
+}
+
+// The authorizers for the HTTP API routes.
+func (o HttpApiOutput) Authorizers() apigatewayv2.AuthorizerArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.AuthorizerArrayOutput { return v.Authorizers }).(apigatewayv2.AuthorizerArrayOutput)
+}
+
+// The deployment for the HTTP API.
+func (o HttpApiOutput) Deployment() apigatewayv2.DeploymentOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.DeploymentOutput { return v.Deployment }).(apigatewayv2.DeploymentOutput)
+}
+
+// The domain names for the HTTP API.
+func (o HttpApiOutput) DomainNames() apigatewayv2.DomainNameArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.DomainNameArrayOutput { return v.DomainNames }).(apigatewayv2.DomainNameArrayOutput)
+}
+
+// The integrations for the HTTP API routes. This is a map from integration name to the integration arguments.
+func (o HttpApiOutput) Integrations() apigatewayv2.IntegrationArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.IntegrationArrayOutput { return v.Integrations }).(apigatewayv2.IntegrationArrayOutput)
+}
+
+// The routes for the HTTP API. This is a map from route key (for example `GET /pets`) to route arguments.
+func (o HttpApiOutput) Routes() apigatewayv2.RouteArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.RouteArrayOutput { return v.Routes }).(apigatewayv2.RouteArrayOutput)
+}
+
+// The deployment stages for the HTTP API.
+func (o HttpApiOutput) Stages() apigatewayv2.StageArrayOutput {
+ return o.ApplyT(func(v *HttpApi) apigatewayv2.StageArrayOutput { return v.Stages }).(apigatewayv2.StageArrayOutput)
+}
+
+type HttpApiArrayOutput struct{ *pulumi.OutputState }
+
+func (HttpApiArrayOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*[]*HttpApi)(nil)).Elem()
+}
+
+func (o HttpApiArrayOutput) ToHttpApiArrayOutput() HttpApiArrayOutput {
+ return o
+}
+
+func (o HttpApiArrayOutput) ToHttpApiArrayOutputWithContext(ctx context.Context) HttpApiArrayOutput {
+ return o
+}
+
+func (o HttpApiArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*HttpApi] {
+ return pulumix.Output[[]*HttpApi]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpApiArrayOutput) Index(i pulumi.IntInput) HttpApiOutput {
+ return pulumi.All(o, i).ApplyT(func(vs []interface{}) *HttpApi {
+ return vs[0].([]*HttpApi)[vs[1].(int)]
+ }).(HttpApiOutput)
+}
+
+type HttpApiMapOutput struct{ *pulumi.OutputState }
+
+func (HttpApiMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]*HttpApi)(nil)).Elem()
+}
+
+func (o HttpApiMapOutput) ToHttpApiMapOutput() HttpApiMapOutput {
+ return o
+}
+
+func (o HttpApiMapOutput) ToHttpApiMapOutputWithContext(ctx context.Context) HttpApiMapOutput {
+ return o
+}
+
+func (o HttpApiMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*HttpApi] {
+ return pulumix.Output[map[string]*HttpApi]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpApiMapOutput) MapIndex(k pulumi.StringInput) HttpApiOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) *HttpApi {
+ return vs[0].(map[string]*HttpApi)[vs[1].(string)]
+ }).(HttpApiOutput)
+}
+
+func init() {
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpApiInput)(nil)).Elem(), &HttpApi{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpApiArrayInput)(nil)).Elem(), HttpApiArray{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpApiMapInput)(nil)).Elem(), HttpApiMap{})
+ pulumi.RegisterOutputType(HttpApiOutput{})
+ pulumi.RegisterOutputType(HttpApiArrayOutput{})
+ pulumi.RegisterOutputType(HttpApiMapOutput{})
+}
diff --git a/sdk/go/awsx/apigatewayv2/init.go b/sdk/go/awsx/apigatewayv2/init.go
new file mode 100644
index 000000000..15821c33d
--- /dev/null
+++ b/sdk/go/awsx/apigatewayv2/init.go
@@ -0,0 +1,45 @@
+// Code generated by pulumi-gen-awsx DO NOT EDIT.
+// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
+
+package apigatewayv2
+
+import (
+ "fmt"
+
+ "github.com/blang/semver"
+ "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal"
+ _ "github.com/pulumi/pulumi-docker/sdk/v4/go/docker"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+)
+
+type module struct {
+ version semver.Version
+}
+
+func (m *module) Version() semver.Version {
+ return m.version
+}
+
+func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) {
+ switch typ {
+ case "awsx:apigatewayv2:HttpApi":
+ r = &HttpApi{}
+ default:
+ return nil, fmt.Errorf("unknown resource type: %s", typ)
+ }
+
+ err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
+ return
+}
+
+func init() {
+ version, err := internal.PkgVersion()
+ if err != nil {
+ version = semver.Version{Major: 1}
+ }
+ pulumi.RegisterResourceModule(
+ "awsx",
+ "apigatewayv2",
+ &module{version},
+ )
+}
diff --git a/sdk/go/awsx/apigatewayv2/pulumiTypes.go b/sdk/go/awsx/apigatewayv2/pulumiTypes.go
new file mode 100644
index 000000000..835910dad
--- /dev/null
+++ b/sdk/go/awsx/apigatewayv2/pulumiTypes.go
@@ -0,0 +1,1127 @@
+// Code generated by pulumi-gen-awsx DO NOT EDIT.
+// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
+
+package apigatewayv2
+
+import (
+ "context"
+ "reflect"
+
+ "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+ "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+ "github.com/pulumi/pulumi/sdk/v3/go/pulumix"
+)
+
+var _ = internal.GetEnvOrDefault
+
+// Manages an Amazon API Gateway Version 2 domain name.
+// More information can be found in the [Amazon API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).
+//
+// > **Note:** This resource establishes ownership of and the TLS settings for
+// a particular domain name. An API stage can be associated with the domain name using the `aws.apigatewayv2.ApiMapping` resource.
+//
+// ## Example Usage
+// ### Basic
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// _, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("ws-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+// ### Associated Route 53 Resource Record
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// exampleDomainName, err := apigatewayv2.NewDomainName(ctx, "exampleDomainName", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("http-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// _, err = route53.NewRecord(ctx, "exampleRecord", &route53.RecordArgs{
+// Name: exampleDomainName.DomainName,
+// Type: pulumi.String("A"),
+// ZoneId: pulumi.Any(aws_route53_zone.Example.Zone_id),
+// Aliases: route53.RecordAliasArray{
+// &route53.RecordAliasArgs{
+// Name: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.TargetDomainName, nil
+// }).(pulumi.StringPtrOutput),
+// ZoneId: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.HostedZoneId, nil
+// }).(pulumi.StringPtrOutput),
+// EvaluateTargetHealth: pulumi.Bool(false),
+// },
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+//
+// ## Import
+//
+// Using `pulumi import`, import `aws_apigatewayv2_domain_name` using the domain name. For example:
+//
+// ```sh
+//
+// $ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com
+//
+// ```
+type DomainConfiguration struct {
+ // Domain name configuration. See below.
+ DomainNameConfiguration *apigatewayv2.DomainNameDomainNameConfiguration `pulumi:"domainNameConfiguration"`
+ // Mutual TLS authentication configuration for the domain name.
+ MutualTlsAuthentication *apigatewayv2.DomainNameMutualTlsAuthentication `pulumi:"mutualTlsAuthentication"`
+ // Map of tags to assign to the domain name. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ Tags map[string]string `pulumi:"tags"`
+}
+
+// DomainConfigurationInput is an input type that accepts DomainConfigurationArgs and DomainConfigurationOutput values.
+// You can construct a concrete instance of `DomainConfigurationInput` via:
+//
+// DomainConfigurationArgs{...}
+type DomainConfigurationInput interface {
+ pulumi.Input
+
+ ToDomainConfigurationOutput() DomainConfigurationOutput
+ ToDomainConfigurationOutputWithContext(context.Context) DomainConfigurationOutput
+}
+
+// Manages an Amazon API Gateway Version 2 domain name.
+// More information can be found in the [Amazon API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).
+//
+// > **Note:** This resource establishes ownership of and the TLS settings for
+// a particular domain name. An API stage can be associated with the domain name using the `aws.apigatewayv2.ApiMapping` resource.
+//
+// ## Example Usage
+// ### Basic
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// _, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("ws-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+// ### Associated Route 53 Resource Record
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// exampleDomainName, err := apigatewayv2.NewDomainName(ctx, "exampleDomainName", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("http-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// _, err = route53.NewRecord(ctx, "exampleRecord", &route53.RecordArgs{
+// Name: exampleDomainName.DomainName,
+// Type: pulumi.String("A"),
+// ZoneId: pulumi.Any(aws_route53_zone.Example.Zone_id),
+// Aliases: route53.RecordAliasArray{
+// &route53.RecordAliasArgs{
+// Name: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.TargetDomainName, nil
+// }).(pulumi.StringPtrOutput),
+// ZoneId: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.HostedZoneId, nil
+// }).(pulumi.StringPtrOutput),
+// EvaluateTargetHealth: pulumi.Bool(false),
+// },
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+//
+// ## Import
+//
+// Using `pulumi import`, import `aws_apigatewayv2_domain_name` using the domain name. For example:
+//
+// ```sh
+//
+// $ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com
+//
+// ```
+type DomainConfigurationArgs struct {
+ // Domain name configuration. See below.
+ DomainNameConfiguration apigatewayv2.DomainNameDomainNameConfigurationPtrInput `pulumi:"domainNameConfiguration"`
+ // Mutual TLS authentication configuration for the domain name.
+ MutualTlsAuthentication apigatewayv2.DomainNameMutualTlsAuthenticationPtrInput `pulumi:"mutualTlsAuthentication"`
+ // Map of tags to assign to the domain name. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+ Tags pulumi.StringMapInput `pulumi:"tags"`
+}
+
+func (DomainConfigurationArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*DomainConfiguration)(nil)).Elem()
+}
+
+func (i DomainConfigurationArgs) ToDomainConfigurationOutput() DomainConfigurationOutput {
+ return i.ToDomainConfigurationOutputWithContext(context.Background())
+}
+
+func (i DomainConfigurationArgs) ToDomainConfigurationOutputWithContext(ctx context.Context) DomainConfigurationOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(DomainConfigurationOutput)
+}
+
+func (i DomainConfigurationArgs) ToOutput(ctx context.Context) pulumix.Output[DomainConfiguration] {
+ return pulumix.Output[DomainConfiguration]{
+ OutputState: i.ToDomainConfigurationOutputWithContext(ctx).OutputState,
+ }
+}
+
+func (i DomainConfigurationArgs) ToDomainConfigurationPtrOutput() DomainConfigurationPtrOutput {
+ return i.ToDomainConfigurationPtrOutputWithContext(context.Background())
+}
+
+func (i DomainConfigurationArgs) ToDomainConfigurationPtrOutputWithContext(ctx context.Context) DomainConfigurationPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(DomainConfigurationOutput).ToDomainConfigurationPtrOutputWithContext(ctx)
+}
+
+// DomainConfigurationPtrInput is an input type that accepts DomainConfigurationArgs, DomainConfigurationPtr and DomainConfigurationPtrOutput values.
+// You can construct a concrete instance of `DomainConfigurationPtrInput` via:
+//
+// DomainConfigurationArgs{...}
+//
+// or:
+//
+// nil
+type DomainConfigurationPtrInput interface {
+ pulumi.Input
+
+ ToDomainConfigurationPtrOutput() DomainConfigurationPtrOutput
+ ToDomainConfigurationPtrOutputWithContext(context.Context) DomainConfigurationPtrOutput
+}
+
+type domainConfigurationPtrType DomainConfigurationArgs
+
+func DomainConfigurationPtr(v *DomainConfigurationArgs) DomainConfigurationPtrInput {
+ return (*domainConfigurationPtrType)(v)
+}
+
+func (*domainConfigurationPtrType) ElementType() reflect.Type {
+ return reflect.TypeOf((**DomainConfiguration)(nil)).Elem()
+}
+
+func (i *domainConfigurationPtrType) ToDomainConfigurationPtrOutput() DomainConfigurationPtrOutput {
+ return i.ToDomainConfigurationPtrOutputWithContext(context.Background())
+}
+
+func (i *domainConfigurationPtrType) ToDomainConfigurationPtrOutputWithContext(ctx context.Context) DomainConfigurationPtrOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(DomainConfigurationPtrOutput)
+}
+
+func (i *domainConfigurationPtrType) ToOutput(ctx context.Context) pulumix.Output[*DomainConfiguration] {
+ return pulumix.Output[*DomainConfiguration]{
+ OutputState: i.ToDomainConfigurationPtrOutputWithContext(ctx).OutputState,
+ }
+}
+
+// Manages an Amazon API Gateway Version 2 domain name.
+// More information can be found in the [Amazon API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html).
+//
+// > **Note:** This resource establishes ownership of and the TLS settings for
+// a particular domain name. An API stage can be associated with the domain name using the `aws.apigatewayv2.ApiMapping` resource.
+//
+// ## Example Usage
+// ### Basic
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// _, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("ws-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+// ### Associated Route 53 Resource Record
+// ```go
+// package main
+//
+// import (
+//
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
+// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
+// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
+//
+// )
+//
+// func main() {
+// pulumi.Run(func(ctx *pulumi.Context) error {
+// exampleDomainName, err := apigatewayv2.NewDomainName(ctx, "exampleDomainName", &apigatewayv2.DomainNameArgs{
+// DomainName: pulumi.String("http-api.example.com"),
+// DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
+// CertificateArn: pulumi.Any(aws_acm_certificate.Example.Arn),
+// EndpointType: pulumi.String("REGIONAL"),
+// SecurityPolicy: pulumi.String("TLS_1_2"),
+// },
+// })
+// if err != nil {
+// return err
+// }
+// _, err = route53.NewRecord(ctx, "exampleRecord", &route53.RecordArgs{
+// Name: exampleDomainName.DomainName,
+// Type: pulumi.String("A"),
+// ZoneId: pulumi.Any(aws_route53_zone.Example.Zone_id),
+// Aliases: route53.RecordAliasArray{
+// &route53.RecordAliasArgs{
+// Name: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.TargetDomainName, nil
+// }).(pulumi.StringPtrOutput),
+// ZoneId: exampleDomainName.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
+// return &domainNameConfiguration.HostedZoneId, nil
+// }).(pulumi.StringPtrOutput),
+// EvaluateTargetHealth: pulumi.Bool(false),
+// },
+// },
+// })
+// if err != nil {
+// return err
+// }
+// return nil
+// })
+// }
+//
+// ```
+//
+// ## Import
+//
+// Using `pulumi import`, import `aws_apigatewayv2_domain_name` using the domain name. For example:
+//
+// ```sh
+//
+// $ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com
+//
+// ```
+type DomainConfigurationOutput struct{ *pulumi.OutputState }
+
+func (DomainConfigurationOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*DomainConfiguration)(nil)).Elem()
+}
+
+func (o DomainConfigurationOutput) ToDomainConfigurationOutput() DomainConfigurationOutput {
+ return o
+}
+
+func (o DomainConfigurationOutput) ToDomainConfigurationOutputWithContext(ctx context.Context) DomainConfigurationOutput {
+ return o
+}
+
+func (o DomainConfigurationOutput) ToDomainConfigurationPtrOutput() DomainConfigurationPtrOutput {
+ return o.ToDomainConfigurationPtrOutputWithContext(context.Background())
+}
+
+func (o DomainConfigurationOutput) ToDomainConfigurationPtrOutputWithContext(ctx context.Context) DomainConfigurationPtrOutput {
+ return o.ApplyTWithContext(ctx, func(_ context.Context, v DomainConfiguration) *DomainConfiguration {
+ return &v
+ }).(DomainConfigurationPtrOutput)
+}
+
+func (o DomainConfigurationOutput) ToOutput(ctx context.Context) pulumix.Output[DomainConfiguration] {
+ return pulumix.Output[DomainConfiguration]{
+ OutputState: o.OutputState,
+ }
+}
+
+// Domain name configuration. See below.
+func (o DomainConfigurationOutput) DomainNameConfiguration() apigatewayv2.DomainNameDomainNameConfigurationPtrOutput {
+ return o.ApplyT(func(v DomainConfiguration) *apigatewayv2.DomainNameDomainNameConfiguration {
+ return v.DomainNameConfiguration
+ }).(apigatewayv2.DomainNameDomainNameConfigurationPtrOutput)
+}
+
+// Mutual TLS authentication configuration for the domain name.
+func (o DomainConfigurationOutput) MutualTlsAuthentication() apigatewayv2.DomainNameMutualTlsAuthenticationPtrOutput {
+ return o.ApplyT(func(v DomainConfiguration) *apigatewayv2.DomainNameMutualTlsAuthentication {
+ return v.MutualTlsAuthentication
+ }).(apigatewayv2.DomainNameMutualTlsAuthenticationPtrOutput)
+}
+
+// Map of tags to assign to the domain name. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+func (o DomainConfigurationOutput) Tags() pulumi.StringMapOutput {
+ return o.ApplyT(func(v DomainConfiguration) map[string]string { return v.Tags }).(pulumi.StringMapOutput)
+}
+
+type DomainConfigurationPtrOutput struct{ *pulumi.OutputState }
+
+func (DomainConfigurationPtrOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((**DomainConfiguration)(nil)).Elem()
+}
+
+func (o DomainConfigurationPtrOutput) ToDomainConfigurationPtrOutput() DomainConfigurationPtrOutput {
+ return o
+}
+
+func (o DomainConfigurationPtrOutput) ToDomainConfigurationPtrOutputWithContext(ctx context.Context) DomainConfigurationPtrOutput {
+ return o
+}
+
+func (o DomainConfigurationPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*DomainConfiguration] {
+ return pulumix.Output[*DomainConfiguration]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o DomainConfigurationPtrOutput) Elem() DomainConfigurationOutput {
+ return o.ApplyT(func(v *DomainConfiguration) DomainConfiguration {
+ if v != nil {
+ return *v
+ }
+ var ret DomainConfiguration
+ return ret
+ }).(DomainConfigurationOutput)
+}
+
+// Domain name configuration. See below.
+func (o DomainConfigurationPtrOutput) DomainNameConfiguration() apigatewayv2.DomainNameDomainNameConfigurationPtrOutput {
+ return o.ApplyT(func(v *DomainConfiguration) *apigatewayv2.DomainNameDomainNameConfiguration {
+ if v == nil {
+ return nil
+ }
+ return v.DomainNameConfiguration
+ }).(apigatewayv2.DomainNameDomainNameConfigurationPtrOutput)
+}
+
+// Mutual TLS authentication configuration for the domain name.
+func (o DomainConfigurationPtrOutput) MutualTlsAuthentication() apigatewayv2.DomainNameMutualTlsAuthenticationPtrOutput {
+ return o.ApplyT(func(v *DomainConfiguration) *apigatewayv2.DomainNameMutualTlsAuthentication {
+ if v == nil {
+ return nil
+ }
+ return v.MutualTlsAuthentication
+ }).(apigatewayv2.DomainNameMutualTlsAuthenticationPtrOutput)
+}
+
+// Map of tags to assign to the domain name. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
+func (o DomainConfigurationPtrOutput) Tags() pulumi.StringMapOutput {
+ return o.ApplyT(func(v *DomainConfiguration) map[string]string {
+ if v == nil {
+ return nil
+ }
+ return v.Tags
+ }).(pulumi.StringMapOutput)
+}
+
+type DomainMapping struct {
+ // Configuration of the domain name to create. Cannot be specified together with `domainId`.
+ DomainConfiguration *DomainConfiguration `pulumi:"domainConfiguration"`
+ // Identifier of an existing domain. Cannot be specified together with `domainConfiguration`.
+ DomainId *string `pulumi:"domainId"`
+}
+
+// DomainMappingInput is an input type that accepts DomainMappingArgs and DomainMappingOutput values.
+// You can construct a concrete instance of `DomainMappingInput` via:
+//
+// DomainMappingArgs{...}
+type DomainMappingInput interface {
+ pulumi.Input
+
+ ToDomainMappingOutput() DomainMappingOutput
+ ToDomainMappingOutputWithContext(context.Context) DomainMappingOutput
+}
+
+type DomainMappingArgs struct {
+ // Configuration of the domain name to create. Cannot be specified together with `domainId`.
+ DomainConfiguration DomainConfigurationPtrInput `pulumi:"domainConfiguration"`
+ // Identifier of an existing domain. Cannot be specified together with `domainConfiguration`.
+ DomainId pulumi.StringPtrInput `pulumi:"domainId"`
+}
+
+func (DomainMappingArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*DomainMapping)(nil)).Elem()
+}
+
+func (i DomainMappingArgs) ToDomainMappingOutput() DomainMappingOutput {
+ return i.ToDomainMappingOutputWithContext(context.Background())
+}
+
+func (i DomainMappingArgs) ToDomainMappingOutputWithContext(ctx context.Context) DomainMappingOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(DomainMappingOutput)
+}
+
+func (i DomainMappingArgs) ToOutput(ctx context.Context) pulumix.Output[DomainMapping] {
+ return pulumix.Output[DomainMapping]{
+ OutputState: i.ToDomainMappingOutputWithContext(ctx).OutputState,
+ }
+}
+
+// DomainMappingMapInput is an input type that accepts DomainMappingMap and DomainMappingMapOutput values.
+// You can construct a concrete instance of `DomainMappingMapInput` via:
+//
+// DomainMappingMap{ "key": DomainMappingArgs{...} }
+type DomainMappingMapInput interface {
+ pulumi.Input
+
+ ToDomainMappingMapOutput() DomainMappingMapOutput
+ ToDomainMappingMapOutputWithContext(context.Context) DomainMappingMapOutput
+}
+
+type DomainMappingMap map[string]DomainMappingInput
+
+func (DomainMappingMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]DomainMapping)(nil)).Elem()
+}
+
+func (i DomainMappingMap) ToDomainMappingMapOutput() DomainMappingMapOutput {
+ return i.ToDomainMappingMapOutputWithContext(context.Background())
+}
+
+func (i DomainMappingMap) ToDomainMappingMapOutputWithContext(ctx context.Context) DomainMappingMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(DomainMappingMapOutput)
+}
+
+func (i DomainMappingMap) ToOutput(ctx context.Context) pulumix.Output[map[string]DomainMapping] {
+ return pulumix.Output[map[string]DomainMapping]{
+ OutputState: i.ToDomainMappingMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type DomainMappingOutput struct{ *pulumi.OutputState }
+
+func (DomainMappingOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*DomainMapping)(nil)).Elem()
+}
+
+func (o DomainMappingOutput) ToDomainMappingOutput() DomainMappingOutput {
+ return o
+}
+
+func (o DomainMappingOutput) ToDomainMappingOutputWithContext(ctx context.Context) DomainMappingOutput {
+ return o
+}
+
+func (o DomainMappingOutput) ToOutput(ctx context.Context) pulumix.Output[DomainMapping] {
+ return pulumix.Output[DomainMapping]{
+ OutputState: o.OutputState,
+ }
+}
+
+// Configuration of the domain name to create. Cannot be specified together with `domainId`.
+func (o DomainMappingOutput) DomainConfiguration() DomainConfigurationPtrOutput {
+ return o.ApplyT(func(v DomainMapping) *DomainConfiguration { return v.DomainConfiguration }).(DomainConfigurationPtrOutput)
+}
+
+// Identifier of an existing domain. Cannot be specified together with `domainConfiguration`.
+func (o DomainMappingOutput) DomainId() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v DomainMapping) *string { return v.DomainId }).(pulumi.StringPtrOutput)
+}
+
+type DomainMappingMapOutput struct{ *pulumi.OutputState }
+
+func (DomainMappingMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]DomainMapping)(nil)).Elem()
+}
+
+func (o DomainMappingMapOutput) ToDomainMappingMapOutput() DomainMappingMapOutput {
+ return o
+}
+
+func (o DomainMappingMapOutput) ToDomainMappingMapOutputWithContext(ctx context.Context) DomainMappingMapOutput {
+ return o
+}
+
+func (o DomainMappingMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]DomainMapping] {
+ return pulumix.Output[map[string]DomainMapping]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o DomainMappingMapOutput) MapIndex(k pulumi.StringInput) DomainMappingOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) DomainMapping {
+ return vs[0].(map[string]DomainMapping)[vs[1].(string)]
+ }).(DomainMappingOutput)
+}
+
+type HttpAuthorizer struct {
+}
+
+// HttpAuthorizerInput is an input type that accepts HttpAuthorizerArgs and HttpAuthorizerOutput values.
+// You can construct a concrete instance of `HttpAuthorizerInput` via:
+//
+// HttpAuthorizerArgs{...}
+type HttpAuthorizerInput interface {
+ pulumi.Input
+
+ ToHttpAuthorizerOutput() HttpAuthorizerOutput
+ ToHttpAuthorizerOutputWithContext(context.Context) HttpAuthorizerOutput
+}
+
+type HttpAuthorizerArgs struct {
+}
+
+func (HttpAuthorizerArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpAuthorizer)(nil)).Elem()
+}
+
+func (i HttpAuthorizerArgs) ToHttpAuthorizerOutput() HttpAuthorizerOutput {
+ return i.ToHttpAuthorizerOutputWithContext(context.Background())
+}
+
+func (i HttpAuthorizerArgs) ToHttpAuthorizerOutputWithContext(ctx context.Context) HttpAuthorizerOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpAuthorizerOutput)
+}
+
+func (i HttpAuthorizerArgs) ToOutput(ctx context.Context) pulumix.Output[HttpAuthorizer] {
+ return pulumix.Output[HttpAuthorizer]{
+ OutputState: i.ToHttpAuthorizerOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpAuthorizerMapInput is an input type that accepts HttpAuthorizerMap and HttpAuthorizerMapOutput values.
+// You can construct a concrete instance of `HttpAuthorizerMapInput` via:
+//
+// HttpAuthorizerMap{ "key": HttpAuthorizerArgs{...} }
+type HttpAuthorizerMapInput interface {
+ pulumi.Input
+
+ ToHttpAuthorizerMapOutput() HttpAuthorizerMapOutput
+ ToHttpAuthorizerMapOutputWithContext(context.Context) HttpAuthorizerMapOutput
+}
+
+type HttpAuthorizerMap map[string]HttpAuthorizerInput
+
+func (HttpAuthorizerMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpAuthorizer)(nil)).Elem()
+}
+
+func (i HttpAuthorizerMap) ToHttpAuthorizerMapOutput() HttpAuthorizerMapOutput {
+ return i.ToHttpAuthorizerMapOutputWithContext(context.Background())
+}
+
+func (i HttpAuthorizerMap) ToHttpAuthorizerMapOutputWithContext(ctx context.Context) HttpAuthorizerMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpAuthorizerMapOutput)
+}
+
+func (i HttpAuthorizerMap) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpAuthorizer] {
+ return pulumix.Output[map[string]HttpAuthorizer]{
+ OutputState: i.ToHttpAuthorizerMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type HttpAuthorizerOutput struct{ *pulumi.OutputState }
+
+func (HttpAuthorizerOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpAuthorizer)(nil)).Elem()
+}
+
+func (o HttpAuthorizerOutput) ToHttpAuthorizerOutput() HttpAuthorizerOutput {
+ return o
+}
+
+func (o HttpAuthorizerOutput) ToHttpAuthorizerOutputWithContext(ctx context.Context) HttpAuthorizerOutput {
+ return o
+}
+
+func (o HttpAuthorizerOutput) ToOutput(ctx context.Context) pulumix.Output[HttpAuthorizer] {
+ return pulumix.Output[HttpAuthorizer]{
+ OutputState: o.OutputState,
+ }
+}
+
+type HttpAuthorizerMapOutput struct{ *pulumi.OutputState }
+
+func (HttpAuthorizerMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpAuthorizer)(nil)).Elem()
+}
+
+func (o HttpAuthorizerMapOutput) ToHttpAuthorizerMapOutput() HttpAuthorizerMapOutput {
+ return o
+}
+
+func (o HttpAuthorizerMapOutput) ToHttpAuthorizerMapOutputWithContext(ctx context.Context) HttpAuthorizerMapOutput {
+ return o
+}
+
+func (o HttpAuthorizerMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpAuthorizer] {
+ return pulumix.Output[map[string]HttpAuthorizer]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpAuthorizerMapOutput) MapIndex(k pulumi.StringInput) HttpAuthorizerOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) HttpAuthorizer {
+ return vs[0].(map[string]HttpAuthorizer)[vs[1].(string)]
+ }).(HttpAuthorizerOutput)
+}
+
+type HttpIntegration struct {
+}
+
+// HttpIntegrationInput is an input type that accepts HttpIntegrationArgs and HttpIntegrationOutput values.
+// You can construct a concrete instance of `HttpIntegrationInput` via:
+//
+// HttpIntegrationArgs{...}
+type HttpIntegrationInput interface {
+ pulumi.Input
+
+ ToHttpIntegrationOutput() HttpIntegrationOutput
+ ToHttpIntegrationOutputWithContext(context.Context) HttpIntegrationOutput
+}
+
+type HttpIntegrationArgs struct {
+}
+
+func (HttpIntegrationArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpIntegration)(nil)).Elem()
+}
+
+func (i HttpIntegrationArgs) ToHttpIntegrationOutput() HttpIntegrationOutput {
+ return i.ToHttpIntegrationOutputWithContext(context.Background())
+}
+
+func (i HttpIntegrationArgs) ToHttpIntegrationOutputWithContext(ctx context.Context) HttpIntegrationOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpIntegrationOutput)
+}
+
+func (i HttpIntegrationArgs) ToOutput(ctx context.Context) pulumix.Output[HttpIntegration] {
+ return pulumix.Output[HttpIntegration]{
+ OutputState: i.ToHttpIntegrationOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpIntegrationMapInput is an input type that accepts HttpIntegrationMap and HttpIntegrationMapOutput values.
+// You can construct a concrete instance of `HttpIntegrationMapInput` via:
+//
+// HttpIntegrationMap{ "key": HttpIntegrationArgs{...} }
+type HttpIntegrationMapInput interface {
+ pulumi.Input
+
+ ToHttpIntegrationMapOutput() HttpIntegrationMapOutput
+ ToHttpIntegrationMapOutputWithContext(context.Context) HttpIntegrationMapOutput
+}
+
+type HttpIntegrationMap map[string]HttpIntegrationInput
+
+func (HttpIntegrationMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpIntegration)(nil)).Elem()
+}
+
+func (i HttpIntegrationMap) ToHttpIntegrationMapOutput() HttpIntegrationMapOutput {
+ return i.ToHttpIntegrationMapOutputWithContext(context.Background())
+}
+
+func (i HttpIntegrationMap) ToHttpIntegrationMapOutputWithContext(ctx context.Context) HttpIntegrationMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpIntegrationMapOutput)
+}
+
+func (i HttpIntegrationMap) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpIntegration] {
+ return pulumix.Output[map[string]HttpIntegration]{
+ OutputState: i.ToHttpIntegrationMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type HttpIntegrationOutput struct{ *pulumi.OutputState }
+
+func (HttpIntegrationOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpIntegration)(nil)).Elem()
+}
+
+func (o HttpIntegrationOutput) ToHttpIntegrationOutput() HttpIntegrationOutput {
+ return o
+}
+
+func (o HttpIntegrationOutput) ToHttpIntegrationOutputWithContext(ctx context.Context) HttpIntegrationOutput {
+ return o
+}
+
+func (o HttpIntegrationOutput) ToOutput(ctx context.Context) pulumix.Output[HttpIntegration] {
+ return pulumix.Output[HttpIntegration]{
+ OutputState: o.OutputState,
+ }
+}
+
+type HttpIntegrationMapOutput struct{ *pulumi.OutputState }
+
+func (HttpIntegrationMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpIntegration)(nil)).Elem()
+}
+
+func (o HttpIntegrationMapOutput) ToHttpIntegrationMapOutput() HttpIntegrationMapOutput {
+ return o
+}
+
+func (o HttpIntegrationMapOutput) ToHttpIntegrationMapOutputWithContext(ctx context.Context) HttpIntegrationMapOutput {
+ return o
+}
+
+func (o HttpIntegrationMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpIntegration] {
+ return pulumix.Output[map[string]HttpIntegration]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpIntegrationMapOutput) MapIndex(k pulumi.StringInput) HttpIntegrationOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) HttpIntegration {
+ return vs[0].(map[string]HttpIntegration)[vs[1].(string)]
+ }).(HttpIntegrationOutput)
+}
+
+type HttpRoute struct {
+ // The key of the target authorizer for the route specified in the `authorizers` property. This is used to automatically calculate the `authorizerId` property of the route.
+ Authorizer *string `pulumi:"authorizer"`
+ // The key of the target integration for the route specified in the `integrations` property. This is used to automatically calculate the `target` property of the route. One of `integration` or `target` must be specified.
+ Integration *string `pulumi:"integration"`
+}
+
+// HttpRouteInput is an input type that accepts HttpRouteArgs and HttpRouteOutput values.
+// You can construct a concrete instance of `HttpRouteInput` via:
+//
+// HttpRouteArgs{...}
+type HttpRouteInput interface {
+ pulumi.Input
+
+ ToHttpRouteOutput() HttpRouteOutput
+ ToHttpRouteOutputWithContext(context.Context) HttpRouteOutput
+}
+
+type HttpRouteArgs struct {
+ // The key of the target authorizer for the route specified in the `authorizers` property. This is used to automatically calculate the `authorizerId` property of the route.
+ Authorizer pulumi.StringPtrInput `pulumi:"authorizer"`
+ // The key of the target integration for the route specified in the `integrations` property. This is used to automatically calculate the `target` property of the route. One of `integration` or `target` must be specified.
+ Integration pulumi.StringPtrInput `pulumi:"integration"`
+}
+
+func (HttpRouteArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpRoute)(nil)).Elem()
+}
+
+func (i HttpRouteArgs) ToHttpRouteOutput() HttpRouteOutput {
+ return i.ToHttpRouteOutputWithContext(context.Background())
+}
+
+func (i HttpRouteArgs) ToHttpRouteOutputWithContext(ctx context.Context) HttpRouteOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpRouteOutput)
+}
+
+func (i HttpRouteArgs) ToOutput(ctx context.Context) pulumix.Output[HttpRoute] {
+ return pulumix.Output[HttpRoute]{
+ OutputState: i.ToHttpRouteOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpRouteMapInput is an input type that accepts HttpRouteMap and HttpRouteMapOutput values.
+// You can construct a concrete instance of `HttpRouteMapInput` via:
+//
+// HttpRouteMap{ "key": HttpRouteArgs{...} }
+type HttpRouteMapInput interface {
+ pulumi.Input
+
+ ToHttpRouteMapOutput() HttpRouteMapOutput
+ ToHttpRouteMapOutputWithContext(context.Context) HttpRouteMapOutput
+}
+
+type HttpRouteMap map[string]HttpRouteInput
+
+func (HttpRouteMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpRoute)(nil)).Elem()
+}
+
+func (i HttpRouteMap) ToHttpRouteMapOutput() HttpRouteMapOutput {
+ return i.ToHttpRouteMapOutputWithContext(context.Background())
+}
+
+func (i HttpRouteMap) ToHttpRouteMapOutputWithContext(ctx context.Context) HttpRouteMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpRouteMapOutput)
+}
+
+func (i HttpRouteMap) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpRoute] {
+ return pulumix.Output[map[string]HttpRoute]{
+ OutputState: i.ToHttpRouteMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type HttpRouteOutput struct{ *pulumi.OutputState }
+
+func (HttpRouteOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpRoute)(nil)).Elem()
+}
+
+func (o HttpRouteOutput) ToHttpRouteOutput() HttpRouteOutput {
+ return o
+}
+
+func (o HttpRouteOutput) ToHttpRouteOutputWithContext(ctx context.Context) HttpRouteOutput {
+ return o
+}
+
+func (o HttpRouteOutput) ToOutput(ctx context.Context) pulumix.Output[HttpRoute] {
+ return pulumix.Output[HttpRoute]{
+ OutputState: o.OutputState,
+ }
+}
+
+// The key of the target authorizer for the route specified in the `authorizers` property. This is used to automatically calculate the `authorizerId` property of the route.
+func (o HttpRouteOutput) Authorizer() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v HttpRoute) *string { return v.Authorizer }).(pulumi.StringPtrOutput)
+}
+
+// The key of the target integration for the route specified in the `integrations` property. This is used to automatically calculate the `target` property of the route. One of `integration` or `target` must be specified.
+func (o HttpRouteOutput) Integration() pulumi.StringPtrOutput {
+ return o.ApplyT(func(v HttpRoute) *string { return v.Integration }).(pulumi.StringPtrOutput)
+}
+
+type HttpRouteMapOutput struct{ *pulumi.OutputState }
+
+func (HttpRouteMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpRoute)(nil)).Elem()
+}
+
+func (o HttpRouteMapOutput) ToHttpRouteMapOutput() HttpRouteMapOutput {
+ return o
+}
+
+func (o HttpRouteMapOutput) ToHttpRouteMapOutputWithContext(ctx context.Context) HttpRouteMapOutput {
+ return o
+}
+
+func (o HttpRouteMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpRoute] {
+ return pulumix.Output[map[string]HttpRoute]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpRouteMapOutput) MapIndex(k pulumi.StringInput) HttpRouteOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) HttpRoute {
+ return vs[0].(map[string]HttpRoute)[vs[1].(string)]
+ }).(HttpRouteOutput)
+}
+
+type HttpStage struct {
+}
+
+// HttpStageInput is an input type that accepts HttpStageArgs and HttpStageOutput values.
+// You can construct a concrete instance of `HttpStageInput` via:
+//
+// HttpStageArgs{...}
+type HttpStageInput interface {
+ pulumi.Input
+
+ ToHttpStageOutput() HttpStageOutput
+ ToHttpStageOutputWithContext(context.Context) HttpStageOutput
+}
+
+type HttpStageArgs struct {
+}
+
+func (HttpStageArgs) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpStage)(nil)).Elem()
+}
+
+func (i HttpStageArgs) ToHttpStageOutput() HttpStageOutput {
+ return i.ToHttpStageOutputWithContext(context.Background())
+}
+
+func (i HttpStageArgs) ToHttpStageOutputWithContext(ctx context.Context) HttpStageOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpStageOutput)
+}
+
+func (i HttpStageArgs) ToOutput(ctx context.Context) pulumix.Output[HttpStage] {
+ return pulumix.Output[HttpStage]{
+ OutputState: i.ToHttpStageOutputWithContext(ctx).OutputState,
+ }
+}
+
+// HttpStageMapInput is an input type that accepts HttpStageMap and HttpStageMapOutput values.
+// You can construct a concrete instance of `HttpStageMapInput` via:
+//
+// HttpStageMap{ "key": HttpStageArgs{...} }
+type HttpStageMapInput interface {
+ pulumi.Input
+
+ ToHttpStageMapOutput() HttpStageMapOutput
+ ToHttpStageMapOutputWithContext(context.Context) HttpStageMapOutput
+}
+
+type HttpStageMap map[string]HttpStageInput
+
+func (HttpStageMap) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpStage)(nil)).Elem()
+}
+
+func (i HttpStageMap) ToHttpStageMapOutput() HttpStageMapOutput {
+ return i.ToHttpStageMapOutputWithContext(context.Background())
+}
+
+func (i HttpStageMap) ToHttpStageMapOutputWithContext(ctx context.Context) HttpStageMapOutput {
+ return pulumi.ToOutputWithContext(ctx, i).(HttpStageMapOutput)
+}
+
+func (i HttpStageMap) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpStage] {
+ return pulumix.Output[map[string]HttpStage]{
+ OutputState: i.ToHttpStageMapOutputWithContext(ctx).OutputState,
+ }
+}
+
+type HttpStageOutput struct{ *pulumi.OutputState }
+
+func (HttpStageOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*HttpStage)(nil)).Elem()
+}
+
+func (o HttpStageOutput) ToHttpStageOutput() HttpStageOutput {
+ return o
+}
+
+func (o HttpStageOutput) ToHttpStageOutputWithContext(ctx context.Context) HttpStageOutput {
+ return o
+}
+
+func (o HttpStageOutput) ToOutput(ctx context.Context) pulumix.Output[HttpStage] {
+ return pulumix.Output[HttpStage]{
+ OutputState: o.OutputState,
+ }
+}
+
+type HttpStageMapOutput struct{ *pulumi.OutputState }
+
+func (HttpStageMapOutput) ElementType() reflect.Type {
+ return reflect.TypeOf((*map[string]HttpStage)(nil)).Elem()
+}
+
+func (o HttpStageMapOutput) ToHttpStageMapOutput() HttpStageMapOutput {
+ return o
+}
+
+func (o HttpStageMapOutput) ToHttpStageMapOutputWithContext(ctx context.Context) HttpStageMapOutput {
+ return o
+}
+
+func (o HttpStageMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]HttpStage] {
+ return pulumix.Output[map[string]HttpStage]{
+ OutputState: o.OutputState,
+ }
+}
+
+func (o HttpStageMapOutput) MapIndex(k pulumi.StringInput) HttpStageOutput {
+ return pulumi.All(o, k).ApplyT(func(vs []interface{}) HttpStage {
+ return vs[0].(map[string]HttpStage)[vs[1].(string)]
+ }).(HttpStageOutput)
+}
+
+func init() {
+ pulumi.RegisterInputType(reflect.TypeOf((*DomainConfigurationInput)(nil)).Elem(), DomainConfigurationArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*DomainConfigurationPtrInput)(nil)).Elem(), DomainConfigurationArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*DomainMappingInput)(nil)).Elem(), DomainMappingArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*DomainMappingMapInput)(nil)).Elem(), DomainMappingMap{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpAuthorizerInput)(nil)).Elem(), HttpAuthorizerArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpAuthorizerMapInput)(nil)).Elem(), HttpAuthorizerMap{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpIntegrationInput)(nil)).Elem(), HttpIntegrationArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpIntegrationMapInput)(nil)).Elem(), HttpIntegrationMap{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpRouteInput)(nil)).Elem(), HttpRouteArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpRouteMapInput)(nil)).Elem(), HttpRouteMap{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpStageInput)(nil)).Elem(), HttpStageArgs{})
+ pulumi.RegisterInputType(reflect.TypeOf((*HttpStageMapInput)(nil)).Elem(), HttpStageMap{})
+ pulumi.RegisterOutputType(DomainConfigurationOutput{})
+ pulumi.RegisterOutputType(DomainConfigurationPtrOutput{})
+ pulumi.RegisterOutputType(DomainMappingOutput{})
+ pulumi.RegisterOutputType(DomainMappingMapOutput{})
+ pulumi.RegisterOutputType(HttpAuthorizerOutput{})
+ pulumi.RegisterOutputType(HttpAuthorizerMapOutput{})
+ pulumi.RegisterOutputType(HttpIntegrationOutput{})
+ pulumi.RegisterOutputType(HttpIntegrationMapOutput{})
+ pulumi.RegisterOutputType(HttpRouteOutput{})
+ pulumi.RegisterOutputType(HttpRouteMapOutput{})
+ pulumi.RegisterOutputType(HttpStageOutput{})
+ pulumi.RegisterOutputType(HttpStageMapOutput{})
+}
diff --git a/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApi.java b/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApi.java
new file mode 100644
index 000000000..bc14061ca
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApi.java
@@ -0,0 +1,190 @@
+// *** 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.awsx.apigatewayv2;
+
+import com.pulumi.aws.apigatewayv2.Api;
+import com.pulumi.aws.apigatewayv2.ApiMapping;
+import com.pulumi.aws.apigatewayv2.Authorizer;
+import com.pulumi.aws.apigatewayv2.Deployment;
+import com.pulumi.aws.apigatewayv2.DomainName;
+import com.pulumi.aws.apigatewayv2.Integration;
+import com.pulumi.aws.apigatewayv2.Route;
+import com.pulumi.aws.apigatewayv2.Stage;
+import com.pulumi.awsx.Utilities;
+import com.pulumi.awsx.apigatewayv2.HttpApiArgs;
+import com.pulumi.core.Output;
+import com.pulumi.core.annotations.Export;
+import com.pulumi.core.annotations.ResourceType;
+import com.pulumi.core.internal.Codegen;
+import java.util.List;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+/**
+ * Creates an HTTP API with associated sub-resources.
+ *
+ */
+@ResourceType(type="awsx:apigatewayv2:HttpApi")
+public class HttpApi extends com.pulumi.resources.CustomResource {
+ /**
+ * The underlying API resource.
+ *
+ */
+ @Export(name="api", refs={Api.class}, tree="[0]")
+ private Output api;
+
+ /**
+ * @return The underlying API resource.
+ *
+ */
+ public Output api() {
+ return this.api;
+ }
+ /**
+ * The API mappings for the HTTP API.
+ *
+ */
+ @Export(name="apiMappings", refs={List.class,ApiMapping.class}, tree="[0,1]")
+ private Output* @Nullable */ List> apiMappings;
+
+ /**
+ * @return The API mappings for the HTTP API.
+ *
+ */
+ public Output>> apiMappings() {
+ return Codegen.optional(this.apiMappings);
+ }
+ /**
+ * The authorizers for the HTTP API routes.
+ *
+ */
+ @Export(name="authorizers", refs={List.class,Authorizer.class}, tree="[0,1]")
+ private Output> authorizers;
+
+ /**
+ * @return The authorizers for the HTTP API routes.
+ *
+ */
+ public Output> authorizers() {
+ return this.authorizers;
+ }
+ /**
+ * The deployment for the HTTP API.
+ *
+ */
+ @Export(name="deployment", refs={Deployment.class}, tree="[0]")
+ private Output deployment;
+
+ /**
+ * @return The deployment for the HTTP API.
+ *
+ */
+ public Output deployment() {
+ return this.deployment;
+ }
+ /**
+ * The domain names for the HTTP API.
+ *
+ */
+ @Export(name="domainNames", refs={List.class,DomainName.class}, tree="[0,1]")
+ private Output> domainNames;
+
+ /**
+ * @return The domain names for the HTTP API.
+ *
+ */
+ public Output> domainNames() {
+ return this.domainNames;
+ }
+ /**
+ * The integrations for the HTTP API routes. This is a map from integration name to the integration arguments.
+ *
+ */
+ @Export(name="integrations", refs={List.class,Integration.class}, tree="[0,1]")
+ private Output> integrations;
+
+ /**
+ * @return The integrations for the HTTP API routes. This is a map from integration name to the integration arguments.
+ *
+ */
+ public Output> integrations() {
+ return this.integrations;
+ }
+ /**
+ * The routes for the HTTP API. This is a map from route key (for example `GET /pets`) to route arguments.
+ *
+ */
+ @Export(name="routes", refs={List.class,Route.class}, tree="[0,1]")
+ private Output> routes;
+
+ /**
+ * @return The routes for the HTTP API. This is a map from route key (for example `GET /pets`) to route arguments.
+ *
+ */
+ public Output> routes() {
+ return this.routes;
+ }
+ /**
+ * The deployment stages for the HTTP API.
+ *
+ */
+ @Export(name="stages", refs={List.class,Stage.class}, tree="[0,1]")
+ private Output> stages;
+
+ /**
+ * @return The deployment stages for the HTTP API.
+ *
+ */
+ public Output> stages() {
+ return this.stages;
+ }
+
+ /**
+ *
+ * @param name The _unique_ name of the resulting resource.
+ */
+ public HttpApi(String name) {
+ this(name, HttpApiArgs.Empty);
+ }
+ /**
+ *
+ * @param name The _unique_ name of the resulting resource.
+ * @param args The arguments to use to populate this resource's properties.
+ */
+ public HttpApi(String name, HttpApiArgs args) {
+ this(name, args, null);
+ }
+ /**
+ *
+ * @param name The _unique_ name of the resulting resource.
+ * @param args The arguments to use to populate this resource's properties.
+ * @param options A bag of options that control this resource's behavior.
+ */
+ public HttpApi(String name, HttpApiArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ super("awsx:apigatewayv2:HttpApi", name, args == null ? HttpApiArgs.Empty : args, makeResourceOptions(options, Codegen.empty()));
+ }
+
+ private HttpApi(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ super("awsx:apigatewayv2:HttpApi", name, null, makeResourceOptions(options, id));
+ }
+
+ private static com.pulumi.resources.CustomResourceOptions makeResourceOptions(@Nullable com.pulumi.resources.CustomResourceOptions options, @Nullable Output id) {
+ var defaultOptions = com.pulumi.resources.CustomResourceOptions.builder()
+ .version(Utilities.getVersion())
+ .build();
+ return com.pulumi.resources.CustomResourceOptions.merge(defaultOptions, options, id);
+ }
+
+ /**
+ * Get an existing Host resource's state with the given name, ID, and optional extra
+ * properties used to qualify the lookup.
+ *
+ * @param name The _unique_ name of the resulting resource.
+ * @param id The _unique_ provider ID of the resource to lookup.
+ * @param options Optional settings to control the behavior of the CustomResource.
+ */
+ public static HttpApi get(String name, Output id, @Nullable com.pulumi.resources.CustomResourceOptions options) {
+ return new HttpApi(name, id, options);
+ }
+}
diff --git a/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApiArgs.java b/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApiArgs.java
new file mode 100644
index 000000000..5bcfe06d6
--- /dev/null
+++ b/sdk/java/src/main/java/com/pulumi/awsx/apigatewayv2/HttpApiArgs.java
@@ -0,0 +1,630 @@
+// *** 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.awsx.apigatewayv2;
+
+import com.pulumi.aws.apigatewayv2.inputs.ApiCorsConfigurationArgs;
+import com.pulumi.awsx.apigatewayv2.inputs.DomainMappingArgs;
+import com.pulumi.awsx.apigatewayv2.inputs.HttpAuthorizerArgs;
+import com.pulumi.awsx.apigatewayv2.inputs.HttpIntegrationArgs;
+import com.pulumi.awsx.apigatewayv2.inputs.HttpRouteArgs;
+import com.pulumi.awsx.apigatewayv2.inputs.HttpStageArgs;
+import com.pulumi.core.Output;
+import com.pulumi.core.annotations.Import;
+import java.lang.Boolean;
+import java.lang.String;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import javax.annotation.Nullable;
+
+
+public final class HttpApiArgs extends com.pulumi.resources.ResourceArgs {
+
+ public static final HttpApiArgs Empty = new HttpApiArgs();
+
+ /**
+ * An [API key selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).
+ * Valid values: `$context.authorizer.usageIdentifierKey`, `$request.header.x-api-key`. Defaults to `$request.header.x-api-key`.
+ * Applicable for WebSocket APIs.
+ *
+ */
+ @Import(name="apiKeySelectionExpression")
+ private @Nullable Output apiKeySelectionExpression;
+
+ /**
+ * @return An [API key selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions).
+ * Valid values: `$context.authorizer.usageIdentifierKey`, `$request.header.x-api-key`. Defaults to `$request.header.x-api-key`.
+ * Applicable for WebSocket APIs.
+ *
+ */
+ public Optional