'Delete an existing dataset in the cluster configuration.
:param unicode dataset_id: The unique identifier of the dataset.  This
is a string giving a UUID (per RFC 4122).
:return: A ``dict`` describing the dataset which has been marked
as deleted in the cluster configuration or giving error
information if this is not possible.'

@app.route('/configuration/datasets/<dataset_id>', methods=['DELETE'])
@user_documentation(u"\n                                Deletion    is    idempotent:    deleting    a    dataset    multiple    times    will\n                                result    in    the    same    response.\n\n                                Supports    ``X-If-Configuration-Matches``    header    in    the    request    to\n                                ensure    deletion    only    happens    if    the    configuration    hasn't    changed.\n                                ", header=u'Delete    an    existing    dataset', examples=[u'delete    dataset', u'delete    dataset    with    unknown    dataset    id'], section=u'dataset')
@_if_configuration_matches
@structured(inputSchema={}, outputSchema={'$ref': '/v1/endpoints.json#/definitions/configuration_datasets'}, schema_store=SCHEMAS)
def delete_dataset(self, dataset_id):

    deployment = self.persistence_service.get()
    (_, origin_node) = _find_manifestation_and_node(deployment, dataset_id)
    new_node = origin_node.transform(('manifestations', dataset_id, 'dataset', 'deleted'), True)
    deployment = deployment.update_node(new_node)
    saving = self.persistence_service.save(deployment)
    def saved(ignored):
        result = api_dataset_from_dataset_and_node(new_node.manifestations[dataset_id].dataset, new_node.uuid)
        return EndpointResponse(OK, result)
    saving.addCallback(saved)
    return saving
