All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.awsconnector.inputs.AwsApiGatewayRestApiPropertiesArgs Maven / Gradle / Ivy

There is a newer version: 2.72.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.awsconnector.inputs;

import com.pulumi.azurenative.awsconnector.inputs.EndpointConfigurationArgs;
import com.pulumi.azurenative.awsconnector.inputs.S3LocationArgs;
import com.pulumi.azurenative.awsconnector.inputs.TagArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.Object;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Definition of awsApiGatewayRestApi
 * 
 */
public final class AwsApiGatewayRestApiPropertiesArgs extends com.pulumi.resources.ResourceArgs {

    public static final AwsApiGatewayRestApiPropertiesArgs Empty = new AwsApiGatewayRestApiPropertiesArgs();

    /**
     * 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.
     * 
     */
    @Import(name="apiKeySourceType")
    private @Nullable Output apiKeySourceType;

    /**
     * @return 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.
     * 
     */
    public Optional> apiKeySourceType() {
        return Optional.ofNullable(this.apiKeySourceType);
    }

    /**
     * The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
     * 
     */
    @Import(name="binaryMediaTypes")
    private @Nullable Output> binaryMediaTypes;

    /**
     * @return The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
     * 
     */
    public Optional>> binaryMediaTypes() {
        return Optional.ofNullable(this.binaryMediaTypes);
    }

    /**
     * An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.
     * 
     */
    @Import(name="body")
    private @Nullable Output body;

    /**
     * @return An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.
     * 
     */
    public Optional> body() {
        return Optional.ofNullable(this.body);
    }

    /**
     * The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format. ``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML. On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.
     * 
     */
    @Import(name="bodyS3Location")
    private @Nullable Output bodyS3Location;

    /**
     * @return The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format. ``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML. On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.
     * 
     */
    public Optional> bodyS3Location() {
        return Optional.ofNullable(this.bodyS3Location);
    }

    /**
     * The ID of the RestApi that you want to clone from.
     * 
     */
    @Import(name="cloneFrom")
    private @Nullable Output cloneFrom;

    /**
     * @return The ID of the RestApi that you want to clone from.
     * 
     */
    public Optional> cloneFrom() {
        return Optional.ofNullable(this.cloneFrom);
    }

    /**
     * The description of the RestApi.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return The description of the RestApi.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * 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 clients use a custom domain name to invoke your API, disable the default endpoint
     * 
     */
    @Import(name="disableExecuteApiEndpoint")
    private @Nullable Output disableExecuteApiEndpoint;

    /**
     * @return 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 clients use a custom domain name to invoke your API, disable the default endpoint
     * 
     */
    public Optional> disableExecuteApiEndpoint() {
        return Optional.ofNullable(this.disableExecuteApiEndpoint);
    }

    /**
     * A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property. The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API. ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.
     * 
     */
    @Import(name="endpointConfiguration")
    private @Nullable Output endpointConfiguration;

    /**
     * @return A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property. The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API. ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.
     * 
     */
    public Optional> endpointConfiguration() {
        return Optional.ofNullable(this.endpointConfiguration);
    }

    /**
     * A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.
     * 
     */
    @Import(name="failOnWarnings")
    private @Nullable Output failOnWarnings;

    /**
     * @return A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.
     * 
     */
    public Optional> failOnWarnings() {
        return Optional.ofNullable(this.failOnWarnings);
    }

    /**
     * A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.
     * 
     */
    @Import(name="minimumCompressionSize")
    private @Nullable Output minimumCompressionSize;

    /**
     * @return A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.
     * 
     */
    public Optional> minimumCompressionSize() {
        return Optional.ofNullable(this.minimumCompressionSize);
    }

    /**
     * This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates. Valid values are ``overwrite`` or ``merge``.  For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.  For ``merge``, the new API definition is merged with the existing API. If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API.  Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.
     * 
     */
    @Import(name="mode")
    private @Nullable Output mode;

    /**
     * @return This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates. Valid values are ``overwrite`` or ``merge``.  For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.  For ``merge``, the new API definition is merged with the existing API. If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API.  Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.
     * 
     */
    public Optional> mode() {
        return Optional.ofNullable(this.mode);
    }

