github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/apigateway/integration.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package apigateway
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides an HTTP Method Integration for an API Gateway Integration.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			myDemoAPI, err := apigateway.NewRestApi(ctx, "MyDemoAPI", &apigateway.RestApiArgs{
    33  //				Name:        pulumi.String("MyDemoAPI"),
    34  //				Description: pulumi.String("This is my API for demonstration purposes"),
    35  //			})
    36  //			if err != nil {
    37  //				return err
    38  //			}
    39  //			myDemoResource, err := apigateway.NewResource(ctx, "MyDemoResource", &apigateway.ResourceArgs{
    40  //				RestApi:  myDemoAPI.ID(),
    41  //				ParentId: myDemoAPI.RootResourceId,
    42  //				PathPart: pulumi.String("mydemoresource"),
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			myDemoMethod, err := apigateway.NewMethod(ctx, "MyDemoMethod", &apigateway.MethodArgs{
    48  //				RestApi:       myDemoAPI.ID(),
    49  //				ResourceId:    myDemoResource.ID(),
    50  //				HttpMethod:    pulumi.String("GET"),
    51  //				Authorization: pulumi.String("NONE"),
    52  //			})
    53  //			if err != nil {
    54  //				return err
    55  //			}
    56  //			_, err = apigateway.NewIntegration(ctx, "MyDemoIntegration", &apigateway.IntegrationArgs{
    57  //				RestApi:    myDemoAPI.ID(),
    58  //				ResourceId: myDemoResource.ID(),
    59  //				HttpMethod: myDemoMethod.HttpMethod,
    60  //				Type:       pulumi.String("MOCK"),
    61  //				CacheKeyParameters: pulumi.StringArray{
    62  //					pulumi.String("method.request.path.param"),
    63  //				},
    64  //				CacheNamespace:      pulumi.String("foobar"),
    65  //				TimeoutMilliseconds: pulumi.Int(29000),
    66  //				RequestParameters: pulumi.StringMap{
    67  //					"integration.request.header.X-Authorization": pulumi.String("'static'"),
    68  //				},
    69  //				RequestTemplates: pulumi.StringMap{
    70  //					"application/xml": pulumi.String("{\n   \"body\" : $input.json('$')\n}\n"),
    71  //				},
    72  //			})
    73  //			if err != nil {
    74  //				return err
    75  //			}
    76  //			return nil
    77  //		})
    78  //	}
    79  //
    80  // ```
    81  // <!--End PulumiCodeChooser -->
    82  //
    83  // ## Lambda integration
    84  //
    85  // <!--Start PulumiCodeChooser -->
    86  // ```go
    87  // package main
    88  //
    89  // import (
    90  //
    91  //	"fmt"
    92  //
    93  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway"
    94  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    95  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda"
    96  //	"github.com/pulumi/pulumi-std/sdk/go/std"
    97  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    98  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    99  //
   100  // )
   101  //
   102  //	func main() {
   103  //		pulumi.Run(func(ctx *pulumi.Context) error {
   104  //			cfg := config.New(ctx, "")
   105  //			myregion := cfg.RequireObject("myregion")
   106  //			accountId := cfg.RequireObject("accountId")
   107  //			// API Gateway
   108  //			api, err := apigateway.NewRestApi(ctx, "api", &apigateway.RestApiArgs{
   109  //				Name: pulumi.String("myapi"),
   110  //			})
   111  //			if err != nil {
   112  //				return err
   113  //			}
   114  //			resource, err := apigateway.NewResource(ctx, "resource", &apigateway.ResourceArgs{
   115  //				PathPart: pulumi.String("resource"),
   116  //				ParentId: api.RootResourceId,
   117  //				RestApi:  api.ID(),
   118  //			})
   119  //			if err != nil {
   120  //				return err
   121  //			}
   122  //			method, err := apigateway.NewMethod(ctx, "method", &apigateway.MethodArgs{
   123  //				RestApi:       api.ID(),
   124  //				ResourceId:    resource.ID(),
   125  //				HttpMethod:    pulumi.String("GET"),
   126  //				Authorization: pulumi.String("NONE"),
   127  //			})
   128  //			if err != nil {
   129  //				return err
   130  //			}
   131  //			// IAM
   132  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
   133  //				Statements: []iam.GetPolicyDocumentStatement{
   134  //					{
   135  //						Effect: pulumi.StringRef("Allow"),
   136  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
   137  //							{
   138  //								Type: "Service",
   139  //								Identifiers: []string{
   140  //									"lambda.amazonaws.com",
   141  //								},
   142  //							},
   143  //						},
   144  //						Actions: []string{
   145  //							"sts:AssumeRole",
   146  //						},
   147  //					},
   148  //				},
   149  //			}, nil)
   150  //			if err != nil {
   151  //				return err
   152  //			}
   153  //			role, err := iam.NewRole(ctx, "role", &iam.RoleArgs{
   154  //				Name:             pulumi.String("myrole"),
   155  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
   156  //			})
   157  //			if err != nil {
   158  //				return err
   159  //			}
   160  //			invokeFilebase64sha256, err := std.Filebase64sha256(ctx, &std.Filebase64sha256Args{
   161  //				Input: "lambda.zip",
   162  //			}, nil)
   163  //			if err != nil {
   164  //				return err
   165  //			}
   166  //			lambda, err := lambda.NewFunction(ctx, "lambda", &lambda.FunctionArgs{
   167  //				Code:           pulumi.NewFileArchive("lambda.zip"),
   168  //				Name:           pulumi.String("mylambda"),
   169  //				Role:           role.Arn,
   170  //				Handler:        pulumi.String("lambda.lambda_handler"),
   171  //				Runtime:        pulumi.String(lambda.RuntimePython3d7),
   172  //				SourceCodeHash: invokeFilebase64sha256.Result,
   173  //			})
   174  //			if err != nil {
   175  //				return err
   176  //			}
   177  //			_, err = apigateway.NewIntegration(ctx, "integration", &apigateway.IntegrationArgs{
   178  //				RestApi:               api.ID(),
   179  //				ResourceId:            resource.ID(),
   180  //				HttpMethod:            method.HttpMethod,
   181  //				IntegrationHttpMethod: pulumi.String("POST"),
   182  //				Type:                  pulumi.String("AWS_PROXY"),
   183  //				Uri:                   lambda.InvokeArn,
   184  //			})
   185  //			if err != nil {
   186  //				return err
   187  //			}
   188  //			// Lambda
   189  //			_, err = lambda.NewPermission(ctx, "apigw_lambda", &lambda.PermissionArgs{
   190  //				StatementId: pulumi.String("AllowExecutionFromAPIGateway"),
   191  //				Action:      pulumi.String("lambda:InvokeFunction"),
   192  //				Function:    lambda.Name,
   193  //				Principal:   pulumi.String("apigateway.amazonaws.com"),
   194  //				SourceArn: pulumi.All(api.ID(), method.HttpMethod, resource.Path).ApplyT(func(_args []interface{}) (string, error) {
   195  //					id := _args[0].(string)
   196  //					httpMethod := _args[1].(string)
   197  //					path := _args[2].(string)
   198  //					return fmt.Sprintf("arn:aws:execute-api:%v:%v:%v/*/%v%v", myregion, accountId, id, httpMethod, path), nil
   199  //				}).(pulumi.StringOutput),
   200  //			})
   201  //			if err != nil {
   202  //				return err
   203  //			}
   204  //			return nil
   205  //		})
   206  //	}
   207  //
   208  // ```
   209  // <!--End PulumiCodeChooser -->
   210  //
   211  // ## VPC Link
   212  //
   213  // <!--Start PulumiCodeChooser -->
   214  // ```go
   215  // package main
   216  //
   217  // import (
   218  //
   219  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway"
   220  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb"
   221  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   222  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
   223  //
   224  // )
   225  //
   226  //	func main() {
   227  //		pulumi.Run(func(ctx *pulumi.Context) error {
   228  //			cfg := config.New(ctx, "")
   229  //			name := cfg.RequireObject("name")
   230  //			subnetId := cfg.RequireObject("subnetId")
   231  //			test, err := lb.NewLoadBalancer(ctx, "test", &lb.LoadBalancerArgs{
   232  //				Name:             pulumi.Any(name),
   233  //				Internal:         pulumi.Bool(true),
   234  //				LoadBalancerType: pulumi.String("network"),
   235  //				Subnets: pulumi.StringArray{
   236  //					subnetId,
   237  //				},
   238  //			})
   239  //			if err != nil {
   240  //				return err
   241  //			}
   242  //			testVpcLink, err := apigateway.NewVpcLink(ctx, "test", &apigateway.VpcLinkArgs{
   243  //				Name:      pulumi.Any(name),
   244  //				TargetArn: test.Arn,
   245  //			})
   246  //			if err != nil {
   247  //				return err
   248  //			}
   249  //			testRestApi, err := apigateway.NewRestApi(ctx, "test", &apigateway.RestApiArgs{
   250  //				Name: pulumi.Any(name),
   251  //			})
   252  //			if err != nil {
   253  //				return err
   254  //			}
   255  //			testResource, err := apigateway.NewResource(ctx, "test", &apigateway.ResourceArgs{
   256  //				RestApi:  testRestApi.ID(),
   257  //				ParentId: testRestApi.RootResourceId,
   258  //				PathPart: pulumi.String("test"),
   259  //			})
   260  //			if err != nil {
   261  //				return err
   262  //			}
   263  //			testMethod, err := apigateway.NewMethod(ctx, "test", &apigateway.MethodArgs{
   264  //				RestApi:       testRestApi.ID(),
   265  //				ResourceId:    testResource.ID(),
   266  //				HttpMethod:    pulumi.String("GET"),
   267  //				Authorization: pulumi.String("NONE"),
   268  //				RequestModels: pulumi.StringMap{
   269  //					"application/json": pulumi.String("Error"),
   270  //				},
   271  //			})
   272  //			if err != nil {
   273  //				return err
   274  //			}
   275  //			_, err = apigateway.NewIntegration(ctx, "test", &apigateway.IntegrationArgs{
   276  //				RestApi:    testRestApi.ID(),
   277  //				ResourceId: testResource.ID(),
   278  //				HttpMethod: testMethod.HttpMethod,
   279  //				RequestTemplates: pulumi.StringMap{
   280  //					"application/json": pulumi.String(""),
   281  //					"application/xml":  pulumi.String("#set($inputRoot = $input.path('$'))\n{ }"),
   282  //				},
   283  //				RequestParameters: pulumi.StringMap{
   284  //					"integration.request.header.X-Authorization": pulumi.String("'static'"),
   285  //					"integration.request.header.X-Foo":           pulumi.String("'Bar'"),
   286  //				},
   287  //				Type:                  pulumi.String("HTTP"),
   288  //				Uri:                   pulumi.String("https://www.google.de"),
   289  //				IntegrationHttpMethod: pulumi.String("GET"),
   290  //				PassthroughBehavior:   pulumi.String("WHEN_NO_MATCH"),
   291  //				ContentHandling:       pulumi.String("CONVERT_TO_TEXT"),
   292  //				ConnectionType:        pulumi.String("VPC_LINK"),
   293  //				ConnectionId:          testVpcLink.ID(),
   294  //			})
   295  //			if err != nil {
   296  //				return err
   297  //			}
   298  //			return nil
   299  //		})
   300  //	}
   301  //
   302  // ```
   303  // <!--End PulumiCodeChooser -->
   304  //
   305  // ## Import
   306  //
   307  // Using `pulumi import`, import `aws_api_gateway_integration` using `REST-API-ID/RESOURCE-ID/HTTP-METHOD`. For example:
   308  //
   309  // ```sh
   310  // $ pulumi import aws:apigateway/integration:Integration example 12345abcde/67890fghij/GET
   311  // ```
   312  type Integration struct {
   313  	pulumi.CustomResourceState
   314  
   315  	// List of cache key parameters for the integration.
   316  	CacheKeyParameters pulumi.StringArrayOutput `pulumi:"cacheKeyParameters"`
   317  	// Integration's cache namespace.
   318  	CacheNamespace pulumi.StringOutput `pulumi:"cacheNamespace"`
   319  	// ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   320  	ConnectionId pulumi.StringPtrOutput `pulumi:"connectionId"`
   321  	// Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   322  	ConnectionType pulumi.StringPtrOutput `pulumi:"connectionType"`
   323  	// How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   324  	ContentHandling pulumi.StringPtrOutput `pulumi:"contentHandling"`
   325  	// Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   326  	Credentials pulumi.StringPtrOutput `pulumi:"credentials"`
   327  	// HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   328  	// when calling the associated resource.
   329  	HttpMethod pulumi.StringOutput `pulumi:"httpMethod"`
   330  	// Integration HTTP method
   331  	// (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   332  	// **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   333  	// Not all methods are compatible with all `AWS` integrations.
   334  	// e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   335  	IntegrationHttpMethod pulumi.StringPtrOutput `pulumi:"integrationHttpMethod"`
   336  	// Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   337  	PassthroughBehavior pulumi.StringOutput `pulumi:"passthroughBehavior"`
   338  	// Map of request query string parameters and headers that should be passed to the backend responder.
   339  	// For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   340  	RequestParameters pulumi.StringMapOutput `pulumi:"requestParameters"`
   341  	// Map of the integration's request templates.
   342  	RequestTemplates pulumi.StringMapOutput `pulumi:"requestTemplates"`
   343  	// API resource ID.
   344  	ResourceId pulumi.StringOutput `pulumi:"resourceId"`
   345  	// ID of the associated REST API.
   346  	RestApi pulumi.StringOutput `pulumi:"restApi"`
   347  	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   348  	TimeoutMilliseconds pulumi.IntPtrOutput `pulumi:"timeoutMilliseconds"`
   349  	// TLS configuration. See below.
   350  	TlsConfig IntegrationTlsConfigPtrOutput `pulumi:"tlsConfig"`
   351  	// Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   352  	Type pulumi.StringOutput `pulumi:"type"`
   353  	// Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   354  	// For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   355  	// e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   356  	Uri pulumi.StringPtrOutput `pulumi:"uri"`
   357  }
   358  
   359  // NewIntegration registers a new resource with the given unique name, arguments, and options.
   360  func NewIntegration(ctx *pulumi.Context,
   361  	name string, args *IntegrationArgs, opts ...pulumi.ResourceOption) (*Integration, error) {
   362  	if args == nil {
   363  		return nil, errors.New("missing one or more required arguments")
   364  	}
   365  
   366  	if args.HttpMethod == nil {
   367  		return nil, errors.New("invalid value for required argument 'HttpMethod'")
   368  	}
   369  	if args.ResourceId == nil {
   370  		return nil, errors.New("invalid value for required argument 'ResourceId'")
   371  	}
   372  	if args.RestApi == nil {
   373  		return nil, errors.New("invalid value for required argument 'RestApi'")
   374  	}
   375  	if args.Type == nil {
   376  		return nil, errors.New("invalid value for required argument 'Type'")
   377  	}
   378  	opts = internal.PkgResourceDefaultOpts(opts)
   379  	var resource Integration
   380  	err := ctx.RegisterResource("aws:apigateway/integration:Integration", name, args, &resource, opts...)
   381  	if err != nil {
   382  		return nil, err
   383  	}
   384  	return &resource, nil
   385  }
   386  
   387  // GetIntegration gets an existing Integration resource's state with the given name, ID, and optional
   388  // state properties that are used to uniquely qualify the lookup (nil if not required).
   389  func GetIntegration(ctx *pulumi.Context,
   390  	name string, id pulumi.IDInput, state *IntegrationState, opts ...pulumi.ResourceOption) (*Integration, error) {
   391  	var resource Integration
   392  	err := ctx.ReadResource("aws:apigateway/integration:Integration", name, id, state, &resource, opts...)
   393  	if err != nil {
   394  		return nil, err
   395  	}
   396  	return &resource, nil
   397  }
   398  
   399  // Input properties used for looking up and filtering Integration resources.
   400  type integrationState struct {
   401  	// List of cache key parameters for the integration.
   402  	CacheKeyParameters []string `pulumi:"cacheKeyParameters"`
   403  	// Integration's cache namespace.
   404  	CacheNamespace *string `pulumi:"cacheNamespace"`
   405  	// ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   406  	ConnectionId *string `pulumi:"connectionId"`
   407  	// Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   408  	ConnectionType *string `pulumi:"connectionType"`
   409  	// How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   410  	ContentHandling *string `pulumi:"contentHandling"`
   411  	// Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   412  	Credentials *string `pulumi:"credentials"`
   413  	// HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   414  	// when calling the associated resource.
   415  	HttpMethod *string `pulumi:"httpMethod"`
   416  	// Integration HTTP method
   417  	// (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   418  	// **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   419  	// Not all methods are compatible with all `AWS` integrations.
   420  	// e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   421  	IntegrationHttpMethod *string `pulumi:"integrationHttpMethod"`
   422  	// Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   423  	PassthroughBehavior *string `pulumi:"passthroughBehavior"`
   424  	// Map of request query string parameters and headers that should be passed to the backend responder.
   425  	// For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   426  	RequestParameters map[string]string `pulumi:"requestParameters"`
   427  	// Map of the integration's request templates.
   428  	RequestTemplates map[string]string `pulumi:"requestTemplates"`
   429  	// API resource ID.
   430  	ResourceId *string `pulumi:"resourceId"`
   431  	// ID of the associated REST API.
   432  	RestApi interface{} `pulumi:"restApi"`
   433  	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   434  	TimeoutMilliseconds *int `pulumi:"timeoutMilliseconds"`
   435  	// TLS configuration. See below.
   436  	TlsConfig *IntegrationTlsConfig `pulumi:"tlsConfig"`
   437  	// Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   438  	Type *string `pulumi:"type"`
   439  	// Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   440  	// For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   441  	// e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   442  	Uri *string `pulumi:"uri"`
   443  }
   444  
   445  type IntegrationState struct {
   446  	// List of cache key parameters for the integration.
   447  	CacheKeyParameters pulumi.StringArrayInput
   448  	// Integration's cache namespace.
   449  	CacheNamespace pulumi.StringPtrInput
   450  	// ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   451  	ConnectionId pulumi.StringPtrInput
   452  	// Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   453  	ConnectionType pulumi.StringPtrInput
   454  	// How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   455  	ContentHandling pulumi.StringPtrInput
   456  	// Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   457  	Credentials pulumi.StringPtrInput
   458  	// HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   459  	// when calling the associated resource.
   460  	HttpMethod pulumi.StringPtrInput
   461  	// Integration HTTP method
   462  	// (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   463  	// **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   464  	// Not all methods are compatible with all `AWS` integrations.
   465  	// e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   466  	IntegrationHttpMethod pulumi.StringPtrInput
   467  	// Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   468  	PassthroughBehavior pulumi.StringPtrInput
   469  	// Map of request query string parameters and headers that should be passed to the backend responder.
   470  	// For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   471  	RequestParameters pulumi.StringMapInput
   472  	// Map of the integration's request templates.
   473  	RequestTemplates pulumi.StringMapInput
   474  	// API resource ID.
   475  	ResourceId pulumi.StringPtrInput
   476  	// ID of the associated REST API.
   477  	RestApi pulumi.Input
   478  	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   479  	TimeoutMilliseconds pulumi.IntPtrInput
   480  	// TLS configuration. See below.
   481  	TlsConfig IntegrationTlsConfigPtrInput
   482  	// Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   483  	Type pulumi.StringPtrInput
   484  	// Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   485  	// For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   486  	// e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   487  	Uri pulumi.StringPtrInput
   488  }
   489  
   490  func (IntegrationState) ElementType() reflect.Type {
   491  	return reflect.TypeOf((*integrationState)(nil)).Elem()
   492  }
   493  
   494  type integrationArgs struct {
   495  	// List of cache key parameters for the integration.
   496  	CacheKeyParameters []string `pulumi:"cacheKeyParameters"`
   497  	// Integration's cache namespace.
   498  	CacheNamespace *string `pulumi:"cacheNamespace"`
   499  	// ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   500  	ConnectionId *string `pulumi:"connectionId"`
   501  	// Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   502  	ConnectionType *string `pulumi:"connectionType"`
   503  	// How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   504  	ContentHandling *string `pulumi:"contentHandling"`
   505  	// Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   506  	Credentials *string `pulumi:"credentials"`
   507  	// HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   508  	// when calling the associated resource.
   509  	HttpMethod string `pulumi:"httpMethod"`
   510  	// Integration HTTP method
   511  	// (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   512  	// **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   513  	// Not all methods are compatible with all `AWS` integrations.
   514  	// e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   515  	IntegrationHttpMethod *string `pulumi:"integrationHttpMethod"`
   516  	// Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   517  	PassthroughBehavior *string `pulumi:"passthroughBehavior"`
   518  	// Map of request query string parameters and headers that should be passed to the backend responder.
   519  	// For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   520  	RequestParameters map[string]string `pulumi:"requestParameters"`
   521  	// Map of the integration's request templates.
   522  	RequestTemplates map[string]string `pulumi:"requestTemplates"`
   523  	// API resource ID.
   524  	ResourceId string `pulumi:"resourceId"`
   525  	// ID of the associated REST API.
   526  	RestApi interface{} `pulumi:"restApi"`
   527  	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   528  	TimeoutMilliseconds *int `pulumi:"timeoutMilliseconds"`
   529  	// TLS configuration. See below.
   530  	TlsConfig *IntegrationTlsConfig `pulumi:"tlsConfig"`
   531  	// Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   532  	Type string `pulumi:"type"`
   533  	// Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   534  	// For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   535  	// e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   536  	Uri *string `pulumi:"uri"`
   537  }
   538  
   539  // The set of arguments for constructing a Integration resource.
   540  type IntegrationArgs struct {
   541  	// List of cache key parameters for the integration.
   542  	CacheKeyParameters pulumi.StringArrayInput
   543  	// Integration's cache namespace.
   544  	CacheNamespace pulumi.StringPtrInput
   545  	// ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   546  	ConnectionId pulumi.StringPtrInput
   547  	// Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   548  	ConnectionType pulumi.StringPtrInput
   549  	// How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   550  	ContentHandling pulumi.StringPtrInput
   551  	// Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   552  	Credentials pulumi.StringPtrInput
   553  	// HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   554  	// when calling the associated resource.
   555  	HttpMethod pulumi.StringInput
   556  	// Integration HTTP method
   557  	// (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   558  	// **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   559  	// Not all methods are compatible with all `AWS` integrations.
   560  	// e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   561  	IntegrationHttpMethod pulumi.StringPtrInput
   562  	// Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   563  	PassthroughBehavior pulumi.StringPtrInput
   564  	// Map of request query string parameters and headers that should be passed to the backend responder.
   565  	// For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   566  	RequestParameters pulumi.StringMapInput
   567  	// Map of the integration's request templates.
   568  	RequestTemplates pulumi.StringMapInput
   569  	// API resource ID.
   570  	ResourceId pulumi.StringInput
   571  	// ID of the associated REST API.
   572  	RestApi pulumi.Input
   573  	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   574  	TimeoutMilliseconds pulumi.IntPtrInput
   575  	// TLS configuration. See below.
   576  	TlsConfig IntegrationTlsConfigPtrInput
   577  	// Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   578  	Type pulumi.StringInput
   579  	// Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   580  	// For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   581  	// e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   582  	Uri pulumi.StringPtrInput
   583  }
   584  
   585  func (IntegrationArgs) ElementType() reflect.Type {
   586  	return reflect.TypeOf((*integrationArgs)(nil)).Elem()
   587  }
   588  
   589  type IntegrationInput interface {
   590  	pulumi.Input
   591  
   592  	ToIntegrationOutput() IntegrationOutput
   593  	ToIntegrationOutputWithContext(ctx context.Context) IntegrationOutput
   594  }
   595  
   596  func (*Integration) ElementType() reflect.Type {
   597  	return reflect.TypeOf((**Integration)(nil)).Elem()
   598  }
   599  
   600  func (i *Integration) ToIntegrationOutput() IntegrationOutput {
   601  	return i.ToIntegrationOutputWithContext(context.Background())
   602  }
   603  
   604  func (i *Integration) ToIntegrationOutputWithContext(ctx context.Context) IntegrationOutput {
   605  	return pulumi.ToOutputWithContext(ctx, i).(IntegrationOutput)
   606  }
   607  
   608  // IntegrationArrayInput is an input type that accepts IntegrationArray and IntegrationArrayOutput values.
   609  // You can construct a concrete instance of `IntegrationArrayInput` via:
   610  //
   611  //	IntegrationArray{ IntegrationArgs{...} }
   612  type IntegrationArrayInput interface {
   613  	pulumi.Input
   614  
   615  	ToIntegrationArrayOutput() IntegrationArrayOutput
   616  	ToIntegrationArrayOutputWithContext(context.Context) IntegrationArrayOutput
   617  }
   618  
   619  type IntegrationArray []IntegrationInput
   620  
   621  func (IntegrationArray) ElementType() reflect.Type {
   622  	return reflect.TypeOf((*[]*Integration)(nil)).Elem()
   623  }
   624  
   625  func (i IntegrationArray) ToIntegrationArrayOutput() IntegrationArrayOutput {
   626  	return i.ToIntegrationArrayOutputWithContext(context.Background())
   627  }
   628  
   629  func (i IntegrationArray) ToIntegrationArrayOutputWithContext(ctx context.Context) IntegrationArrayOutput {
   630  	return pulumi.ToOutputWithContext(ctx, i).(IntegrationArrayOutput)
   631  }
   632  
   633  // IntegrationMapInput is an input type that accepts IntegrationMap and IntegrationMapOutput values.
   634  // You can construct a concrete instance of `IntegrationMapInput` via:
   635  //
   636  //	IntegrationMap{ "key": IntegrationArgs{...} }
   637  type IntegrationMapInput interface {
   638  	pulumi.Input
   639  
   640  	ToIntegrationMapOutput() IntegrationMapOutput
   641  	ToIntegrationMapOutputWithContext(context.Context) IntegrationMapOutput
   642  }
   643  
   644  type IntegrationMap map[string]IntegrationInput
   645  
   646  func (IntegrationMap) ElementType() reflect.Type {
   647  	return reflect.TypeOf((*map[string]*Integration)(nil)).Elem()
   648  }
   649  
   650  func (i IntegrationMap) ToIntegrationMapOutput() IntegrationMapOutput {
   651  	return i.ToIntegrationMapOutputWithContext(context.Background())
   652  }
   653  
   654  func (i IntegrationMap) ToIntegrationMapOutputWithContext(ctx context.Context) IntegrationMapOutput {
   655  	return pulumi.ToOutputWithContext(ctx, i).(IntegrationMapOutput)
   656  }
   657  
   658  type IntegrationOutput struct{ *pulumi.OutputState }
   659  
   660  func (IntegrationOutput) ElementType() reflect.Type {
   661  	return reflect.TypeOf((**Integration)(nil)).Elem()
   662  }
   663  
   664  func (o IntegrationOutput) ToIntegrationOutput() IntegrationOutput {
   665  	return o
   666  }
   667  
   668  func (o IntegrationOutput) ToIntegrationOutputWithContext(ctx context.Context) IntegrationOutput {
   669  	return o
   670  }
   671  
   672  // List of cache key parameters for the integration.
   673  func (o IntegrationOutput) CacheKeyParameters() pulumi.StringArrayOutput {
   674  	return o.ApplyT(func(v *Integration) pulumi.StringArrayOutput { return v.CacheKeyParameters }).(pulumi.StringArrayOutput)
   675  }
   676  
   677  // Integration's cache namespace.
   678  func (o IntegrationOutput) CacheNamespace() pulumi.StringOutput {
   679  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.CacheNamespace }).(pulumi.StringOutput)
   680  }
   681  
   682  // ID of the VpcLink used for the integration. **Required** if `connectionType` is `VPC_LINK`
   683  func (o IntegrationOutput) ConnectionId() pulumi.StringPtrOutput {
   684  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.ConnectionId }).(pulumi.StringPtrOutput)
   685  }
   686  
   687  // Integration input's [connectionType](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#connectionType). Valid values are `INTERNET` (default for connections through the public routable internet), and `VPC_LINK` (for private connections between API Gateway and a network load balancer in a VPC).
   688  func (o IntegrationOutput) ConnectionType() pulumi.StringPtrOutput {
   689  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.ConnectionType }).(pulumi.StringPtrOutput)
   690  }
   691  
   692  // How to handle request payload content type conversions. Supported values are `CONVERT_TO_BINARY` and `CONVERT_TO_TEXT`. If this property is not defined, the request payload will be passed through from the method request to integration request without modification, provided that the passthroughBehaviors is configured to support payload pass-through.
   693  func (o IntegrationOutput) ContentHandling() pulumi.StringPtrOutput {
   694  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.ContentHandling }).(pulumi.StringPtrOutput)
   695  }
   696  
   697  // Credentials required for the integration. For `AWS` integrations, 2 options are available. To specify an IAM Role for Amazon API Gateway to assume, use the role's ARN. To require that the caller's identity be passed through from the request, specify the string `arn:aws:iam::\*:user/\*`.
   698  func (o IntegrationOutput) Credentials() pulumi.StringPtrOutput {
   699  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.Credentials }).(pulumi.StringPtrOutput)
   700  }
   701  
   702  // HTTP method (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTION`, `ANY`)
   703  // when calling the associated resource.
   704  func (o IntegrationOutput) HttpMethod() pulumi.StringOutput {
   705  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.HttpMethod }).(pulumi.StringOutput)
   706  }
   707  
   708  // Integration HTTP method
   709  // (`GET`, `POST`, `PUT`, `DELETE`, `HEAD`, `OPTIONs`, `ANY`, `PATCH`) specifying how API Gateway will interact with the back end.
   710  // **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   711  // Not all methods are compatible with all `AWS` integrations.
   712  // e.g., Lambda function [can only be invoked](https://github.com/awslabs/aws-apigateway-importer/issues/9#issuecomment-129651005) via `POST`.
   713  func (o IntegrationOutput) IntegrationHttpMethod() pulumi.StringPtrOutput {
   714  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.IntegrationHttpMethod }).(pulumi.StringPtrOutput)
   715  }
   716  
   717  // Integration passthrough behavior (`WHEN_NO_MATCH`, `WHEN_NO_TEMPLATES`, `NEVER`).  **Required** if `requestTemplates` is used.
   718  func (o IntegrationOutput) PassthroughBehavior() pulumi.StringOutput {
   719  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.PassthroughBehavior }).(pulumi.StringOutput)
   720  }
   721  
   722  // Map of request query string parameters and headers that should be passed to the backend responder.
   723  // For example: `requestParameters = { "integration.request.header.X-Some-Other-Header" = "method.request.header.X-Some-Header" }`
   724  func (o IntegrationOutput) RequestParameters() pulumi.StringMapOutput {
   725  	return o.ApplyT(func(v *Integration) pulumi.StringMapOutput { return v.RequestParameters }).(pulumi.StringMapOutput)
   726  }
   727  
   728  // Map of the integration's request templates.
   729  func (o IntegrationOutput) RequestTemplates() pulumi.StringMapOutput {
   730  	return o.ApplyT(func(v *Integration) pulumi.StringMapOutput { return v.RequestTemplates }).(pulumi.StringMapOutput)
   731  }
   732  
   733  // API resource ID.
   734  func (o IntegrationOutput) ResourceId() pulumi.StringOutput {
   735  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.ResourceId }).(pulumi.StringOutput)
   736  }
   737  
   738  // ID of the associated REST API.
   739  func (o IntegrationOutput) RestApi() pulumi.StringOutput {
   740  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.RestApi }).(pulumi.StringOutput)
   741  }
   742  
   743  // Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000 milliseconds.
   744  func (o IntegrationOutput) TimeoutMilliseconds() pulumi.IntPtrOutput {
   745  	return o.ApplyT(func(v *Integration) pulumi.IntPtrOutput { return v.TimeoutMilliseconds }).(pulumi.IntPtrOutput)
   746  }
   747  
   748  // TLS configuration. See below.
   749  func (o IntegrationOutput) TlsConfig() IntegrationTlsConfigPtrOutput {
   750  	return o.ApplyT(func(v *Integration) IntegrationTlsConfigPtrOutput { return v.TlsConfig }).(IntegrationTlsConfigPtrOutput)
   751  }
   752  
   753  // Integration input's [type](https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/). Valid values are `HTTP` (for HTTP backends), `MOCK` (not calling any real backend), `AWS` (for AWS services), `AWS_PROXY` (for Lambda proxy integration) and `HTTP_PROXY` (for HTTP proxy integration). An `HTTP` or `HTTP_PROXY` integration with a `connectionType` of `VPC_LINK` is referred to as a private integration and uses a VpcLink to connect API Gateway to a network load balancer of a VPC.
   754  func (o IntegrationOutput) Type() pulumi.StringOutput {
   755  	return o.ApplyT(func(v *Integration) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   756  }
   757  
   758  // Input's URI. **Required** if `type` is `AWS`, `AWS_PROXY`, `HTTP` or `HTTP_PROXY`.
   759  // For HTTP integrations, the URI must be a fully formed, encoded HTTP(S) URL according to the RFC-3986 specification . For AWS integrations, the URI should be of the form `arn:aws:apigateway:{region}:{subdomain.service|service}:{path|action}/{service_api}`. `region`, `subdomain` and `service` are used to determine the right endpoint.
   760  // e.g., `arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:012345678901:function:my-func/invocations`. For private integrations, the URI parameter is not used for routing requests to your endpoint, but is used for setting the Host header and for certificate validation.
   761  func (o IntegrationOutput) Uri() pulumi.StringPtrOutput {
   762  	return o.ApplyT(func(v *Integration) pulumi.StringPtrOutput { return v.Uri }).(pulumi.StringPtrOutput)
   763  }
   764  
   765  type IntegrationArrayOutput struct{ *pulumi.OutputState }
   766  
   767  func (IntegrationArrayOutput) ElementType() reflect.Type {
   768  	return reflect.TypeOf((*[]*Integration)(nil)).Elem()
   769  }
   770  
   771  func (o IntegrationArrayOutput) ToIntegrationArrayOutput() IntegrationArrayOutput {
   772  	return o
   773  }
   774  
   775  func (o IntegrationArrayOutput) ToIntegrationArrayOutputWithContext(ctx context.Context) IntegrationArrayOutput {
   776  	return o
   777  }
   778  
   779  func (o IntegrationArrayOutput) Index(i pulumi.IntInput) IntegrationOutput {
   780  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Integration {
   781  		return vs[0].([]*Integration)[vs[1].(int)]
   782  	}).(IntegrationOutput)
   783  }
   784  
   785  type IntegrationMapOutput struct{ *pulumi.OutputState }
   786  
   787  func (IntegrationMapOutput) ElementType() reflect.Type {
   788  	return reflect.TypeOf((*map[string]*Integration)(nil)).Elem()
   789  }
   790  
   791  func (o IntegrationMapOutput) ToIntegrationMapOutput() IntegrationMapOutput {
   792  	return o
   793  }
   794  
   795  func (o IntegrationMapOutput) ToIntegrationMapOutputWithContext(ctx context.Context) IntegrationMapOutput {
   796  	return o
   797  }
   798  
   799  func (o IntegrationMapOutput) MapIndex(k pulumi.StringInput) IntegrationOutput {
   800  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Integration {
   801  		return vs[0].(map[string]*Integration)[vs[1].(string)]
   802  	}).(IntegrationOutput)
   803  }
   804  
   805  func init() {
   806  	pulumi.RegisterInputType(reflect.TypeOf((*IntegrationInput)(nil)).Elem(), &Integration{})
   807  	pulumi.RegisterInputType(reflect.TypeOf((*IntegrationArrayInput)(nil)).Elem(), IntegrationArray{})
   808  	pulumi.RegisterInputType(reflect.TypeOf((*IntegrationMapInput)(nil)).Elem(), IntegrationMap{})
   809  	pulumi.RegisterOutputType(IntegrationOutput{})
   810  	pulumi.RegisterOutputType(IntegrationArrayOutput{})
   811  	pulumi.RegisterOutputType(IntegrationMapOutput{})
   812  }