/
types.go
1283 lines (988 loc) · 50.1 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// Code generated by smithy-go-codegen DO NOT EDIT.
package types
import (
smithydocument "github.com/aws/smithy-go/document"
"time"
)
// Access log settings, including the access log format and access log destination
// ARN.
type AccessLogSettings struct {
// The Amazon Resource Name (ARN) of the CloudWatch Logs log group or Kinesis Data
// Firehose delivery stream to receive access logs. If you specify a Kinesis Data
// Firehose delivery stream, the stream name must begin with amazon-apigateway- .
DestinationArn *string
// A single line format of the access logs of data, as specified by selected
// $context variables. The format must include at least $context.requestId .
Format *string
noSmithyDocumentSerde
}
// A resource that can be distributed to callers for executing Method resources
// that require an API key. API keys can be mapped to any Stage on any RestApi,
// which indicates that the callers with the API key can make requests to that
// stage.
type ApiKey struct {
// The timestamp when the API Key was created.
CreatedDate *time.Time
// An Amazon Web Services Marketplace customer identifier, when integrating with
// the Amazon Web Services SaaS Marketplace.
CustomerId *string
// The description of the API Key.
Description *string
// Specifies whether the API Key can be used by callers.
Enabled bool
// The identifier of the API Key.
Id *string
// The timestamp when the API Key was last updated.
LastUpdatedDate *time.Time
// The name of the API Key.
Name *string
// A list of Stage resources that are associated with the ApiKey resource.
StageKeys []string
// The collection of tags. Each tag element is associated with a given resource.
Tags map[string]string
// The value of the API Key.
Value *string
noSmithyDocumentSerde
}
// API stage name of the associated API stage in a usage plan.
type ApiStage struct {
// API Id of the associated API stage in a usage plan.
ApiId *string
// API stage name of the associated API stage in a usage plan.
Stage *string
// Map containing method level throttling information for API stage in a usage
// plan.
Throttle map[string]ThrottleSettings
noSmithyDocumentSerde
}
// Represents an authorization layer for methods. If enabled on a method, API
// Gateway will activate the authorizer when a client calls the method.
type Authorizer struct {
// Optional customer-defined field, used in OpenAPI imports and exports without
// functional impact.
AuthType *string
// Specifies the required credentials as an IAM role for API Gateway to invoke the
// authorizer. To specify an IAM role for API Gateway to assume, use the role's
// Amazon Resource Name (ARN). To use resource-based permissions on the Lambda
// function, specify null.
AuthorizerCredentials *string
// The TTL in seconds of cached authorizer results. If it equals 0, authorization
// caching is disabled. If it is greater than 0, API Gateway will cache authorizer
// responses. If this field is not set, the default value is 300. The maximum value
// is 3600, or 1 hour.
AuthorizerResultTtlInSeconds *int32
// Specifies the authorizer's Uniform Resource Identifier (URI). For TOKEN or
// REQUEST authorizers, this must be a well-formed Lambda function URI, for
// example,
// 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
// . In general, the URI has this form
// arn:aws:apigateway:{region}:lambda:path/{service_api} , where {region} is the
// same as the region hosting the Lambda function, path indicates that the
// remaining substring in the URI should be treated as the path to the resource,
// including the initial / . For Lambda functions, this is usually of the form
// /2015-03-31/functions/[FunctionARN]/invocations .
AuthorizerUri *string
// The identifier for the authorizer resource.
Id *string
// The identity source for which authorization is requested. For a TOKEN or
// COGNITO_USER_POOLS authorizer, this is required and specifies the request header
// mapping expression for the custom header holding the authorization token
// submitted by the client. For example, if the token header name is Auth , the
// header mapping expression is method.request.header.Auth . For the REQUEST
// authorizer, this is required when authorization caching is enabled. The value is
// a comma-separated string of one or more mapping expressions of the specified
// request parameters. For example, if an Auth header, a Name query string
// parameter are defined as identity sources, this value is
// method.request.header.Auth , method.request.querystring.Name . These parameters
// will be used to derive the authorization caching key and to perform runtime
// validation of the REQUEST authorizer by verifying all of the identity-related
// request parameters are present, not null and non-empty. Only when this is true
// does the authorizer invoke the authorizer Lambda function, otherwise, it returns
// a 401 Unauthorized response without calling the Lambda function. The valid value
// is a string of comma-separated mapping expressions of the specified request
// parameters. When the authorization caching is not enabled, this property is
// optional.
IdentitySource *string
// A validation expression for the incoming identity token. For TOKEN authorizers,
// this value is a regular expression. For COGNITO_USER_POOLS authorizers, API
// Gateway will match the aud field of the incoming token from the client against
// the specified regular expression. It will invoke the authorizer's Lambda
// function when there is a match. Otherwise, it will return a 401 Unauthorized
// response without calling the Lambda function. The validation expression does not
// apply to the REQUEST authorizer.
IdentityValidationExpression *string
// The name of the authorizer.
Name *string
// A list of the Amazon Cognito user pool ARNs for the COGNITO_USER_POOLS
// authorizer. Each element is of this format:
// arn:aws:cognito-idp:{region}:{account_id}:userpool/{user_pool_id} . For a TOKEN
// or REQUEST authorizer, this is not defined.
ProviderARNs []string
// The authorizer type. Valid values are TOKEN for a Lambda function using a
// single authorization token submitted in a custom header, REQUEST for a Lambda
// function using incoming request parameters, and COGNITO_USER_POOLS for using an
// Amazon Cognito user pool.
Type AuthorizerType
noSmithyDocumentSerde
}
// Represents the base path that callers of the API must provide as part of the
// URL after the domain name.
type BasePathMapping struct {
// The base path name that callers of the API must provide as part of the URL
// after the domain name.
BasePath *string
// The string identifier of the associated RestApi.
RestApiId *string
// The name of the associated stage.
Stage *string
noSmithyDocumentSerde
}
// Configuration settings of a canary deployment.
type CanarySettings struct {
// The ID of the canary deployment.
DeploymentId *string
// The percent (0-100) of traffic diverted to a canary deployment.
PercentTraffic float64
// Stage variables overridden for a canary release deployment, including new stage
// variables introduced in the canary. These stage variables are represented as a
// string-to-string map between stage variable names and their values.
StageVariableOverrides map[string]string
// A Boolean flag to indicate whether the canary deployment uses the stage cache
// or not.
UseStageCache bool
noSmithyDocumentSerde
}
// Represents a client certificate used to configure client-side SSL
// authentication while sending requests to the integration endpoint.
type ClientCertificate struct {
// The identifier of the client certificate.
ClientCertificateId *string
// The timestamp when the client certificate was created.
CreatedDate *time.Time
// The description of the client certificate.
Description *string
// The timestamp when the client certificate will expire.
ExpirationDate *time.Time
// The PEM-encoded public key of the client certificate, which can be used to
// configure certificate authentication in the integration endpoint .
PemEncodedCertificate *string
// The collection of tags. Each tag element is associated with a given resource.
Tags map[string]string
noSmithyDocumentSerde
}
// An immutable representation of a RestApi resource that can be called by users
// using Stages. A deployment must be associated with a Stage for it to be callable
// over the Internet.
type Deployment struct {
// A summary of the RestApi at the date and time that the deployment resource was
// created.
ApiSummary map[string]map[string]MethodSnapshot
// The date and time that the deployment resource was created.
CreatedDate *time.Time
// The description for the deployment resource.
Description *string
// The identifier for the deployment resource.
Id *string
noSmithyDocumentSerde
}
// The input configuration for a canary deployment.
type DeploymentCanarySettings struct {
// The percentage (0.0-100.0) of traffic routed to the canary deployment.
PercentTraffic float64
// A stage variable overrides used for the canary release deployment. They can
// override existing stage variables or add new stage variables for the canary
// release deployment. These stage variables are represented as a string-to-string
// map between stage variable names and their values.
StageVariableOverrides map[string]string
// A Boolean flag to indicate whether the canary release deployment uses the stage
// cache or not.
UseStageCache bool
noSmithyDocumentSerde
}
// A documentation part for a targeted API entity.
type DocumentationPart struct {
// The DocumentationPart identifier, generated by API Gateway when the
// DocumentationPart is created.
Id *string
// The location of the API entity to which the documentation applies. Valid fields
// depend on the targeted API entity type. All the valid location fields are not
// required. If not explicitly specified, a valid location field is treated as a
// wildcard and associated documentation content may be inherited by matching
// entities, unless overridden.
Location *DocumentationPartLocation
// A content map of API-specific key-value pairs describing the targeted API
// entity. The map must be encoded as a JSON string, e.g., "{ \"description\":
// \"The API does ...\" }" . Only OpenAPI-compliant documentation-related fields
// from the properties map are exported and, hence, published as part of the API
// entity definitions, while the original documentation parts are exported in a
// OpenAPI extension of x-amazon-apigateway-documentation .
Properties *string
noSmithyDocumentSerde
}
// Specifies the target API entity to which the documentation applies.
type DocumentationPartLocation struct {
// The type of API entity to which the documentation content applies. Valid values
// are API , AUTHORIZER , MODEL , RESOURCE , METHOD , PATH_PARAMETER ,
// QUERY_PARAMETER , REQUEST_HEADER , REQUEST_BODY , RESPONSE , RESPONSE_HEADER ,
// and RESPONSE_BODY . Content inheritance does not apply to any entity of the API
// , AUTHORIZER , METHOD , MODEL , REQUEST_BODY , or RESOURCE type.
//
// This member is required.
Type DocumentationPartType
// The HTTP verb of a method. It is a valid field for the API entity types of
// METHOD , PATH_PARAMETER , QUERY_PARAMETER , REQUEST_HEADER , REQUEST_BODY ,
// RESPONSE , RESPONSE_HEADER , and RESPONSE_BODY . The default value is * for any
// method. When an applicable child entity inherits the content of an entity of the
// same type with more general specifications of the other location attributes,
// the child entity's method attribute must match that of the parent entity
// exactly.
Method *string
// The name of the targeted API entity. It is a valid and required field for the
// API entity types of AUTHORIZER , MODEL , PATH_PARAMETER , QUERY_PARAMETER ,
// REQUEST_HEADER , REQUEST_BODY and RESPONSE_HEADER . It is an invalid field for
// any other entity type.
Name *string
// The URL path of the target. It is a valid field for the API entity types of
// RESOURCE , METHOD , PATH_PARAMETER , QUERY_PARAMETER , REQUEST_HEADER ,
// REQUEST_BODY , RESPONSE , RESPONSE_HEADER , and RESPONSE_BODY . The default
// value is / for the root resource. When an applicable child entity inherits the
// content of another entity of the same type with more general specifications of
// the other location attributes, the child entity's path attribute must match
// that of the parent entity as a prefix.
Path *string
// The HTTP status code of a response. It is a valid field for the API entity
// types of RESPONSE , RESPONSE_HEADER , and RESPONSE_BODY . The default value is *
// for any status code. When an applicable child entity inherits the content of an
// entity of the same type with more general specifications of the other location
// attributes, the child entity's statusCode attribute must match that of the
// parent entity exactly.
StatusCode *string
noSmithyDocumentSerde
}
// A snapshot of the documentation of an API.
type DocumentationVersion struct {
// The date when the API documentation snapshot is created.
CreatedDate *time.Time
// The description of the API documentation snapshot.
Description *string
// The version identifier of the API documentation snapshot.
Version *string
noSmithyDocumentSerde
}
// Represents a custom domain name as a user-friendly host name of an API
// (RestApi).
type DomainName struct {
// The reference to an Amazon Web Services-managed certificate that will be used
// by edge-optimized endpoint for this domain name. Certificate Manager is the only
// supported source.
CertificateArn *string
// The name of the certificate that will be used by edge-optimized endpoint for
// this domain name.
CertificateName *string
// The timestamp when the certificate that was used by edge-optimized endpoint for
// this domain name was uploaded.
CertificateUploadDate *time.Time
// The domain name of the Amazon CloudFront distribution associated with this
// custom domain name for an edge-optimized endpoint. You set up this association
// when adding a DNS record pointing the custom domain name to this distribution
// name. For more information about CloudFront distributions, see the Amazon
// CloudFront documentation.
DistributionDomainName *string
// The region-agnostic Amazon Route 53 Hosted Zone ID of the edge-optimized
// endpoint. The valid value is Z2FDTNDATAQYW2 for all the regions. For more
// information, see Set up a Regional Custom Domain Name and AWS Regions and
// Endpoints for API Gateway.
DistributionHostedZoneId *string
// The custom domain name as an API host name, for example, my-api.example.com .
DomainName *string
// The status of the DomainName migration. The valid values are AVAILABLE and
// UPDATING . If the status is UPDATING , the domain cannot be modified further
// until the existing operation is complete. If it is AVAILABLE , the domain can be
// updated.
DomainNameStatus DomainNameStatus
// An optional text message containing detailed information about status of the
// DomainName migration.
DomainNameStatusMessage *string
// The endpoint configuration of this DomainName showing the endpoint types of the
// domain name.
EndpointConfiguration *EndpointConfiguration
// The mutual TLS authentication configuration for a custom domain name. If
// specified, API Gateway performs two-way authentication between the client and
// the server. Clients must present a trusted certificate to access your API.
MutualTlsAuthentication *MutualTlsAuthentication
// The ARN of the public certificate issued by ACM to validate ownership of your
// custom domain. Only required when configuring mutual TLS and using an ACM
// imported or private CA certificate ARN as the regionalCertificateArn.
OwnershipVerificationCertificateArn *string
// The reference to an Amazon Web Services-managed certificate that will be used
// for validating the regional domain name. Certificate Manager is the only
// supported source.
RegionalCertificateArn *string
// The name of the certificate that will be used for validating the regional
// domain name.
RegionalCertificateName *string
// The domain name associated with the regional endpoint for this custom domain
// name. You set up this association by adding a DNS record that points the custom
// domain name to this regional domain name. The regional domain name is returned
// by API Gateway when you create a regional endpoint.
RegionalDomainName *string
// The region-specific Amazon Route 53 Hosted Zone ID of the regional endpoint.
// For more information, see Set up a Regional Custom Domain Name and AWS Regions
// and Endpoints for API Gateway.
RegionalHostedZoneId *string
// The Transport Layer Security (TLS) version + cipher suite for this DomainName.
// The valid values are TLS_1_0 and TLS_1_2 .
SecurityPolicy SecurityPolicy
// The collection of tags. Each tag element is associated with a given resource.
Tags map[string]string
noSmithyDocumentSerde
}
// The endpoint configuration to indicate the types of endpoints an API (RestApi)
// or its custom domain name (DomainName) has.
type EndpointConfiguration struct {
// A list of endpoint types of an API (RestApi) or its custom domain name
// (DomainName). For an edge-optimized API and its custom domain name, the endpoint
// type is "EDGE" . For a regional API and its custom domain name, the endpoint
// type is REGIONAL . For a private API, the endpoint type is PRIVATE .
Types []EndpointType
// A list of VpcEndpointIds of an API (RestApi) against which to create Route53
// ALIASes. It is only supported for PRIVATE endpoint type.
VpcEndpointIds []string
noSmithyDocumentSerde
}
// A gateway response of a given response type and status code, with optional
// response parameters and mapping templates.
type GatewayResponse struct {
// A Boolean flag to indicate whether this GatewayResponse is the default gateway
// response ( true ) or not ( false ). A default gateway response is one generated
// by API Gateway without any customization by an API developer.
DefaultResponse bool
// Response parameters (paths, query strings and headers) of the GatewayResponse
// as a string-to-string map of key-value pairs.
ResponseParameters map[string]string
// Response templates of the GatewayResponse as a string-to-string map of
// key-value pairs.
ResponseTemplates map[string]string
// The response type of the associated GatewayResponse.
ResponseType GatewayResponseType
// The HTTP status code for this GatewayResponse.
StatusCode *string
noSmithyDocumentSerde
}
// Represents an HTTP , HTTP_PROXY , AWS , AWS_PROXY , or Mock integration.
type Integration struct {
// A list of request parameters whose values API Gateway caches. To be valid
// values for cacheKeyParameters , these parameters must also be specified for
// Method requestParameters .
CacheKeyParameters []string
// Specifies a group of related cached parameters. By default, API Gateway uses
// the resource ID as the cacheNamespace . You can specify the same cacheNamespace
// across resources to return the same cached data for requests to different
// resources.
CacheNamespace *string
// The ID of the VpcLink used for the integration when connectionType=VPC_LINK and
// undefined, otherwise.
ConnectionId *string
// The type of the network connection to the integration endpoint. The valid value
// is INTERNET for connections through the public routable internet or VPC_LINK
// for private connections between API Gateway and a network load balancer in a
// VPC. The default value is INTERNET .
ConnectionType ConnectionType
// Specifies how to handle request payload content type conversions. Supported
// values are CONVERT_TO_BINARY and CONVERT_TO_TEXT , with the following behaviors:
// 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 passthroughBehavior is configured to support payload pass-through.
ContentHandling ContentHandlingStrategy
// Specifies the credentials required for the integration, if any. For AWS
// integrations, three options are available. To specify an IAM Role for API
// Gateway to assume, use the role's Amazon Resource Name (ARN). To require that
// the caller's identity be passed through from the request, specify the string
// arn:aws:iam::\*:user/\* . To use resource-based permissions on supported Amazon
// Web Services services, specify null.
Credentials *string
// Specifies the integration's HTTP method type. For the Type property, if you
// specify MOCK , this property is optional. For Lambda integrations, you must set
// the integration method to POST . For all other types, you must specify this
// property.
HttpMethod *string
// Specifies the integration's responses.
IntegrationResponses map[string]IntegrationResponse
// Specifies how the method request body of an unmapped content type will be
// passed through the integration request to the back end without transformation. A
// content type is unmapped if no mapping template is defined in the integration or
// the content type does not match any of the mapped content types, as specified in
// requestTemplates . The valid value is one of the following: WHEN_NO_MATCH :
// passes the method request body through the integration request to the back end
// without transformation when the method request content type does not match any
// content type associated with the mapping templates defined in the integration
// request. WHEN_NO_TEMPLATES : passes the method request body through the
// integration request to the back end without transformation when no mapping
// template is defined in the integration request. If a template is defined when
// this option is selected, the method request of an unmapped content-type will be
// rejected with an HTTP 415 Unsupported Media Type response. NEVER : rejects the
// method request with an HTTP 415 Unsupported Media Type response when either the
// method request content type does not match any content type associated with the
// mapping templates defined in the integration request or no mapping template is
// defined in the integration request.
PassthroughBehavior *string
// A key-value map specifying request parameters that are passed from the method
// request to the back end. The key is an integration request parameter name and
// the associated value is a method request parameter value or static value that
// must be enclosed within single quotes and pre-encoded as required by the back
// end. The method request parameter value must match the pattern of
// method.request.{location}.{name} , where location is querystring , path , or
// header and name must be a valid and unique method request parameter name.
RequestParameters map[string]string
// Represents a map of Velocity templates that are applied on the request payload
// based on the value of the Content-Type header sent by the client. The content
// type value is the key in this map, and the template (as a String) is the value.
RequestTemplates map[string]string
// Custom timeout between 50 and 29,000 milliseconds. The default value is 29,000
// milliseconds or 29 seconds.
TimeoutInMillis int32
// Specifies the TLS configuration for an integration.
TlsConfig *TlsConfig
// Specifies an API method integration type. The valid value is one of the
// following: For the HTTP and HTTP proxy integrations, each integration can
// specify a protocol ( http/https ), port and path. Standard 80 and 443 ports are
// supported as well as custom ports above 1024. 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.
Type IntegrationType
// Specifies Uniform Resource Identifier (URI) of the integration endpoint. For
// HTTP or HTTP_PROXY integrations, the URI must be a fully formed, encoded
// HTTP(S) URL according to the RFC-3986 specification for standard integrations.
// If connectionType is VPC_LINK specify the Network Load Balancer DNS name. For
// AWS or AWS_PROXY integrations, the URI is of the form
// arn:aws:apigateway:{region}:{subdomain.service|service}:path|action/{service_api}
// . Here, {Region} is the API Gateway region (e.g., us-east-1); {service} is the
// name of the integrated Amazon Web Services service (e.g., s3); and {subdomain}
// is a designated subdomain supported by certain Amazon Web Services service for
// fast host-name lookup. action can be used for an Amazon Web Services service
// action-based API, using an Action={name}&{p1}={v1}&p2={v2}... query string. The
// ensuing {service_api} refers to a supported action {name} plus any required
// input parameters. Alternatively, path can be used for an Amazon Web Services
// service path-based API. The ensuing service_api refers to the path to an Amazon
// Web Services service resource, including the region of the integrated Amazon Web
// Services service, if applicable. For example, for integration with the S3 API of
// GetObject, the uri can be either
// arn:aws:apigateway:us-west-2:s3:action/GetObject&Bucket={bucket}&Key={key} or
// arn:aws:apigateway:us-west-2:s3:path/{bucket}/{key}
Uri *string
noSmithyDocumentSerde
}
// Represents an integration response. The status code must map to an existing
// MethodResponse, and parameters and templates can be used to transform the
// back-end response.
type IntegrationResponse struct {
// Specifies how to handle response payload content type conversions. Supported
// values are CONVERT_TO_BINARY and CONVERT_TO_TEXT , with the following behaviors:
// If this property is not defined, the response payload will be passed through
// from the integration response to the method response without modification.
ContentHandling ContentHandlingStrategy
// A key-value map specifying response parameters that are passed to the method
// response from the back end. The key is a method response header parameter name
// and the mapped value is an integration response header value, a static value
// enclosed within a pair of single quotes, or a JSON expression from the
// integration response body. The mapping key must match the pattern of
// method.response.header.{name} , where name is a valid and unique header name.
// The mapped non-static value must match the pattern of
// integration.response.header.{name} or
// integration.response.body.{JSON-expression} , where name is a valid and unique
// response header name and JSON-expression is a valid JSON expression without the
// $ prefix.
ResponseParameters map[string]string
// Specifies the templates used to transform the integration response body.
// Response templates are represented as a key/value map, with a content-type as
// the key and a template as the value.
ResponseTemplates map[string]string
// Specifies the regular expression (regex) pattern used to choose an integration
// response based on the response from the back end. For example, if the success
// response returns nothing and the error response returns some string, you could
// use the .+ regex to match error response. However, make sure that the error
// response does not contain any newline ( \n ) character in such cases. If the
// back end is an Lambda function, the Lambda function error header is matched. For
// all other HTTP and Amazon Web Services back ends, the HTTP status code is
// matched.
SelectionPattern *string
// Specifies the status code that is used to map the integration response to an
// existing MethodResponse.
StatusCode *string
noSmithyDocumentSerde
}
// Represents a client-facing interface by which the client calls the API to
// access back-end resources. A Method resource is integrated with an Integration
// resource. Both consist of a request and one or more responses. The method
// request takes the client input that is passed to the back end through the
// integration request. A method response returns the output from the back end to
// the client through an integration response. A method request is embodied in a
// Method resource, whereas an integration request is embodied in an Integration
// resource. On the other hand, a method response is represented by a
// MethodResponse resource, whereas an integration response is represented by an
// IntegrationResponse resource.
type Method struct {
// A boolean flag specifying whether a valid ApiKey is required to invoke this
// method.
ApiKeyRequired *bool
// A list of authorization scopes configured on the method. The scopes are used
// with a COGNITO_USER_POOLS authorizer to authorize the method invocation. The
// authorization works by matching the method scopes against the scopes parsed from
// the access token in the incoming request. The method invocation is authorized if
// any method scopes matches a claimed scope in the access token. Otherwise, the
// invocation is not authorized. When the method scope is configured, the client
// must provide an access token instead of an identity token for authorization
// purposes.
AuthorizationScopes []string
// The method's authorization type. Valid values are NONE for open access, AWS_IAM
// for using AWS IAM permissions, CUSTOM for using a custom authorizer, or
// COGNITO_USER_POOLS for using a Cognito user pool.
AuthorizationType *string
// The identifier of an Authorizer to use on this method. The authorizationType
// must be CUSTOM .
AuthorizerId *string
// The method's HTTP verb.
HttpMethod *string
// Gets the method's integration responsible for passing the client-submitted
// request to the back end and performing necessary transformations to make the
// request compliant with the back end.
MethodIntegration *Integration
// Gets a method response associated with a given HTTP status code.
MethodResponses map[string]MethodResponse
// A human-friendly operation identifier for the method. For example, you can
// assign the operationName of ListPets for the GET /pets method in the PetStore
// example.
OperationName *string
// A key-value map specifying data schemas, represented by Model resources, (as
// the mapped value) of the request payloads of given content types (as the mapping
// key).
RequestModels map[string]string
// A key-value map defining required or optional method request parameters that
// can be accepted by API Gateway. A key is a method request parameter name
// matching the pattern of method.request.{location}.{name} , where location is
// querystring , path , or header and name is a valid and unique parameter name.
// The value associated with the key is a Boolean flag indicating whether the
// parameter is required ( true ) or optional ( false ). The method request
// parameter names defined here are available in Integration to be mapped to
// integration request parameters or templates.
RequestParameters map[string]bool
// The identifier of a RequestValidator for request validation.
RequestValidatorId *string
noSmithyDocumentSerde
}
// Represents a method response of a given HTTP status code returned to the
// client. The method response is passed from the back end through the associated
// integration response that can be transformed using a mapping template.
type MethodResponse struct {
// Specifies the Model resources used for the response's content-type. Response
// models are represented as a key/value map, with a content-type as the key and a
// Model name as the value.
ResponseModels map[string]string
// A key-value map specifying required or optional response parameters that API
// Gateway can send back to the caller. A key defines a method response header and
// the value specifies whether the associated method response header is required or
// not. The expression of the key must match the pattern
// method.response.header.{name} , where name is a valid and unique header name.
// API Gateway passes certain integration response data to the method response
// headers specified here according to the mapping you prescribe in the API's
// IntegrationResponse. The integration response data that can be mapped include an
// integration response header expressed in integration.response.header.{name} , a
// static value enclosed within a pair of single quotes (e.g., 'application/json'
// ), or a JSON expression from the back-end response payload in the form of
// integration.response.body.{JSON-expression} , where JSON-expression is a valid
// JSON expression without the $ prefix.)
ResponseParameters map[string]bool
// The method response's status code.
StatusCode *string
noSmithyDocumentSerde
}
// Specifies the method setting properties.
type MethodSetting struct {
// Specifies whether the cached responses are encrypted.
CacheDataEncrypted bool
// Specifies the time to live (TTL), in seconds, for cached responses. The higher
// the TTL, the longer the response will be cached.
CacheTtlInSeconds int32
// Specifies whether responses should be cached and returned for requests. A cache
// cluster must be enabled on the stage for responses to be cached.
CachingEnabled bool
// Specifies whether data trace logging is enabled for this method, which affects
// the log entries pushed to Amazon CloudWatch Logs. This can be useful to
// troubleshoot APIs, but can result in logging sensitive data. We recommend that
// you don't enable this option for production APIs.
DataTraceEnabled bool
// Specifies the logging level for this method, which affects the log entries
// pushed to Amazon CloudWatch Logs. Valid values are OFF , ERROR , and INFO .
// Choose ERROR to write only error-level entries to CloudWatch Logs, or choose
// INFO to include all ERROR events as well as extra informational events.
LoggingLevel *string
// Specifies whether Amazon CloudWatch metrics are enabled for this method.
MetricsEnabled bool
// Specifies whether authorization is required for a cache invalidation request.
RequireAuthorizationForCacheControl bool
// Specifies the throttling burst limit.
ThrottlingBurstLimit int32
// Specifies the throttling rate limit.
ThrottlingRateLimit float64
// Specifies how to handle unauthorized requests for cache invalidation.
UnauthorizedCacheControlHeaderStrategy UnauthorizedCacheControlHeaderStrategy
noSmithyDocumentSerde
}
// Represents a summary of a Method resource, given a particular date and time.
type MethodSnapshot struct {
// Specifies whether the method requires a valid ApiKey.
ApiKeyRequired bool
// The method's authorization type. Valid values are NONE for open access, AWS_IAM
// for using AWS IAM permissions, CUSTOM for using a custom authorizer, or
// COGNITO_USER_POOLS for using a Cognito user pool.
AuthorizationType *string
noSmithyDocumentSerde
}
// Represents the data structure of a method's request or response payload.
type Model struct {
// The content-type for the model.
ContentType *string
// The description of the model.
Description *string
// The identifier for the model resource.
Id *string
// The name of the model. Must be an alphanumeric string.
Name *string
// The schema for the model. For application/json models, this should be JSON
// schema draft 4 model. Do not include "\*/" characters in the description of any
// properties because such "\*/" characters may be interpreted as the closing
// marker for comments in some languages, such as Java or JavaScript, causing the
// installation of your API's SDK generated by API Gateway to fail.
Schema *string
noSmithyDocumentSerde
}
// The mutual TLS authentication configuration for a custom domain name. If
// specified, API Gateway performs two-way authentication between the client and
// the server. Clients must present a trusted certificate to access your API.
type MutualTlsAuthentication struct {
// An Amazon S3 URL that specifies the truststore for mutual TLS authentication,
// for example s3://bucket-name/key-name . The truststore can contain certificates
// from public or private certificate authorities. To update the truststore, upload
// a new version to S3, and then update your custom domain name to use the new
// version. To update the truststore, you must have permissions to access the S3
// object.
TruststoreUri *string
// The version of the S3 object that contains your truststore. To specify a
// version, you must have versioning enabled for the S3 bucket.
TruststoreVersion *string
// A list of warnings that API Gateway returns while processing your truststore.
// Invalid certificates produce warnings. Mutual TLS is still enabled, but some
// clients might not be able to access your API. To resolve warnings, upload a new
// truststore to S3, and then update you domain name to use the new version.
TruststoreWarnings []string
noSmithyDocumentSerde
}
// The mutual TLS authentication configuration for a custom domain name. If
// specified, API Gateway performs two-way authentication between the client and
// the server. Clients must present a trusted certificate to access your API.
type MutualTlsAuthenticationInput struct {
// An Amazon S3 URL that specifies the truststore for mutual TLS authentication,
// for example s3://bucket-name/key-name . The truststore can contain certificates
// from public or private certificate authorities. To update the truststore, upload
// a new version to S3, and then update your custom domain name to use the new
// version. To update the truststore, you must have permissions to access the S3
// object.
TruststoreUri *string
// The version of the S3 object that contains your truststore. To specify a
// version, you must have versioning enabled for the S3 bucket
TruststoreVersion *string
noSmithyDocumentSerde
}
// For more information about supported patch operations, see Patch Operations (https://docs.aws.amazon.com/apigateway/latest/api/patch-operations.html)
// .
type PatchOperation struct {
// The copy update operation's source as identified by a JSON-Pointer value
// referencing the location within the targeted resource to copy the value from.
// For example, to promote a canary deployment, you copy the canary deployment ID
// to the affiliated deployment ID by calling a PATCH request on a Stage resource
// with "op":"copy", "from":"/canarySettings/deploymentId" and
// "path":"/deploymentId".
From *string
// An update operation to be performed with this PATCH request. The valid value
// can be add, remove, replace or copy. Not all valid operations are supported for
// a given resource. Support of the operations depends on specific operational
// contexts. Attempts to apply an unsupported operation on a resource will return
// an error message..
Op Op
// The op operation's target, as identified by a JSON Pointer value that
// references a location within the targeted resource. For example, if the target
// resource has an updateable property of {"name":"value"}, the path for this
// property is /name. If the name property value is a JSON object (e.g., {"name":
// {"child/name": "child-value"}}), the path for the child/name property will be
// /name/child~1name. Any slash ("/") character appearing in path names must be
// escaped with "~1", as shown in the example above. Each op operation can have
// only one path associated with it.
Path *string
// The new target value of the update operation. It is applicable for the add or
// replace operation. When using AWS CLI to update a property of a JSON value,
// enclose the JSON object with a pair of single quotes in a Linux shell, e.g.,
// '{"a": ...}'.
Value *string
noSmithyDocumentSerde
}
// Quotas configured for a usage plan.
type QuotaSettings struct {
// The target maximum number of requests that can be made in a given time period.
Limit int32
// The number of requests subtracted from the given limit in the initial time
// period.
Offset int32
// The time period in which the limit applies. Valid values are "DAY", "WEEK" or
// "MONTH".
Period QuotaPeriodType
noSmithyDocumentSerde
}
// A set of validation rules for incoming Method requests.
type RequestValidator struct {
// The identifier of this RequestValidator.
Id *string
// The name of this RequestValidator
Name *string
// A Boolean flag to indicate whether to validate a request body according to the
// configured Model schema.
ValidateRequestBody bool
// A Boolean flag to indicate whether to validate request parameters ( true ) or
// not ( false ).
ValidateRequestParameters bool
noSmithyDocumentSerde
}
// Represents an API resource.
type Resource struct {
// The resource's identifier.
Id *string
// The parent resource's identifier.
ParentId *string
// The full path for this resource.
Path *string
// The last path segment for this resource.
PathPart *string
// Gets an API resource's method of a given HTTP verb.
ResourceMethods map[string]Method
noSmithyDocumentSerde
}
// Represents a REST API.
type RestApi struct {
// The source of the API key for metering requests according to a usage plan.
// Valid values are: > HEADER to read the API key from the X-API-Key header of a
// request. AUTHORIZER to read the API key from the UsageIdentifierKey from a
// custom authorizer.
ApiKeySource ApiKeySourceType
// The list of binary media types supported by the RestApi. By default, the
// RestApi supports only UTF-8-encoded text payloads.
BinaryMediaTypes []string
// The timestamp when the API was created.
CreatedDate *time.Time
// The API's description.
Description *string
// Specifies whether clients can invoke your API by using the default execute-api
// endpoint. By default, clients can invoke your API with the default
// https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that