    /**
     * The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.
     * 
     */
    @Import(name="parameters")
    private @Nullable Output> parameters;

    /**
     * @return Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.
     * 
     */
    public Optional>> parameters() {
        return Optional.ofNullable(this.parameters);
    }

    /**
     * A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``''`` as delimiter and values of ``'execute-api:/'`` and ``'*'``.
     * 
     */
    @Import(name="policy")
    private @Nullable Output policy;

    /**
     * @return A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``''`` as delimiter and values of ``'execute-api:/'`` and ``'*'``.
     * 
     */
    public Optional> policy() {
        return Optional.ofNullable(this.policy);
    }

    /**
     * Property restApiId
     * 
     */
    @Import(name="restApiId")
    private @Nullable Output restApiId;

    /**
     * @return Property restApiId
     * 
     */
    public Optional> restApiId() {
        return Optional.ofNullable(this.restApiId);
    }

    /**
     * Property rootResourceId
     * 
     */
    @Import(name="rootResourceId")
    private @Nullable Output rootResourceId;

    /**
     * @return Property rootResourceId
     * 
     */
    public Optional> rootResourceId() {
        return Optional.ofNullable(this.rootResourceId);
    }

    /**
     * The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private AwsApiGatewayRestApiPropertiesArgs() {}

    private AwsApiGatewayRestApiPropertiesArgs(AwsApiGatewayRestApiPropertiesArgs $) {
        this.apiKeySourceType = $.apiKeySourceType;
        this.binaryMediaTypes = $.binaryMediaTypes;
        this.body = $.body;
        this.bodyS3Location = $.bodyS3Location;
        this.cloneFrom = $.cloneFrom;
        this.description = $.description;
        this.disableExecuteApiEndpoint = $.disableExecuteApiEndpoint;
        this.endpointConfiguration = $.endpointConfiguration;
        this.failOnWarnings = $.failOnWarnings;
        this.minimumCompressionSize = $.minimumCompressionSize;
        this.mode = $.mode;
        this.name = $.name;
        this.parameters = $.parameters;
        this.policy = $.policy;
        this.restApiId = $.restApiId;
        this.rootResourceId = $.rootResourceId;
        this.tags = $.tags;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(AwsApiGatewayRestApiPropertiesArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private AwsApiGatewayRestApiPropertiesArgs $;

        public Builder() {
            $ = new AwsApiGatewayRestApiPropertiesArgs();
        }

        public Builder(AwsApiGatewayRestApiPropertiesArgs defaults) {
            $ = new AwsApiGatewayRestApiPropertiesArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param apiKeySourceType 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.
         * 
         * @return builder
         * 
         */
        public Builder apiKeySourceType(@Nullable Output apiKeySourceType) {
            $.apiKeySourceType = apiKeySourceType;
            return this;
        }

        /**
         * @param apiKeySourceType 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.
         * 
         * @return builder
         * 
         */
        public Builder apiKeySourceType(String apiKeySourceType) {
            return apiKeySourceType(Output.of(apiKeySourceType));
        }

        /**
         * @param binaryMediaTypes The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
         * 
         * @return builder
         * 
         */
        public Builder binaryMediaTypes(@Nullable Output> binaryMediaTypes) {
            $.binaryMediaTypes = binaryMediaTypes;
            return this;
        }

        /**
         * @param binaryMediaTypes The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
         * 
         * @return builder
         * 
         */
        public Builder binaryMediaTypes(List binaryMediaTypes) {
            return binaryMediaTypes(Output.of(binaryMediaTypes));
        }

        /**
         * @param binaryMediaTypes The list of binary media types supported by the RestApi. By default, the RestApi supports only UTF-8-encoded text payloads.
         * 
         * @return builder
         * 
         */
        public Builder binaryMediaTypes(String... binaryMediaTypes) {
            return binaryMediaTypes(List.of(binaryMediaTypes));
        }

        /**
         * @param body An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.
         * 
         * @return builder
         * 
         */
        public Builder body(@Nullable Output body) {
            $.body = body;
            return this;
        }

        /**
         * @param body An OpenAPI specification that defines a set of RESTful APIs in JSON format. For YAML templates, you can also provide the specification in YAML format.
         * 
         * @return builder
         * 
         */
        public Builder body(Object body) {
            return body(Output.of(body));
        }

