def put_rest_api(restApiId=None, mode=None, failOnWarnings=None, parameters
    =None, body=None):
    """
    A feature of the Amazon API Gateway control service for updating an existing API with an input of external API definitions. The update can take the form of merging the supplied definition into the existing API or overwriting the existing API.
    See also: AWS API Documentation
    
    
    :example: response = client.put_rest_api(
        restApiId='string',
        mode='merge'|'overwrite',
        failOnWarnings=True|False,
        parameters={
            'string': 'string'
        },
        body=b'bytes'|file
    )
    
    
    :type restApiId: string
    :param restApiId: [REQUIRED]
            The identifier of the RestApi to be updated.
            

    :type mode: string
    :param mode: The mode query parameter to specify the update mode. Valid values are 'merge' and 'overwrite'. By default, the update mode is 'merge'.

    :type failOnWarnings: boolean
    :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 .

    :type parameters: dict
    :param parameters: Custom headers supplied as part of the request.
            (string) --
            (string) --
            

    :type body: bytes or seekable file-like object
    :param body: [REQUIRED]
            The PUT request body containing external API definitions. Currently, only Swagger definition JSON files are supported.
            

    :rtype: dict
    :return: {
        'id': 'string',
        'name': 'string',
        'description': 'string',
        'createdDate': datetime(2015, 1, 1),
        'version': 'string',
        'warnings': [
            'string',
        ],
        'binaryMediaTypes': [
            'string',
        ]
    }
    
    
    :returns: 
    (string) --
    
    """
    pass
