def validate(D, detailed=True):
    """
    Use the Validator API for lipd.net to validate all LiPD files in the LiPD Library.
    Display the PASS/FAIL results. Display detailed results if the option is chosen.

    :param dict D: Metadata (single or multiple datasets)
    :param bool detailed: Show or hide the detailed results of each LiPD file. Shows warnings and errors
    :return none:
    """
    start = clock()
    print("\n")
    # Fetch new results by calling lipd.net/api/validator (costly, may take a while)
    print("Fetching results from validator at lipd.net/validator... this may take a few moments.\n")
    try:
        results = []
        # Get the validator-formatted data for each dataset.
        if "paleoData" in D:
            _api_data = get_validator_format(D)
            # A list of lists of LiPD-content metadata
            results.append(call_validator_api(D["dataSetName"], _api_data))
        else:
            for dsn, dat in D.items():
                _api_data = get_validator_format(dat)
                # A list of lists of LiPD-content metadata
                results.append(call_validator_api(dsn, _api_data))
        display_results(results, detailed)
    except Exception as e:
        print("Error: validate: {}".format(e))

    end = clock()
    logger_benchmark.info(log_benchmark("validate", start, end))
    return