        /**
         * @param bodyS3Location The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format. ``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML. On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.
         * 
         * @return builder
         * 
         */
        public Builder bodyS3Location(@Nullable Output bodyS3Location) {
            $.bodyS3Location = bodyS3Location;
            return this;
        }

        /**
         * @param bodyS3Location The Amazon Simple Storage Service (Amazon S3) location that points to an OpenAPI file, which defines a set of RESTful APIs in JSON or YAML format. ``S3Location`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource that specifies the Amazon S3 location of a OpenAPI (formerly Swagger) file that defines a set of RESTful APIs in JSON or YAML. On January 1, 2016, the Swagger Specification was donated to the [OpenAPI initiative](https://docs.aws.amazon.com/https://www.openapis.org/), becoming the foundation of the OpenAPI Specification.
         * 
         * @return builder
         * 
         */
        public Builder bodyS3Location(S3LocationArgs bodyS3Location) {
            return bodyS3Location(Output.of(bodyS3Location));
        }

        /**
         * @param cloneFrom The ID of the RestApi that you want to clone from.
         * 
         * @return builder
         * 
         */
        public Builder cloneFrom(@Nullable Output cloneFrom) {
            $.cloneFrom = cloneFrom;
            return this;
        }

        /**
         * @param cloneFrom The ID of the RestApi that you want to clone from.
         * 
         * @return builder
         * 
         */
        public Builder cloneFrom(String cloneFrom) {
            return cloneFrom(Output.of(cloneFrom));
        }

        /**
         * @param description The description of the RestApi.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description The description of the RestApi.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param disableExecuteApiEndpoint 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 clients use a custom domain name to invoke your API, disable the default endpoint
         * 
         * @return builder
         * 
         */
        public Builder disableExecuteApiEndpoint(@Nullable Output disableExecuteApiEndpoint) {
            $.disableExecuteApiEndpoint = disableExecuteApiEndpoint;
            return this;
        }

        /**
         * @param disableExecuteApiEndpoint 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 clients use a custom domain name to invoke your API, disable the default endpoint
         * 
         * @return builder
         * 
         */
        public Builder disableExecuteApiEndpoint(Boolean disableExecuteApiEndpoint) {
            return disableExecuteApiEndpoint(Output.of(disableExecuteApiEndpoint));
        }

        /**
         * @param endpointConfiguration A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property. The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API. ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.
         * 
         * @return builder
         * 
         */
        public Builder endpointConfiguration(@Nullable Output endpointConfiguration) {
            $.endpointConfiguration = endpointConfiguration;
            return this;
        }

        /**
         * @param endpointConfiguration A list of the endpoint types of the API. Use this property when creating an API. When importing an existing API, specify the endpoint configuration types using the ``Parameters`` property. The ``EndpointConfiguration`` property type specifies the endpoint types of a REST API. ``EndpointConfiguration`` is a property of the [AWS::ApiGateway::RestApi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-restapi.html) resource.
         * 
         * @return builder
         * 
         */
        public Builder endpointConfiguration(EndpointConfigurationArgs endpointConfiguration) {
            return endpointConfiguration(Output.of(endpointConfiguration));
        }

        /**
         * @param failOnWarnings A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.
         * 
         * @return builder
         * 
         */
        public Builder failOnWarnings(@Nullable Output failOnWarnings) {
            $.failOnWarnings = failOnWarnings;
            return this;
        }

        /**
         * @param failOnWarnings A query parameter to indicate whether to rollback the API update (``true``) or not (``false``) when a warning is encountered. The default value is ``false``.
         * 
         * @return builder
         * 
         */
        public Builder failOnWarnings(Boolean failOnWarnings) {
            return failOnWarnings(Output.of(failOnWarnings));
        }

        /**
         * @param minimumCompressionSize A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.
         * 
         * @return builder
         * 
         */
        public Builder minimumCompressionSize(@Nullable Output minimumCompressionSize) {
            $.minimumCompressionSize = minimumCompressionSize;
            return this;
        }

