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