1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package types
4
5import (
6	"time"
7)
8
9// Access log settings, including the access log format and access log destination
10// ARN.
11type AccessLogSettings struct {
12
13	// The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data
14	// Firehose delivery stream to receive access logs. If you specify a Kinesis Data
15	// Firehose delivery stream, the stream name must begin with amazon-apigateway-.
16	DestinationArn *string
17
18	// A single line format of the access logs of data, as specified by selected
19	// $context variables
20	// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference).
21	// The format must include at least $context.requestId.
22	Format *string
23}
24
25// A resource that can be distributed to callers for executing Method resources
26// that require an API key. API keys can be mapped to any Stage on any RestApi,
27// which indicates that the callers with the API key can make requests to that
28// stage. Use API Keys
29// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-api-keys.html)
30type ApiKey struct {
31
32	// The timestamp when the API Key was created.
33	CreatedDate *time.Time
34
35	// An AWS Marketplace customer identifier , when integrating with the AWS SaaS
36	// Marketplace.
37	CustomerId *string
38
39	// The description of the API Key.
40	Description *string
41
42	// Specifies whether the API Key can be used by callers.
43	Enabled bool
44
45	// The identifier of the API Key.
46	Id *string
47
48	// The timestamp when the API Key was last updated.
49	LastUpdatedDate *time.Time
50
51	// The name of the API Key.
52	Name *string
53
54	// A list of Stage resources that are associated with the ApiKey resource.
55	StageKeys []string
56
57	// The collection of tags. Each tag element is associated with a given resource.
58	Tags map[string]string
59
60	// The value of the API Key.
61	Value *string
62}
63
64// API stage name of the associated API stage in a usage plan.
65type ApiStage struct {
66
67	// API Id of the associated API stage in a usage plan.
68	ApiId *string
69
70	// API stage name of the associated API stage in a usage plan.
71	Stage *string
72
73	// Map containing method level throttling information for API stage in a usage
74	// plan.
75	Throttle map[string]ThrottleSettings
76}
77
78// Represents an authorization layer for methods. If enabled on a method, API
79// Gateway will activate the authorizer when a client calls the method. Use Lambda
80// Function as Authorizer
81// (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html)Use
82// Cognito User Pool as Authorizer
83// (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html)
84type Authorizer struct {
85
86	// Optional customer-defined field, used in OpenAPI imports and exports without
87	// functional impact.
88	AuthType *string
89
90	// Specifies the required credentials as an IAM role for API Gateway to invoke the
91	// authorizer. To specify an IAM role for API Gateway to assume, use the role's
92	// Amazon Resource Name (ARN). To use resource-based permissions on the Lambda
93	// function, specify null.
94	AuthorizerCredentials *string
95
96	// The TTL in seconds of cached authorizer results. If it equals 0, authorization
97	// caching is disabled. If it is greater than 0, API Gateway will cache authorizer
98	// responses. If this field is not set, the default value is 300. The maximum value
99	// is 3600, or 1 hour.
100	AuthorizerResultTtlInSeconds *int32
101
102	// Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN or
103	// REQUEST authorizers, this must be a well-formed Lambda function URI, for
104	// example,
105	// arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:{account_id}:function:{lambda_function_name}/invocations.
106	// In general, the URI has this form
107	// arn:aws:apigateway:{region}:lambda:path/{service_api}, where {region} is the
108	// same as the region hosting the Lambda function, path indicates that the
109	// remaining substring in the URI should be treated as the path to the resource,
110	// including the initial /. For Lambda functions, this is usually of the form
111	// /2015-03-31/functions/[FunctionARN]/invocations.
112	AuthorizerUri *string
113
114	// The identifier for the authorizer resource.
115	Id *string
116
117	// The identity source for which authorization is requested.
118	//
119	// * For a TOKEN or
120	// COGNITO_USER_POOLS authorizer, this is required and specifies the request header
121	// mapping expression for the custom header holding the authorization token
122	// submitted by the client. For example, if the token header name is Auth, the
123	// header mapping expression is method.request.header.Auth.
124	//
125	// * For the REQUEST
126	// authorizer, this is required when authorization caching is enabled. The value is
127	// a comma-separated string of one or more mapping expressions of the specified
128	// request parameters. For example, if an Auth header, a Name query string
129	// parameter are defined as identity sources, this value is
130	// method.request.header.Auth, method.request.querystring.Name. These parameters
131	// will be used to derive the authorization caching key and to perform runtime
132	// validation of the REQUEST authorizer by verifying all of the identity-related
133	// request parameters are present, not null and non-empty. Only when this is true
134	// does the authorizer invoke the authorizer Lambda function, otherwise, it returns
135	// a 401 Unauthorized response without calling the Lambda function. The valid value
136	// is a string of comma-separated mapping expressions of the specified request
137	// parameters. When the authorization caching is not enabled, this property is
138	// optional.
139	IdentitySource *string
140
141	// A validation expression for the incoming identity token. For TOKEN authorizers,
142	// this value is a regular expression. For COGNITO_USER_POOLS authorizers, API
143	// Gateway will match the aud field of the incoming token from the client against
144	// the specified regular expression. It will invoke the authorizer's Lambda
145	// function when there is a match. Otherwise, it will return a 401 Unauthorized
146	// response without calling the Lambda function. The validation expression does not
147	// apply to the REQUEST authorizer.
148	IdentityValidationExpression *string
149
150	// [Required] The name of the authorizer.
151	Name *string
152
153	// A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS
154	// authorizer. Each element is of this format:
155	// arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id}. For a TOKEN
156	// or REQUEST authorizer, this is not defined.
157	ProviderARNs []string
158
159	// The authorizer type. Valid values are TOKEN for a Lambda function using a single
160	// authorization token submitted in a custom header, REQUEST for a Lambda function
161	// using incoming request parameters, and COGNITO_USER_POOLS for using an Amazon
162	// Cognito user pool.
163	Type AuthorizerType
164}
165
166// Represents the base path that callers of the API must provide as part of the URL
167// after the domain name. A custom domain name plus a BasePathMapping specification
168// identifies a deployed RestApi in a given stage of the owner Account. Use Custom
169// Domain Names
170// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html)
171type BasePathMapping struct {
172
173	// The base path name that callers of the API must provide as part of the URL after
174	// the domain name.
175	BasePath *string
176
177	// The string identifier of the associated RestApi.
178	RestApiId *string
179
180	// The name of the associated stage.
181	Stage *string
182}
183
184// Configuration settings of a canary deployment.
185type CanarySettings struct {
186
187	// The ID of the canary deployment.
188	DeploymentId *string
189
190	// The percent (0-100) of traffic diverted to a canary deployment.
191	PercentTraffic float64
192
193	// Stage variables overridden for a canary release deployment, including new stage
194	// variables introduced in the canary. These stage variables are represented as a
195	// string-to-string map between stage variable names and their values.
196	StageVariableOverrides map[string]string
197
198	// A Boolean flag to indicate whether the canary deployment uses the stage cache or
199	// not.
200	UseStageCache bool
201}
202
203// Represents a client certificate used to configure client-side SSL authentication
204// while sending requests to the integration endpoint. Client certificates are used
205// to authenticate an API by the backend server. To authenticate an API client (or
206// user), use IAM roles and policies, a custom Authorizer or an Amazon Cognito user
207// pool. Use Client-Side Certificate
208// (https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-client-side-ssl-authentication.html)
209type ClientCertificate struct {
210
211	// The identifier of the client certificate.
212	ClientCertificateId *string
213
214	// The timestamp when the client certificate was created.
215	CreatedDate *time.Time
216
217	// The description of the client certificate.
218	Description *string
219
220	// The timestamp when the client certificate will expire.
221	ExpirationDate *time.Time
222
223	// The PEM-encoded public key of the client certificate, which can be used to
224	// configure certificate authentication in the integration endpoint .
225	PemEncodedCertificate *string
226
227	// The collection of tags. Each tag element is associated with a given resource.
228	Tags map[string]string
229}
230
231// An immutable representation of a RestApi resource that can be called by users
232// using Stages. A deployment must be associated with a Stage for it to be callable
233// over the Internet. To create a deployment, call POST on the Deployments resource
234// of a RestApi. To view, update, or delete a deployment, call GET, PATCH, or
235// DELETE on the specified deployment resource
236// (/restapis/{restapi_id}/deployments/{deployment_id}). RestApi, Deployments,
237// Stage, AWS CLI
238// (https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-deployment.html),
239// AWS SDKs (https://aws.amazon.com/tools/)
240type Deployment struct {
241
242	// A summary of the RestApi at the date and time that the deployment resource was
243	// created.
244	ApiSummary map[string]map[string]MethodSnapshot
245
246	// The date and time that the deployment resource was created.
247	CreatedDate *time.Time
248
249	// The description for the deployment resource.
250	Description *string
251
252	// The identifier for the deployment resource.
253	Id *string
254}
255
256// The input configuration for a canary deployment.
257type DeploymentCanarySettings struct {
258
259	// The percentage (0.0-100.0) of traffic routed to the canary deployment.
260	PercentTraffic float64
261
262	// A stage variable overrides used for the canary release deployment. They can
263	// override existing stage variables or add new stage variables for the canary
264	// release deployment. These stage variables are represented as a string-to-string
265	// map between stage variable names and their values.
266	StageVariableOverrides map[string]string
267
268	// A Boolean flag to indicate whether the canary release deployment uses the stage
269	// cache or not.
270	UseStageCache bool
271}
272
273// A documentation part for a targeted API entity. A documentation part consists of
274// a content map (properties) and a target (location). The target specifies an API
275// entity to which the documentation content applies. The supported API entity
276// types are API, AUTHORIZER, MODEL, RESOURCE, METHOD, PATH_PARAMETER,
277// QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE, RESPONSE_HEADER, and
278// RESPONSE_BODY. Valid location fields depend on the API entity type. All valid
279// fields are not required. The content map is a JSON string of API-specific
280// key-value pairs. Although an API can use any shape for the content map, only the
281// OpenAPI-compliant documentation fields will be injected into the associated API
282// entity definition in the exported OpenAPI definition file. Documenting an API
283// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html),
284// DocumentationParts
285type DocumentationPart struct {
286
287	// The DocumentationPart identifier, generated by API Gateway when the
288	// DocumentationPart is created.
289	Id *string
290
291	// The location of the API entity to which the documentation applies. Valid fields
292	// depend on the targeted API entity type. All the valid location fields are not
293	// required. If not explicitly specified, a valid location field is treated as a
294	// wildcard and associated documentation content may be inherited by matching
295	// entities, unless overridden.
296	Location *DocumentationPartLocation
297
298	// A content map of API-specific key-value pairs describing the targeted API
299	// entity. The map must be encoded as a JSON string, e.g., "{ \"description\":
300	// \"The API does ...\" }". Only OpenAPI-compliant documentation-related fields
301	// from the properties map are exported and, hence, published as part of the API
302	// entity definitions, while the original documentation parts are exported in a
303	// OpenAPI extension of x-amazon-apigateway-documentation.
304	Properties *string
305}
306
307// Specifies the target API entity to which the documentation applies.
308type DocumentationPartLocation struct {
309
310	// [Required] The type of API entity to which the documentation content applies.
311	// Valid values are API, AUTHORIZER, MODEL, RESOURCE, METHOD, PATH_PARAMETER,
312	// QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE, RESPONSE_HEADER, and
313	// RESPONSE_BODY. Content inheritance does not apply to any entity of the API,
314	// AUTHORIZER, METHOD, MODEL, REQUEST_BODY, or RESOURCE type.
315	//
316	// This member is required.
317	Type DocumentationPartType
318
319	// The HTTP verb of a method. It is a valid field for the API entity types of
320	// METHOD, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY, RESPONSE,
321	// RESPONSE_HEADER, and RESPONSE_BODY. The default value is * for any method. When
322	// an applicable child entity inherits the content of an entity of the same type
323	// with more general specifications of the other location attributes, the child
324	// entity's method attribute must match that of the parent entity exactly.
325	Method *string
326
327	// The name of the targeted API entity. It is a valid and required field for the
328	// API entity types of AUTHORIZER, MODEL, PATH_PARAMETER, QUERY_PARAMETER,
329	// REQUEST_HEADER, REQUEST_BODY and RESPONSE_HEADER. It is an invalid field for any
330	// other entity type.
331	Name *string
332
333	// The URL path of the target. It is a valid field for the API entity types of
334	// RESOURCE, METHOD, PATH_PARAMETER, QUERY_PARAMETER, REQUEST_HEADER, REQUEST_BODY,
335	// RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. The default value is / for the
336	// root resource. When an applicable child entity inherits the content of another
337	// entity of the same type with more general specifications of the other location
338	// attributes, the child entity's path attribute must match that of the parent
339	// entity as a prefix.
340	Path *string
341
342	// The HTTP status code of a response. It is a valid field for the API entity types
343	// of RESPONSE, RESPONSE_HEADER, and RESPONSE_BODY. The default value is * for any
344	// status code. When an applicable child entity inherits the content of an entity
345	// of the same type with more general specifications of the other location
346	// attributes, the child entity's statusCode attribute must match that of the
347	// parent entity exactly.
348	StatusCode *string
349}
350
351// A snapshot of the documentation of an API. Publishing API documentation involves
352// creating a documentation version associated with an API stage and exporting the
353// versioned documentation to an external (e.g., OpenAPI) file. Documenting an API
354// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html),
355// DocumentationPart, DocumentationVersions
356type DocumentationVersion struct {
357
358	// The date when the API documentation snapshot is created.
359	CreatedDate *time.Time
360
361	// The description of the API documentation snapshot.
362	Description *string
363
364	// The version identifier of the API documentation snapshot.
365	Version *string
366}
367
368// Represents a custom domain name as a user-friendly host name of an API
369// (RestApi). When you deploy an API, API Gateway creates a default host name for
370// the API. This default API host name is of the
371// {restapi-id}.execute-api.{region}.amazonaws.com format. With the default host
372// name, you can access the API's root resource with the URL of
373// https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}/. When you set
374// up a custom domain name of apis.example.com for this API, you can then access
375// the same resource using the URL of the https://apis.examples.com/myApi, where
376// myApi is the base path mapping (BasePathMapping) of your API under the custom
377// domain name. Set a Custom Host Name for an API
378// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html)
379type DomainName struct {
380
381	// The reference to an AWS-managed certificate that will be used by edge-optimized
382	// endpoint for this domain name. AWS Certificate Manager is the only supported
383	// source.
384	CertificateArn *string
385
386	// The name of the certificate that will be used by edge-optimized endpoint for
387	// this domain name.
388	CertificateName *string
389
390	// The timestamp when the certificate that was used by edge-optimized endpoint for
391	// this domain name was uploaded.
392	CertificateUploadDate *time.Time
393
394	// The domain name of the Amazon CloudFront distribution associated with this
395	// custom domain name for an edge-optimized endpoint. You set up this association
396	// when adding a DNS record pointing the custom domain name to this distribution
397	// name. For more information about CloudFront distributions, see the Amazon
398	// CloudFront documentation (https://aws.amazon.com/documentation/cloudfront/).
399	DistributionDomainName *string
400
401	// The region-agnostic Amazon Route 53 Hosted Zone ID of the edge-optimized
402	// endpoint. The valid value is Z2FDTNDATAQYW2 for all the regions. For more
403	// information, see Set up a Regional Custom Domain Name
404	// (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-create.html)
405	// and AWS Regions and Endpoints for API Gateway
406	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region).
407	DistributionHostedZoneId *string
408
409	// The custom domain name as an API host name, for example, my-api.example.com.
410	DomainName *string
411
412	// The status of the DomainName migration. The valid values are AVAILABLE and
413	// UPDATING. If the status is UPDATING, the domain cannot be modified further until
414	// the existing operation is complete. If it is AVAILABLE, the domain can be
415	// updated.
416	DomainNameStatus DomainNameStatus
417
418	// An optional text message containing detailed information about status of the
419	// DomainName migration.
420	DomainNameStatusMessage *string
421
422	// The endpoint configuration of this DomainName showing the endpoint types of the
423	// domain name.
424	EndpointConfiguration *EndpointConfiguration
425
426	// The mutual TLS authentication configuration for a custom domain name. If
427	// specified, API Gateway performs two-way authentication between the client and
428	// the server. Clients must present a trusted certificate to access your API.
429	MutualTlsAuthentication *MutualTlsAuthentication
430
431	// The reference to an AWS-managed certificate that will be used for validating the
432	// regional domain name. AWS Certificate Manager is the only supported source.
433	RegionalCertificateArn *string
434
435	// The name of the certificate that will be used for validating the regional domain
436	// name.
437	RegionalCertificateName *string
438
439	// The domain name associated with the regional endpoint for this custom domain
440	// name. You set up this association by adding a DNS record that points the custom
441	// domain name to this regional domain name. The regional domain name is returned
442	// by API Gateway when you create a regional endpoint.
443	RegionalDomainName *string
444
445	// The region-specific Amazon Route 53 Hosted Zone ID of the regional endpoint. For
446	// more information, see Set up a Regional Custom Domain Name
447	// (https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-regional-api-custom-domain-create.html)
448	// and AWS Regions and Endpoints for API Gateway
449	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region).
450	RegionalHostedZoneId *string
451
452	// The Transport Layer Security (TLS) version + cipher suite for this DomainName.
453	// The valid values are TLS_1_0 and TLS_1_2.
454	SecurityPolicy SecurityPolicy
455
456	// The collection of tags. Each tag element is associated with a given resource.
457	Tags map[string]string
458}
459
460// The endpoint configuration to indicate the types of endpoints an API (RestApi)
461// or its custom domain name (DomainName) has.
462type EndpointConfiguration struct {
463
464	// A list of endpoint types of an API (RestApi) or its custom domain name
465	// (DomainName). For an edge-optimized API and its custom domain name, the endpoint
466	// type is "EDGE". For a regional API and its custom domain name, the endpoint type
467	// is REGIONAL. For a private API, the endpoint type is PRIVATE.
468	Types []EndpointType
469
470	// A list of VpcEndpointIds of an API (RestApi) against which to create Route53
471	// ALIASes. It is only supported for PRIVATE endpoint type.
472	VpcEndpointIds []string
473}
474
475// A gateway response of a given response type and status code, with optional
476// response parameters and mapping templates. For more information about valid
477// gateway response types, see Gateway Response Types Supported by API Gateway
478// (https://docs.aws.amazon.com/apigateway/latest/developerguide/supported-gateway-response-types.html)
479// Example:
480// Get a Gateway Response of a given response type
481//
482// Request
483//
484// This example shows how
485// to get a gateway response of the MISSING_AUTHENTICATION_TOKEN type. GET
486// /restapis/o81lxisefl/gatewayresponses/MISSING_AUTHENTICATION_TOKEN HTTP/1.1
487// Host: beta-apigateway.us-east-1.amazonaws.com Content-Type: application/json
488// X-Amz-Date: 20170503T202516Z Authorization: AWS4-HMAC-SHA256
489// Credential={access-key-id}/20170503/us-east-1/apigateway/aws4_request,
490// SignedHeaders=content-type;host;x-amz-date,
491// Signature=1b52460e3159c1a26cff29093855d50ea141c1c5b937528fecaf60f51129697a
492// Cache-Control: no-cache Postman-Token: 3b2a1ce9-c848-2e26-2e2f-9c2caefbed45  The
493// response type is specified as a URL path.
494// Response
495//
496// The successful operation
497// returns the 200 OK status code and a payload similar to the following: {
498// "_links": { "curies": { "href":
499// "http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-gatewayresponse-{rel}.html",
500// "name": "gatewayresponse", "templated": true }, "self": { "href":
501// "/restapis/o81lxisefl/gatewayresponses/MISSING_AUTHENTICATION_TOKEN" },
502// "gatewayresponse:delete": { "href":
503// "/restapis/o81lxisefl/gatewayresponses/MISSING_AUTHENTICATION_TOKEN" },
504// "gatewayresponse:put": { "href":
505// "/restapis/o81lxisefl/gatewayresponses/{response_type}", "templated": true },
506// "gatewayresponse:update": { "href":
507// "/restapis/o81lxisefl/gatewayresponses/MISSING_AUTHENTICATION_TOKEN" } },
508// "defaultResponse": false, "responseParameters": {
509// "gatewayresponse.header.x-request-path": "method.request.path.petId",
510// "gatewayresponse.header.Access-Control-Allow-Origin": "'a.b.c'",
511// "gatewayresponse.header.x-request-query": "method.request.querystring.q",
512// "gatewayresponse.header.x-request-header": "method.request.header.Accept" },
513// "responseTemplates": { "application/json": "{\n \"message\":
514// $context.error.messageString,\n \"type\": \"$context.error.responseType\",\n
515// \"stage\": \"$context.stage\",\n \"resourcePath\": \"$context.resourcePath\",\n
516// \"stageVariables.a\": \"$stageVariables.a\",\n \"statusCode\": \"'404'\"\n}" },
517// "responseType": "MISSING_AUTHENTICATION_TOKEN", "statusCode": "404" }Customize
518// Gateway Responses
519// (https://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html)
520type GatewayResponse struct {
521
522	// A Boolean flag to indicate whether this GatewayResponse is the default gateway
523	// response (true) or not (false). A default gateway response is one generated by
524	// API Gateway without any customization by an API developer.
525	DefaultResponse bool
526
527	// Response parameters (paths, query strings and headers) of the GatewayResponse as
528	// a string-to-string map of key-value pairs.
529	ResponseParameters map[string]string
530
531	// Response templates of the GatewayResponse as a string-to-string map of key-value
532	// pairs.
533	ResponseTemplates map[string]string
534
535	// The response type of the associated GatewayResponse. Valid values are
536	//
537	// *
538	// ACCESS_DENIED
539	//
540	// * API_CONFIGURATION_ERROR
541	//
542	// * AUTHORIZER_FAILURE
543	//
544	// *
545	// AUTHORIZER_CONFIGURATION_ERROR
546	//
547	// * BAD_REQUEST_PARAMETERS
548	//
549	// * BAD_REQUEST_BODY
550	//
551	// *
552	// DEFAULT_4XX
553	//
554	// * DEFAULT_5XX
555	//
556	// * EXPIRED_TOKEN
557	//
558	// * INVALID_SIGNATURE
559	//
560	// *
561	// INTEGRATION_FAILURE
562	//
563	// * INTEGRATION_TIMEOUT
564	//
565	// * INVALID_API_KEY
566	//
567	// *
568	// MISSING_AUTHENTICATION_TOKEN
569	//
570	// * QUOTA_EXCEEDED
571	//
572	// * REQUEST_TOO_LARGE
573	//
574	// *
575	// RESOURCE_NOT_FOUND
576	//
577	// * THROTTLED
578	//
579	// * UNAUTHORIZED
580	//
581	// * UNSUPPORTED_MEDIA_TYPE
582	ResponseType GatewayResponseType
583
584	// The HTTP status code for this GatewayResponse.
585	StatusCode *string
586}
587
588// Represents an HTTP, HTTP_PROXY, AWS, AWS_PROXY, or Mock integration. In the API
589// Gateway console, the built-in Lambda integration is an AWS integration. Creating
590// an API
591// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
592type Integration struct {
593
594	// A list of request parameters whose values API Gateway caches. To be valid values
595	// for cacheKeyParameters, these parameters must also be specified for
596	// MethodrequestParameters.
597	CacheKeyParameters []string
598
599	// Specifies a group of related cached parameters. By default, API Gateway uses the
600	// resource ID as the cacheNamespace. You can specify the same cacheNamespace
601	// across resources to return the same cached data for requests to different
602	// resources.
603	CacheNamespace *string
604
605	// The (id
606	// (https://docs.aws.amazon.com/apigateway/api-reference/resource/vpc-link/#id)) of
607	// the VpcLink used for the integration when connectionType=VPC_LINK and undefined,
608	// otherwise.
609	ConnectionId *string
610
611	// The type of the network connection to the integration endpoint. The valid value
612	// is INTERNET for connections through the public routable internet or VPC_LINK for
613	// private connections between API Gateway and a network load balancer in a VPC.
614	// The default value is INTERNET.
615	ConnectionType ConnectionType
616
617	// Specifies how to handle request payload content type conversions. Supported
618	// values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following
619	// behaviors:
620	//
621	// * CONVERT_TO_BINARY: Converts a request payload from a
622	// Base64-encoded string to the corresponding binary blob.
623	//
624	// * CONVERT_TO_TEXT:
625	// Converts a request payload from a binary blob to a Base64-encoded string.
626	//
627	// If
628	// this property is not defined, the request payload will be passed through from
629	// the method request to integration request without modification, provided that
630	// the passthroughBehavior is configured to support payload pass-through.
631	ContentHandling ContentHandlingStrategy
632
633	// Specifies the credentials required for the integration, if any. For AWS
634	// integrations, three options are available. To specify an IAM Role for API
635	// Gateway to assume, use the role's Amazon Resource Name (ARN). To require that
636	// the caller's identity be passed through from the request, specify the string
637	// arn:aws:iam::\*:user/\*. To use resource-based permissions on supported AWS
638	// services, specify null.
639	Credentials *string
640
641	// Specifies the integration's HTTP method type.
642	HttpMethod *string
643
644	// Specifies the integration's responses.
645	// Example: Get integration responses of a
646	// method
647	//
648	// Request
649	//
650	//     GET
651	// /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200
652	// HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com
653	// X-Amz-Date: 20160607T191449Z Authorization: AWS4-HMAC-SHA256
654	// Credential={access_key_ID}/20160607/us-east-1/apigateway/aws4_request,
655	// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
656	//
657	// Response
658	//
659	// The
660	// successful response returns 200 OK status and a payload as follows: { "_links":
661	// { "curies": { "href":
662	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html",
663	// "name": "integrationresponse", "templated": true }, "self": { "href":
664	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200",
665	// "title": "200" }, "integrationresponse:delete": { "href":
666	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
667	// }, "integrationresponse:update": { "href":
668	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
669	// } }, "responseParameters": { "method.response.header.Content-Type":
670	// "'application/xml'" }, "responseTemplates": { "application/json":
671	// "$util.urlDecode(\"%3CkinesisStreams%3E#foreach($stream in
672	// $input.path('$.StreamNames'))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E\")\n"
673	// }, "statusCode": "200" }Creating an API
674	// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
675	IntegrationResponses map[string]IntegrationResponse
676
677	// Specifies how the method request body of an unmapped content type will be passed
678	// through the integration request to the back end without transformation. A
679	// content type is unmapped if no mapping template is defined in the integration or
680	// the content type does not match any of the mapped content types, as specified in
681	// requestTemplates. The valid value is one of the following:
682	//
683	// * WHEN_NO_MATCH:
684	// passes the method request body through the integration request to the back end
685	// without transformation when the method request content type does not match any
686	// content type associated with the mapping templates defined in the integration
687	// request.
688	//
689	// * WHEN_NO_TEMPLATES: passes the method request body through the
690	// integration request to the back end without transformation when no mapping
691	// template is defined in the integration request. If a template is defined when
692	// this option is selected, the method request of an unmapped content-type will be
693	// rejected with an HTTP 415 Unsupported Media Type response.
694	//
695	// * NEVER: rejects the
696	// method request with an HTTP 415 Unsupported Media Type response when either the
697	// method request content type does not match any content type associated with the
698	// mapping templates defined in the integration request or no mapping template is
699	// defined in the integration request.
700	PassthroughBehavior *string
701
702	// A key-value map specifying request parameters that are passed from the method
703	// request to the back end. The key is an integration request parameter name and
704	// the associated value is a method request parameter value or static value that
705	// must be enclosed within single quotes and pre-encoded as required by the back
706	// end. The method request parameter value must match the pattern of
707	// method.request.{location}.{name}, where location is querystring, path, or header
708	// and name must be a valid and unique method request parameter name.
709	RequestParameters map[string]string
710
711	// Represents a map of Velocity templates that are applied on the request payload
712	// based on the value of the Content-Type header sent by the client. The content
713	// type value is the key in this map, and the template (as a String) is the value.
714	RequestTemplates map[string]string
715
716	// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000
717	// milliseconds or 29 seconds.
718	TimeoutInMillis int32
719
720	// Specifies the TLS configuration for an integration.
721	TlsConfig *TlsConfig
722
723	// Specifies an API method integration type. The valid value is one of the
724	// following:
725	//
726	// * AWS: for integrating the API method request with an AWS service
727	// action, including the Lambda function-invoking action. With the Lambda
728	// function-invoking action, this is referred to as the Lambda custom integration.
729	// With any other AWS service action, this is known as AWS integration.
730	//
731	// *
732	// AWS_PROXY: for integrating the API method request with the Lambda
733	// function-invoking action with the client request passed through as-is. This
734	// integration is also referred to as the Lambda proxy integration.
735	//
736	// * HTTP: for
737	// integrating the API method request with an HTTP endpoint, including a private
738	// HTTP endpoint within a VPC. This integration is also referred to as the HTTP
739	// custom integration.
740	//
741	// * HTTP_PROXY: for integrating the API method request with
742	// an HTTP endpoint, including a private HTTP endpoint within a VPC, with the
743	// client request passed through as-is. This is also referred to as the HTTP proxy
744	// integration.
745	//
746	// * MOCK: for integrating the API method request with API Gateway as
747	// a "loop-back" endpoint without invoking any backend.
748	//
749	// For the HTTP and HTTP
750	// proxy integrations, each integration can specify a protocol (http/https), port
751	// and path. Standard 80 and 443 ports are supported as well as custom ports above
752	// 1024. An HTTP or HTTP proxy integration with a connectionType of VPC_LINK is
753	// referred to as a private integration and uses a VpcLink to connect API Gateway
754	// to a network load balancer of a VPC.
755	Type IntegrationType
756
757	// Specifies Uniform Resource Identifier (URI) of the integration endpoint.
758	//
759	// * For
760	// HTTP or HTTP_PROXY integrations, the URI must be a fully formed, encoded HTTP(S)
761	// URL according to the RFC-3986 specification
762	// (https://en.wikipedia.org/wiki/Uniform_Resource_Identifier), for either standard
763	// integration, where connectionType is not VPC_LINK, or private integration, where
764	// connectionType is VPC_LINK. For a private HTTP integration, the URI is not used
765	// for routing.
766	//
767	// * For AWS or AWS_PROXY integrations, the URI is of the form
768	// arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service_api}.
769	// Here, {Region} is the API Gateway region (e.g., us-east-1); {service} is the
770	// name of the integrated AWS service (e.g., s3); and {subdomain} is a designated
771	// subdomain supported by certain AWS service for fast host-name lookup. action can
772	// be used for an AWS service action-based API, using an
773	// Action={name}&{p1}={v1}&p2={v2}... query string. The ensuing {service_api}
774	// refers to a supported action {name} plus any required input parameters.
775	// Alternatively, path can be used for an AWS service path-based API. The ensuing
776	// service_api refers to the path to an AWS service resource, including the region
777	// of the integrated AWS service, if applicable. For example, for integration with
778	// the S3 API of GetObject
779	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html), the uri
780	// can be either
781	// arn:aws:apigateway:us-west-2:s3:action/GetObject&Bucket={bucket}&Key={key} or
782	// arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}
783	Uri *string
784}
785
786// Represents an integration response. The status code must map to an existing
787// MethodResponse, and parameters and templates can be used to transform the
788// back-end response. Creating an API
789// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
790type IntegrationResponse struct {
791
792	// Specifies how to handle response payload content type conversions. Supported
793	// values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following
794	// behaviors:
795	//
796	// * CONVERT_TO_BINARY: Converts a response payload from a
797	// Base64-encoded string to the corresponding binary blob.
798	//
799	// * CONVERT_TO_TEXT:
800	// Converts a response payload from a binary blob to a Base64-encoded string.
801	//
802	// If
803	// this property is not defined, the response payload will be passed through from
804	// the integration response to the method response without modification.
805	ContentHandling ContentHandlingStrategy
806
807	// A key-value map specifying response parameters that are passed to the method
808	// response from the back end. The key is a method response header parameter name
809	// and the mapped value is an integration response header value, a static value
810	// enclosed within a pair of single quotes, or a JSON expression from the
811	// integration response body. The mapping key must match the pattern of
812	// method.response.header.{name}, where name is a valid and unique header name. The
813	// mapped non-static value must match the pattern of
814	// integration.response.header.{name} or
815	// integration.response.body.{JSON-expression}, where name is a valid and unique
816	// response header name and JSON-expression is a valid JSON expression without the
817	// $ prefix.
818	ResponseParameters map[string]string
819
820	// Specifies the templates used to transform the integration response body.
821	// Response templates are represented as a key/value map, with a content-type as
822	// the key and a template as the value.
823	ResponseTemplates map[string]string
824
825	// Specifies the regular expression (regex) pattern used to choose an integration
826	// response based on the response from the back end. For example, if the success
827	// response returns nothing and the error response returns some string, you could
828	// use the .+ regex to match error response. However, make sure that the error
829	// response does not contain any newline (\n) character in such cases. If the back
830	// end is an AWS Lambda function, the AWS Lambda function error header is matched.
831	// For all other HTTP and AWS back ends, the HTTP status code is matched.
832	SelectionPattern *string
833
834	// Specifies the status code that is used to map the integration response to an
835	// existing MethodResponse.
836	StatusCode *string
837}
838
839// Represents a client-facing interface by which the client calls the API to access
840// back-end resources. A Method resource is integrated with an Integration
841// resource. Both consist of a request and one or more responses. The method
842// request takes the client input that is passed to the back end through the
843// integration request. A method response returns the output from the back end to
844// the client through an integration response. A method request is embodied in a
845// Method resource, whereas an integration request is embodied in an Integration
846// resource. On the other hand, a method response is represented by a
847// MethodResponse resource, whereas an integration response is represented by an
848// IntegrationResponse resource.
849// Example: Retrive the GET method on a specified
850// resource
851//
852// Request
853//
854// The following example request retrieves the information about
855// the GET method on an API resource (3kzxbg5sa2) of an API (fugvjdxtri). GET
856// /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type:
857// application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date:
858// 20160603T210259Z Authorization: AWS4-HMAC-SHA256
859// Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request,
860// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
861// Response
862//
863// The
864// successful response returns a 200 OK status code and a payload similar to the
865// following: { "_links": { "curies": [ { "href":
866// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html",
867// "name": "integration", "templated": true }, { "href":
868// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html",
869// "name": "integrationresponse", "templated": true }, { "href":
870// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html",
871// "name": "method", "templated": true }, { "href":
872// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html",
873// "name": "methodresponse", "templated": true } ], "self": { "href":
874// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET", "name": "GET", "title":
875// "GET" }, "integration:put": { "href":
876// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
877// "method:delete": { "href":
878// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "method:integration":
879// { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
880// "method:responses": { "href":
881// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name":
882// "200", "title": "200" }, "method:update": { "href":
883// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "methodresponse:put":
884// { "href":
885// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status_code}",
886// "templated": true } }, "apiKeyRequired": true, "authorizationType": "NONE",
887// "httpMethod": "GET", "_embedded": { "method:integration": { "_links": { "self":
888// { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
889// "integration:delete": { "href":
890// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
891// "integration:responses": { "href":
892// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200",
893// "name": "200", "title": "200" }, "integration:update": { "href":
894// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
895// "integrationresponse:put": { "href":
896// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status_code}",
897// "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "3kzxbg5sa2",
898// "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod":
899// "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestParameters": {
900// "integration.request.header.Content-Type": "'application/x-amz-json-1.1'" },
901// "requestTemplates": { "application/json": "{\n}" }, "type": "AWS", "uri":
902// "arn:aws:apigateway:us-east-1:kinesis:action/ListStreams", "_embedded": {
903// "integration:responses": { "_links": { "self": { "href":
904// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200",
905// "name": "200", "title": "200" }, "integrationresponse:delete": { "href":
906// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
907// }, "integrationresponse:update": { "href":
908// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
909// } }, "responseParameters": { "method.response.header.Content-Type":
910// "'application/xml'" }, "responseTemplates": { "application/json":
911// "$util.urlDecode(\"%3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E\")"
912// }, "statusCode": "200" } } }, "method:responses": { "_links": { "self": {
913// "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200",
914// "name": "200", "title": "200" }, "methodresponse:delete": { "href":
915// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" },
916// "methodresponse:update": { "href":
917// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" } },
918// "responseModels": { "application/json": "Empty" }, "responseParameters": {
919// "method.response.header.Content-Type": false }, "statusCode": "200" } } } In the
920// example above, the response template for the 200 OK response maps the JSON
921// output from the ListStreams action in the back end to an XML output. The mapping
922// template is URL-encoded as
923// %3CkinesisStreams%3E%23foreach(%24stream%20in%20%24input.path(%27%24.StreamNames%27))%3Cstream%3E%3Cname%3E%24stream%3C%2Fname%3E%3C%2Fstream%3E%23end%3C%2FkinesisStreams%3E
924// and the output is decoded using the $util.urlDecode()
925// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#util-templat-reference)
926// helper function. MethodResponse, Integration, IntegrationResponse, Resource, Set
927// up an API's method
928// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html)
929type Method struct {
930
931	// A boolean flag specifying whether a valid ApiKey is required to invoke this
932	// method.
933	ApiKeyRequired *bool
934
935	// A list of authorization scopes configured on the method. The scopes are used
936	// with a COGNITO_USER_POOLS authorizer to authorize the method invocation. The
937	// authorization works by matching the method scopes against the scopes parsed from
938	// the access token in the incoming request. The method invocation is authorized if
939	// any method scopes matches a claimed scope in the access token. Otherwise, the
940	// invocation is not authorized. When the method scope is configured, the client
941	// must provide an access token instead of an identity token for authorization
942	// purposes.
943	AuthorizationScopes []string
944
945	// The method's authorization type. Valid values are NONE for open access, AWS_IAM
946	// for using AWS IAM permissions, CUSTOM for using a custom authorizer, or
947	// COGNITO_USER_POOLS for using a Cognito user pool.
948	AuthorizationType *string
949
950	// The identifier of an Authorizer to use on this method. The authorizationType
951	// must be CUSTOM.
952	AuthorizerId *string
953
954	// The method's HTTP verb.
955	HttpMethod *string
956
957	// Gets the method's integration responsible for passing the client-submitted
958	// request to the back end and performing necessary transformations to make the
959	// request compliant with the back end.
960	// Example:
961	//
962	// Request
963	//
964	//     GET
965	// /restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration HTTP/1.1
966	// Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com
967	// Content-Length: 117 X-Amz-Date: 20160613T213210Z Authorization: AWS4-HMAC-SHA256
968	// Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request,
969	// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
970	//
971	// Response
972	//
973	// The
974	// successful response returns a 200 OK status code and a payload similar to the
975	// following: { "_links": { "curies": [ { "href":
976	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html",
977	// "name": "integration", "templated": true }, { "href":
978	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html",
979	// "name": "integrationresponse", "templated": true } ], "self": { "href":
980	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" },
981	// "integration:delete": { "href":
982	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" },
983	// "integration:responses": { "href":
984	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200",
985	// "name": "200", "title": "200" }, "integration:update": { "href":
986	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration" },
987	// "integrationresponse:put": { "href":
988	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/{status_code}",
989	// "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "0cjtch",
990	// "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod":
991	// "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestTemplates": {
992	// "application/json": "{\n \"a\": \"$input.params('operand1')\",\n \"b\":
993	// \"$input.params('operand2')\", \n \"op\": \"$input.params('operator')\" \n}" },
994	// "type": "AWS", "uri":
995	// "arn:aws:apigateway:us-west-2:lambda:path//2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:Calc/invocations",
996	// "_embedded": { "integration:responses": { "_links": { "self": { "href":
997	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200",
998	// "name": "200", "title": "200" }, "integrationresponse:delete": { "href":
999	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" },
1000	// "integrationresponse:update": { "href":
1001	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/integration/responses/200" }
1002	// }, "responseParameters": { "method.response.header.operator":
1003	// "integration.response.body.op", "method.response.header.operand_2":
1004	// "integration.response.body.b", "method.response.header.operand_1":
1005	// "integration.response.body.a" }, "responseTemplates": { "application/json":
1006	// "#set($res = $input.path('$'))\n{\n \"result\": \"$res.a, $res.b, $res.op =>
1007	// $res.c\",\n \"a\" : \"$res.a\",\n \"b\" : \"$res.b\",\n \"op\" : \"$res.op\",\n
1008	// \"c\" : \"$res.c\"\n}" }, "selectionPattern": "", "statusCode": "200" } } }AWS
1009	// CLI
1010	// (https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-integration.html)
1011	MethodIntegration *Integration
1012
1013	// Gets a method response associated with a given HTTP status code. The collection
1014	// of method responses are encapsulated in a key-value map, where the key is a
1015	// response's HTTP status code and the value is a MethodResponse resource that
1016	// specifies the response returned to the caller from the back end through the
1017	// integration response.
1018	// Example: Get a 200 OK response of a GET method
1019	//
1020	// Request
1021	//
1022	//
1023	// GET /restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200 HTTP/1.1
1024	// Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com
1025	// Content-Length: 117 X-Amz-Date: 20160613T215008Z Authorization: AWS4-HMAC-SHA256
1026	// Credential={access_key_ID}/20160613/us-east-1/apigateway/aws4_request,
1027	// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
1028	//
1029	// Response
1030	//
1031	// The
1032	// successful response returns a 200 OK status code and a payload similar to the
1033	// following: { "_links": { "curies": { "href":
1034	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html",
1035	// "name": "methodresponse", "templated": true }, "self": { "href":
1036	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200", "title":
1037	// "200" }, "methodresponse:delete": { "href":
1038	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" },
1039	// "methodresponse:update": { "href":
1040	// "/restapis/uojnr9hd57/resources/0cjtch/methods/GET/responses/200" } },
1041	// "responseModels": { "application/json": "Empty" }, "responseParameters": {
1042	// "method.response.header.operator": false, "method.response.header.operand_2":
1043	// false, "method.response.header.operand_1": false }, "statusCode": "200" }AWS CLI
1044	// (https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-method-response.html)
1045	MethodResponses map[string]MethodResponse
1046
1047	// A human-friendly operation identifier for the method. For example, you can
1048	// assign the operationName of ListPets for the GET /pets method in the PetStore
1049	// example.
1050	OperationName *string
1051
1052	// A key-value map specifying data schemas, represented by Model resources, (as the
1053	// mapped value) of the request payloads of given content types (as the mapping
1054	// key).
1055	RequestModels map[string]string
1056
1057	// A key-value map defining required or optional method request parameters that can
1058	// be accepted by API Gateway. A key is a method request parameter name matching
1059	// the pattern of method.request.{location}.{name}, where location is querystring,
1060	// path, or header and name is a valid and unique parameter name. The value
1061	// associated with the key is a Boolean flag indicating whether the parameter is
1062	// required (true) or optional (false). The method request parameter names defined
1063	// here are available in Integration to be mapped to integration request parameters
1064	// or templates.
1065	RequestParameters map[string]bool
1066
1067	// The identifier of a RequestValidator for request validation.
1068	RequestValidatorId *string
1069}
1070
1071// Represents a method response of a given HTTP status code returned to the client.
1072// The method response is passed from the back end through the associated
1073// integration response that can be transformed using a mapping template.
1074// Example:
1075// A MethodResponse instance of an API
1076//
1077// Request
1078//
1079// The example request retrieves a
1080// MethodResponse of the 200 status code. GET
1081// /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200 HTTP/1.1
1082// Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com
1083// X-Amz-Date: 20160603T222952Z Authorization: AWS4-HMAC-SHA256
1084// Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request,
1085// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
1086// Response
1087//
1088// The
1089// successful response returns 200 OK status and a payload as follows: { "_links":
1090// { "curies": { "href":
1091// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html",
1092// "name": "methodresponse", "templated": true }, "self": { "href":
1093// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "title":
1094// "200" }, "methodresponse:delete": { "href":
1095// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" },
1096// "methodresponse:update": { "href":
1097// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" } },
1098// "responseModels": { "application/json": "Empty" }, "responseParameters": {
1099// "method.response.header.Content-Type": false }, "statusCode": "200" }Method,
1100// IntegrationResponse, IntegrationCreating an API
1101// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
1102type MethodResponse struct {
1103
1104	// Specifies the Model resources used for the response's content-type. Response
1105	// models are represented as a key/value map, with a content-type as the key and a
1106	// Model name as the value.
1107	ResponseModels map[string]string
1108
1109	// A key-value map specifying required or optional response parameters that API
1110	// Gateway can send back to the caller. A key defines a method response header and
1111	// the value specifies whether the associated method response header is required or
1112	// not. The expression of the key must match the pattern
1113	// method.response.header.{name}, where name is a valid and unique header name. API
1114	// Gateway passes certain integration response data to the method response headers
1115	// specified here according to the mapping you prescribe in the API's
1116	// IntegrationResponse. The integration response data that can be mapped include an
1117	// integration response header expressed in integration.response.header.{name}, a
1118	// static value enclosed within a pair of single quotes (e.g., 'application/json'),
1119	// or a JSON expression from the back-end response payload in the form of
1120	// integration.response.body.{JSON-expression}, where JSON-expression is a valid
1121	// JSON expression without the $ prefix.)
1122	ResponseParameters map[string]bool
1123
1124	// The method response's status code.
1125	StatusCode *string
1126}
1127
1128// Specifies the method setting properties.
1129type MethodSetting struct {
1130
1131	// Specifies whether the cached responses are encrypted. The PATCH path for this
1132	// setting is /{method_setting_key}/caching/dataEncrypted, and the value is a
1133	// Boolean.
1134	CacheDataEncrypted bool
1135
1136	// Specifies the time to live (TTL), in seconds, for cached responses. The higher
1137	// the TTL, the longer the response will be cached. The PATCH path for this setting
1138	// is /{method_setting_key}/caching/ttlInSeconds, and the value is an integer.
1139	CacheTtlInSeconds int32
1140
1141	// Specifies whether responses should be cached and returned for requests. A cache
1142	// cluster must be enabled on the stage for responses to be cached. The PATCH path
1143	// for this setting is /{method_setting_key}/caching/enabled, and the value is a
1144	// Boolean.
1145	CachingEnabled bool
1146
1147	// Specifies whether data trace logging is enabled for this method, which affects
1148	// the log entries pushed to Amazon CloudWatch Logs. The PATCH path for this
1149	// setting is /{method_setting_key}/logging/dataTrace, and the value is a Boolean.
1150	DataTraceEnabled bool
1151
1152	// Specifies the logging level for this method, which affects the log entries
1153	// pushed to Amazon CloudWatch Logs. The PATCH path for this setting is
1154	// /{method_setting_key}/logging/loglevel, and the available levels are OFF, ERROR,
1155	// and INFO. Choose ERROR to write only error-level entries to CloudWatch Logs, or
1156	// choose INFO to include all ERROR events as well as extra informational events.
1157	LoggingLevel *string
1158
1159	// Specifies whether Amazon CloudWatch metrics are enabled for this method. The
1160	// PATCH path for this setting is /{method_setting_key}/metrics/enabled, and the
1161	// value is a Boolean.
1162	MetricsEnabled bool
1163
1164	// Specifies whether authorization is required for a cache invalidation request.
1165	// The PATCH path for this setting is
1166	// /{method_setting_key}/caching/requireAuthorizationForCacheControl, and the value
1167	// is a Boolean.
1168	RequireAuthorizationForCacheControl bool
1169
1170	// Specifies the throttling burst limit. The PATCH path for this setting is
1171	// /{method_setting_key}/throttling/burstLimit, and the value is an integer.
1172	ThrottlingBurstLimit int32
1173
1174	// Specifies the throttling rate limit. The PATCH path for this setting is
1175	// /{method_setting_key}/throttling/rateLimit, and the value is a double.
1176	ThrottlingRateLimit float64
1177
1178	// Specifies how to handle unauthorized requests for cache invalidation. The PATCH
1179	// path for this setting is
1180	// /{method_setting_key}/caching/unauthorizedCacheControlHeaderStrategy, and the
1181	// available values are FAIL_WITH_403, SUCCEED_WITH_RESPONSE_HEADER,
1182	// SUCCEED_WITHOUT_RESPONSE_HEADER.
1183	UnauthorizedCacheControlHeaderStrategy UnauthorizedCacheControlHeaderStrategy
1184}
1185
1186// Represents a summary of a Method resource, given a particular date and time.
1187type MethodSnapshot struct {
1188
1189	// Specifies whether the method requires a valid ApiKey.
1190	ApiKeyRequired bool
1191
1192	// The method's authorization type. Valid values are NONE for open access, AWS_IAM
1193	// for using AWS IAM permissions, CUSTOM for using a custom authorizer, or
1194	// COGNITO_USER_POOLS for using a Cognito user pool.
1195	AuthorizationType *string
1196}
1197
1198// Represents the data structure of a method's request or response payload. A
1199// request model defines the data structure of the client-supplied request payload.
1200// A response model defines the data structure of the response payload returned by
1201// the back end. Although not required, models are useful for mapping payloads
1202// between the front end and back end. A model is used for generating an API's SDK,
1203// validating the input request body, and creating a skeletal mapping template.
1204// Method, MethodResponse, Models and Mappings
1205// (https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html)
1206type Model struct {
1207
1208	// The content-type for the model.
1209	ContentType *string
1210
1211	// The description of the model.
1212	Description *string
1213
1214	// The identifier for the model resource.
1215	Id *string
1216
1217	// The name of the model. Must be an alphanumeric string.
1218	Name *string
1219
1220	// The schema for the model. For application/json models, this should be JSON
1221	// schema draft 4 (https://tools.ietf.org/html/draft-zyp-json-schema-04) model. Do
1222	// not include "\*/" characters in the description of any properties because such
1223	// "\*/" characters may be interpreted as the closing marker for comments in some
1224	// languages, such as Java or JavaScript, causing the installation of your API's
1225	// SDK generated by API Gateway to fail.
1226	Schema *string
1227}
1228
1229// If specified, API Gateway performs two-way authentication between the client and
1230// the server. Clients must present a trusted certificate to access your custom
1231// domain name.
1232type MutualTlsAuthentication struct {
1233
1234	// An Amazon S3 URL that specifies the truststore for mutual TLS authentication,
1235	// for example s3://bucket-name/key-name. The truststore can contain certificates
1236	// from public or private certificate authorities. To update the truststore, upload
1237	// a new version to S3, and then update your custom domain name to use the new
1238	// version. To update the truststore, you must have permissions to access the S3
1239	// object.
1240	TruststoreUri *string
1241
1242	// The version of the S3 object that contains your truststore. To specify a
1243	// version, you must have versioning enabled for the S3 bucket.
1244	TruststoreVersion *string
1245
1246	// A list of warnings that API Gateway returns while processing your truststore.
1247	// Invalid certificates produce warnings. Mutual TLS is still enabled, but some
1248	// clients might not be able to access your API. To resolve warnings, upload a new
1249	// truststore to S3, and then update you domain name to use the new version.
1250	TruststoreWarnings []string
1251}
1252
1253// If specified, API Gateway performs two-way authentication between the client and
1254// the server. Clients must present a trusted certificate to access your custom
1255// domain name.
1256type MutualTlsAuthenticationInput struct {
1257
1258	// An Amazon S3 resource ARN that specifies the truststore for mutual TLS
1259	// authentication, for example, s3://bucket-name/key-name. The truststore can
1260	// contain certificates from public or private certificate authorities. To update
1261	// the truststore, upload a new version to S3, and then update your custom domain
1262	// name to use the new version. To update the truststore, you must have permissions
1263	// to access the S3 object.
1264	TruststoreUri *string
1265
1266	// The version of the S3 object that contains your truststore. To specify a
1267	// version, you must have versioning enabled for the S3 bucket.
1268	TruststoreVersion *string
1269}
1270
1271// A single patch operation to apply to the specified resource. Please refer to
1272// http://tools.ietf.org/html/rfc6902#section-4 for an explanation of how each
1273// operation is used.
1274type PatchOperation struct {
1275
1276	// The copy update operation's source as identified by a JSON-Pointer value
1277	// referencing the location within the targeted resource to copy the value from.
1278	// For example, to promote a canary deployment, you copy the canary deployment ID
1279	// to the affiliated deployment ID by calling a PATCH request on a Stage resource
1280	// with "op":"copy", "from":"/canarySettings/deploymentId" and
1281	// "path":"/deploymentId".
1282	From *string
1283
1284	// An update operation to be performed with this PATCH request. The valid value can
1285	// be add, remove, replace or copy. Not all valid operations are supported for a
1286	// given resource. Support of the operations depends on specific operational
1287	// contexts. Attempts to apply an unsupported operation on a resource will return
1288	// an error message.
1289	Op Op
1290
1291	// The op operation's target, as identified by a JSON Pointer
1292	// (https://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08) value that
1293	// references a location within the targeted resource. For example, if the target
1294	// resource has an updateable property of {"name":"value"}, the path for this
1295	// property is /name. If the name property value is a JSON object (e.g., {"name":
1296	// {"child/name": "child-value"}}), the path for the child/name property will be
1297	// /name/child~1name. Any slash ("/") character appearing in path names must be
1298	// escaped with "~1", as shown in the example above. Each op operation can have
1299	// only one path associated with it.
1300	Path *string
1301
1302	// The new target value of the update operation. It is applicable for the add or
1303	// replace operation. When using AWS CLI to update a property of a JSON value,
1304	// enclose the JSON object with a pair of single quotes in a Linux shell, e.g.,
1305	// '{"a": ...}'. In a Windows shell, see Using JSON for Parameters
1306	// (https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json).
1307	Value *string
1308}
1309
1310// Quotas configured for a usage plan.
1311type QuotaSettings struct {
1312
1313	// The maximum number of requests that can be made in a given time period.
1314	Limit int32
1315
1316	// The day that a time period starts. For example, with a time period of WEEK, an
1317	// offset of 0 starts on Sunday, and an offset of 1 starts on Monday.
1318	Offset int32
1319
1320	// The time period in which the limit applies. Valid values are "DAY", "WEEK" or
1321	// "MONTH".
1322	Period QuotaPeriodType
1323}
1324
1325// A set of validation rules for incoming Method requests. In OpenAPI, a
1326// RequestValidator of an API is defined by the
1327// x-amazon-apigateway-request-validators.requestValidator
1328// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-request-validators.requestValidator.html)
1329// object. It the referenced using the x-amazon-apigateway-request-validator
1330// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html#api-gateway-swagger-extensions-request-validator)
1331// property. Enable Basic Request Validation in API Gateway
1332// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-request-validation.html)
1333type RequestValidator struct {
1334
1335	// The identifier of this RequestValidator.
1336	Id *string
1337
1338	// The name of this RequestValidator
1339	Name *string
1340
1341	// A Boolean flag to indicate whether to validate a request body according to the
1342	// configured Model schema.
1343	ValidateRequestBody bool
1344
1345	// A Boolean flag to indicate whether to validate request parameters (true) or not
1346	// (false).
1347	ValidateRequestParameters bool
1348}
1349
1350// Represents an API resource. Create an API
1351// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
1352type Resource struct {
1353
1354	// The resource's identifier.
1355	Id *string
1356
1357	// The parent resource's identifier.
1358	ParentId *string
1359
1360	// The full path for this resource.
1361	Path *string
1362
1363	// The last path segment for this resource.
1364	PathPart *string
1365
1366	// Gets an API resource's method of a given HTTP verb. The resource methods are a
1367	// map of methods indexed by methods' HTTP verbs enabled on the resource. This
1368	// method map is included in the 200 OK response of the GET
1369	// /restapis/{restapi_id}/resources/{resource_id} or GET
1370	// /restapis/{restapi_id}/resources/{resource_id}?embed=methods request.
1371	// Example:
1372	// Get the GET method of an API resource
1373	//
1374	// Request
1375	//
1376	//     GET
1377	// /restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET HTTP/1.1 Content-Type:
1378	// application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date:
1379	// 20170223T031827Z Authorization: AWS4-HMAC-SHA256
1380	// Credential={access_key_ID}/20170223/us-east-1/apigateway/aws4_request,
1381	// SignedHeaders=content-type;host;x-amz-date, Signature={sig4_hash}
1382	//
1383	// Response
1384	//
1385	// {
1386	// "_links": { "curies": [ { "href":
1387	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-{rel}.html",
1388	// "name": "integration", "templated": true }, { "href":
1389	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-integration-response-{rel}.html",
1390	// "name": "integrationresponse", "templated": true }, { "href":
1391	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-{rel}.html",
1392	// "name": "method", "templated": true }, { "href":
1393	// "https://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-method-response-{rel}.html",
1394	// "name": "methodresponse", "templated": true } ], "self": { "href":
1395	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET", "name": "GET", "title":
1396	// "GET" }, "integration:put": { "href":
1397	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
1398	// "method:delete": { "href":
1399	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "method:integration":
1400	// { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
1401	// "method:responses": { "href":
1402	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200", "name":
1403	// "200", "title": "200" }, "method:update": { "href":
1404	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET" }, "methodresponse:put":
1405	// { "href":
1406	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/{status_code}",
1407	// "templated": true } }, "apiKeyRequired": false, "authorizationType": "NONE",
1408	// "httpMethod": "GET", "_embedded": { "method:integration": { "_links": { "self":
1409	// { "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
1410	// "integration:delete": { "href":
1411	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
1412	// "integration:responses": { "href":
1413	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200",
1414	// "name": "200", "title": "200" }, "integration:update": { "href":
1415	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration" },
1416	// "integrationresponse:put": { "href":
1417	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/{status_code}",
1418	// "templated": true } }, "cacheKeyParameters": [], "cacheNamespace": "3kzxbg5sa2",
1419	// "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "httpMethod":
1420	// "POST", "passthroughBehavior": "WHEN_NO_MATCH", "requestParameters": {
1421	// "integration.request.header.Content-Type": "'application/x-amz-json-1.1'" },
1422	// "requestTemplates": { "application/json": "{\n}" }, "type": "AWS", "uri":
1423	// "arn:aws:apigateway:us-east-1:kinesis:action/ListStreams", "_embedded": {
1424	// "integration:responses": { "_links": { "self": { "href":
1425	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200",
1426	// "name": "200", "title": "200" }, "integrationresponse:delete": { "href":
1427	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
1428	// }, "integrationresponse:update": { "href":
1429	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/integration/responses/200"
1430	// } }, "responseParameters": { "method.response.header.Content-Type":
1431	// "'application/xml'" }, "responseTemplates": { "application/json":
1432	// "$util.urlDecode(\"%3CkinesisStreams%3E#foreach($stream in
1433	// $input.path('$.StreamNames'))%3Cstream%3E%3Cname%3E$stream%3C/name%3E%3C/stream%3E#end%3C/kinesisStreams%3E\")\n"
1434	// }, "statusCode": "200" } } }, "method:responses": { "_links": { "self": {
1435	// "href": "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200",
1436	// "name": "200", "title": "200" }, "methodresponse:delete": { "href":
1437	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" },
1438	// "methodresponse:update": { "href":
1439	// "/restapis/fugvjdxtri/resources/3kzxbg5sa2/methods/GET/responses/200" } },
1440	// "responseModels": { "application/json": "Empty" }, "responseParameters": {
1441	// "method.response.header.Content-Type": false }, "statusCode": "200" } } } If the
1442	// OPTIONS is enabled on the resource, you can follow the example here to get that
1443	// method. Just replace the GET of the last path segment in the request URL with
1444	// OPTIONS.
1445	ResourceMethods map[string]Method
1446}
1447
1448// Represents a REST API. Create an API
1449// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-create-api.html)
1450type RestApi struct {
1451
1452	// The source of the API key for metering requests according to a usage plan. Valid
1453	// values are:
1454	//
1455	// * HEADER to read the API key from the X-API-Key header of a
1456	// request.
1457	//
1458	// * AUTHORIZER to read the API key from the UsageIdentifierKey from a
1459	// custom authorizer.
1460	ApiKeySource ApiKeySourceType
1461
1462	// The list of binary media types supported by the RestApi. By default, the RestApi
1463	// supports only UTF-8-encoded text payloads.
1464	BinaryMediaTypes []string
1465
1466	// The timestamp when the API was created.
1467	CreatedDate *time.Time
1468
1469	// The API's description.
1470	Description *string
1471
1472	// Specifies whether clients can invoke your API by using the default execute-api
1473	// endpoint. By default, clients can invoke your API with the default
1474	// https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that
1475	// clients use a custom domain name to invoke your API, disable the default
1476	// endpoint.
1477	DisableExecuteApiEndpoint bool
1478
1479	// The endpoint configuration of this RestApi showing the endpoint types of the
1480	// API.
1481	EndpointConfiguration *EndpointConfiguration
1482
1483	// The API's identifier. This identifier is unique across all of your APIs in API
1484	// Gateway.
1485	Id *string
1486
1487	// A nullable integer that is used to enable compression (with non-negative between
1488	// 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null
1489	// value) on an API. When compression is enabled, compression or decompression is
1490	// not applied on the payload if the payload size is smaller than this value.
1491	// Setting it to zero allows compression for any payload size.
1492	MinimumCompressionSize *int32
1493
1494	// The API's name.
1495	Name *string
1496
1497	// A stringified JSON policy document that applies to this RestApi regardless of
1498	// the caller and Method configuration.
1499	Policy *string
1500
1501	// The collection of tags. Each tag element is associated with a given resource.
1502	Tags map[string]string
1503
1504	// A version identifier for the API.
1505	Version *string
1506
1507	// The warning messages reported when failonwarnings is turned on during API
1508	// import.
1509	Warnings []string
1510}
1511
1512// A configuration property of an SDK type.
1513type SdkConfigurationProperty struct {
1514
1515	// The default value of an SdkType configuration property.
1516	DefaultValue *string
1517
1518	// The description of an SdkType configuration property.
1519	Description *string
1520
1521	// The user-friendly name of an SdkType configuration property.
1522	FriendlyName *string
1523
1524	// The name of a an SdkType configuration property.
1525	Name *string
1526
1527	// A boolean flag of an SdkType configuration property to indicate if the
1528	// associated SDK configuration property is required (true) or not (false).
1529	Required bool
1530}
1531
1532// A type of SDK that API Gateway can generate.
1533type SdkType struct {
1534
1535	// A list of configuration properties of an SdkType.
1536	ConfigurationProperties []SdkConfigurationProperty
1537
1538	// The description of an SdkType.
1539	Description *string
1540
1541	// The user-friendly name of an SdkType instance.
1542	FriendlyName *string
1543
1544	// The identifier of an SdkType instance.
1545	Id *string
1546}
1547
1548// Represents a unique identifier for a version of a deployed RestApi that is
1549// callable by users. Deploy an API
1550// (https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-deploy-api.html)
1551type Stage struct {
1552
1553	// Settings for logging access in this stage.
1554	AccessLogSettings *AccessLogSettings
1555
1556	// Specifies whether a cache cluster is enabled for the stage.
1557	CacheClusterEnabled bool
1558
1559	// The size of the cache cluster for the stage, if enabled.
1560	CacheClusterSize CacheClusterSize
1561
1562	// The status of the cache cluster for the stage, if enabled.
1563	CacheClusterStatus CacheClusterStatus
1564
1565	// Settings for the canary deployment in this stage.
1566	CanarySettings *CanarySettings
1567
1568	// The identifier of a client certificate for an API stage.
1569	ClientCertificateId *string
1570
1571	// The timestamp when the stage was created.
1572	CreatedDate *time.Time
1573
1574	// The identifier of the Deployment that the stage points to.
1575	DeploymentId *string
1576
1577	// The stage's description.
1578	Description *string
1579
1580	// The version of the associated API documentation.
1581	DocumentationVersion *string
1582
1583	// The timestamp when the stage last updated.
1584	LastUpdatedDate *time.Time
1585
1586	// A map that defines the method settings for a Stage resource. Keys (designated as
1587	// /{method_setting_key below) are method paths defined as
1588	// {resource_path}/{http_method} for an individual method override, or /\*/\* for
1589	// overriding all methods in the stage.
1590	MethodSettings map[string]MethodSetting
1591
1592	// The name of the stage is the first path segment in the Uniform Resource
1593	// Identifier (URI) of a call to API Gateway. Stage names can only contain
1594	// alphanumeric characters, hyphens, and underscores. Maximum length is 128
1595	// characters.
1596	StageName *string
1597
1598	// The collection of tags. Each tag element is associated with a given resource.
1599	Tags map[string]string
1600
1601	// Specifies whether active tracing with X-ray is enabled for the Stage.
1602	TracingEnabled bool
1603
1604	// A map that defines the stage variables for a Stage resource. Variable names can
1605	// have alphanumeric and underscore characters, and the values must match
1606	// [A-Za-z0-9-._~:/?#&=,]+.
1607	Variables map[string]string
1608
1609	// The ARN of the WebAcl associated with the Stage.
1610	WebAclArn *string
1611}
1612
1613// A reference to a unique stage identified in the format {restApiId}/{stage}.
1614type StageKey struct {
1615
1616	// The string identifier of the associated RestApi.
1617	RestApiId *string
1618
1619	// The stage name associated with the stage key.
1620	StageName *string
1621}
1622
1623// The API request rate limits.
1624type ThrottleSettings struct {
1625
1626	// The API request burst limit, the maximum rate limit over a time ranging from one
1627	// to a few seconds, depending upon whether the underlying token bucket is at its
1628	// full capacity.
1629	BurstLimit int32
1630
1631	// The API request steady-state rate limit.
1632	RateLimit float64
1633}
1634
1635type TlsConfig struct {
1636
1637	// Specifies whether or not API Gateway skips verification that the certificate for
1638	// an integration endpoint is issued by a supported certificate authority
1639	// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-supported-certificate-authorities-for-http-endpoints.html).
1640	// This isn’t recommended, but it enables you to use certificates that are signed
1641	// by private certificate authorities, or certificates that are self-signed. If
1642	// enabled, API Gateway still performs basic certificate validation, which includes
1643	// checking the certificate's expiration date, hostname, and presence of a root
1644	// certificate authority. Supported only for HTTP and HTTP_PROXY integrations.
1645	InsecureSkipVerification bool
1646}
1647
1648// Represents a usage plan than can specify who can assess associated API stages
1649// with specified request limits and quotas. In a usage plan, you associate an API
1650// by specifying the API's Id and a stage name of the specified API. You add plan
1651// customers by adding API keys to the plan. Create and Use Usage Plans
1652// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)
1653type UsagePlan struct {
1654
1655	// The associated API stages of a usage plan.
1656	ApiStages []ApiStage
1657
1658	// The description of a usage plan.
1659	Description *string
1660
1661	// The identifier of a UsagePlan resource.
1662	Id *string
1663
1664	// The name of a usage plan.
1665	Name *string
1666
1667	// The AWS Markeplace product identifier to associate with the usage plan as a SaaS
1668	// product on AWS Marketplace.
1669	ProductCode *string
1670
1671	// The maximum number of permitted requests per a given unit time interval.
1672	Quota *QuotaSettings
1673
1674	// The collection of tags. Each tag element is associated with a given resource.
1675	Tags map[string]string
1676
1677	// The request throttle limits of a usage plan.
1678	Throttle *ThrottleSettings
1679}
1680
1681// Represents a usage plan key to identify a plan customer. To associate an API
1682// stage with a selected API key in a usage plan, you must create a UsagePlanKey
1683// resource to represent the selected ApiKey. " Create and Use Usage Plans
1684// (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html)
1685type UsagePlanKey struct {
1686
1687	// The Id of a usage plan key.
1688	Id *string
1689
1690	// The name of a usage plan key.
1691	Name *string
1692
1693	// The type of a usage plan key. Currently, the valid key type is API_KEY.
1694	Type *string
1695
1696	// The value of a usage plan key.
1697	Value *string
1698}
1699
1700// An API Gateway VPC link for a RestApi to access resources in an Amazon Virtual
1701// Private Cloud (VPC). To enable access to a resource in an Amazon Virtual Private
1702// Cloud through Amazon API Gateway, you, as an API developer, create a VpcLink
1703// resource targeted for one or more network load balancers of the VPC and then
1704// integrate an API method with a private integration that uses the VpcLink. The
1705// private integration has an integration type of HTTP or HTTP_PROXY and has a
1706// connection type of VPC_LINK. The integration uses the connectionId property to
1707// identify the VpcLink used.
1708type VpcLink struct {
1709
1710	// The description of the VPC link.
1711	Description *string
1712
1713	// The identifier of the VpcLink. It is used in an Integration to reference this
1714	// VpcLink.
1715	Id *string
1716
1717	// The name used to label and identify the VPC link.
1718	Name *string
1719
1720	// The status of the VPC link. The valid values are AVAILABLE, PENDING, DELETING,
1721	// or FAILED. Deploying an API will wait if the status is PENDING and will fail if
1722	// the status is DELETING.
1723	Status VpcLinkStatus
1724
1725	// A description about the VPC link status.
1726	StatusMessage *string
1727
1728	// The collection of tags. Each tag element is associated with a given resource.
1729	Tags map[string]string
1730
1731	// The ARN of the network load balancer of the VPC targeted by the VPC link. The
1732	// network load balancer must be owned by the same AWS account of the API owner.
1733	TargetArns []string
1734}
1735