        /**
         * @param minimumCompressionSize A nullable integer that is used to enable compression (with non-negative between 0 and 10485760 (10M) bytes, inclusive) or disable compression (with a null value) on an API. When compression is enabled, compression or decompression is not applied on the payload if the payload size is smaller than this value. Setting it to zero allows compression for any payload size.
         * 
         * @return builder
         * 
         */
        public Builder minimumCompressionSize(Integer minimumCompressionSize) {
            return minimumCompressionSize(Output.of(minimumCompressionSize));
        }

        /**
         * @param mode This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates. Valid values are ``overwrite`` or ``merge``.  For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.  For ``merge``, the new API definition is merged with the existing API. If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API.  Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.
         * 
         * @return builder
         * 
         */
        public Builder mode(@Nullable Output mode) {
            $.mode = mode;
            return this;
        }

        /**
         * @param mode This property applies only when you use OpenAPI to define your REST API. The ``Mode`` determines how API Gateway handles resource updates. Valid values are ``overwrite`` or ``merge``.  For ``overwrite``, the new API definition replaces the existing one. The existing API identifier remains unchanged.  For ``merge``, the new API definition is merged with the existing API. If you don't specify this property, a default value is chosen. For REST APIs created before March 29, 2021, the default is ``overwrite``. For REST APIs created after March 29, 2021, the new API definition takes precedence, but any container types such as endpoint configurations and binary media types are merged with the existing API.  Use the default mode to define top-level ``RestApi`` properties in addition to using OpenAPI. Generally, it's preferred to use API Gateway's OpenAPI extensions to model these properties.
         * 
         * @return builder
         * 
         */
        public Builder mode(String mode) {
            return mode(Output.of(mode));
        }

        /**
         * @param name The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the RestApi. A name is required if the REST API is not based on an OpenAPI specification.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param parameters Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.
         * 
         * @return builder
         * 
         */
        public Builder parameters(@Nullable Output> parameters) {
            $.parameters = parameters;
            return this;
        }

        /**
         * @param parameters Custom header parameters as part of the request. For example, to exclude DocumentationParts from an imported API, set ``ignore=documentation`` as a ``parameters`` value, as in the AWS CLI command of ``aws apigateway import-rest-api --parameters ignore=documentation --body 'file:///path/to/imported-api-body.json'``.
         * 
         * @return builder
         * 
         */
        public Builder parameters(Map parameters) {
            return parameters(Output.of(parameters));
        }

        /**
         * @param policy A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``''`` as delimiter and values of ``'execute-api:/'`` and ``'*'``.
         * 
         * @return builder
         * 
         */
        public Builder policy(@Nullable Output policy) {
            $.policy = policy;
            return this;
        }

        /**
         * @param policy A policy document that contains the permissions for the ``RestApi`` resource. To set the ARN for the policy, use the ``!Join`` intrinsic function with ``''`` as delimiter and values of ``'execute-api:/'`` and ``'*'``.
         * 
         * @return builder
         * 
         */
        public Builder policy(String policy) {
            return policy(Output.of(policy));
        }

        /**
         * @param restApiId Property restApiId
         * 
         * @return builder
         * 
         */
        public Builder restApiId(@Nullable Output restApiId) {
            $.restApiId = restApiId;
            return this;
        }

        /**
         * @param restApiId Property restApiId
         * 
         * @return builder
         * 
         */
        public Builder restApiId(String restApiId) {
            return restApiId(Output.of(restApiId));
        }

        /**
         * @param rootResourceId Property rootResourceId
         * 
         * @return builder
         * 
         */
        public Builder rootResourceId(@Nullable Output rootResourceId) {
            $.rootResourceId = rootResourceId;
            return this;
        }

        /**
         * @param rootResourceId Property rootResourceId
         * 
         * @return builder
         * 
         */
        public Builder rootResourceId(String rootResourceId) {
            return rootResourceId(Output.of(rootResourceId));
        }

        /**
         * @param tags The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder tags(List tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tags The key-value map of strings. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with ``aws:``. The tag value can be up to 256 characters.
         * 
         * @return builder
         * 
         */
        public Builder tags(TagArgs... tags) {
            return tags(List.of(tags));
        }

        public AwsApiGatewayRestApiPropertiesArgs build() {
            return $;
        }
    }

}