async def METHOD_NAME(
    client, bucket, collection, max_approvals, min_timestamp
):
    """
    Return information about the latest approvals for the specified collection.
    Example:
    ::
        [
          {
            "date": "2019-03-06T17:36:51.912770",
            "timestamp": 18796857456,
            "by": "ldap:jane@mozilla.com",
            "changes": {"create": 1, "update": 2}
          },
          {
            "date": "2019-01-29T19:05:30.332373",
            "timestamp": 16798709898,
            "by": "account:user",
            "changes": {"create": 15}
          },
          {
            "date": "2019-01-28T22:07:58.439230",
            "timestamp": 15654448770,
            "by": "ldap:tarzan@mozilla.com",
            "changes": {"create": 2, "delete": 1}
          }
        ]
    """
    # Start by fetching the latest approvals for this collection.
    history = await client.get_history(
        bucket=bucket,
        **{
            "resource_name": "collection",
            "target.data.id": collection,
            "target.data.status": "to-sign",
            "_sort": "-last_modified",
            "_since": min_timestamp,
            "_limit": max_approvals + 1,
        },
    )
    # Now fetch the number of changes for each approval.
    # If there was only one approval, add a fake previous.
    if len(history) == 1:
        history.append({"last_modified": 0})
    # For each pair (previous, current) fetch the number of history entries
    # on records.
    results = []
    for i, current in enumerate(history[:-1]):
        previous = history[i + 1]
        after = previous["last_modified"]
        before = current["last_modified"]
        # We are interested in the number of history entries between two approvals. The
        # approval timestamps are part of the history object data (ie. `target` field)
        # and are not indexed on the server. In order to reduce the cost of the request,
        # we will prefilter the history entries by their own timestamp,
        # assuming the history entries were created within 1sec after the target object
        # modification (usually it's a few milliseconds).
        changes = await client.get_history(
            bucket=bucket,
            **{
                "resource_name": "record",
                "collection_id": collection,
                "_since": after,
                "_before": before + 1000,
                "gt_target.data.last_modified": after,
                "lt_target.data.last_modified": before,
            },
        )
        by_action = Counter()
        for change in changes:
            by_action[change["action"]] += 1
        results.append(
            {
                "timestamp": current["last_modified"],
                "datetime": current["date"],
                "by": current["user_id"],
                "changes": dict(by_action),
            }
        )
    return results