Add timeStamp to RecordMetricAsync, improve permissions handling and API uniformity, make a few params optional.