# Get Sleep Data
TIP
This guide assumes that your app has already been authorized and the snippet of code that I will show you can access to the Fitbit user id, here called userID, the Fitbit OAuth 2.0 client ID, here called clientID, and the Fitbit client secret, here called clientSecret.
Sleep data (opens new window) contain details about a user's activity. In Fitbitter, a datapoint is expressed by the FitbitSleepData model.
Fitbitter fetches a simplified version of Sleep data (opens new window) as described by Fitbit.
Fitbitter fetches, for each sleep session, a list of FitbitSleepData. Each datapoint describes, with a 30-seconds granularity, if the user is in deep sleep, light sleep, rem, or awake. In particular, an instance of FitbitSleepData has the following fields:
  /// The user encoded id.
  String? userID;
  /// The date of when the sleep session begun.
  DateTime? dateOfSleep;
  /// The date of the data entry.
  DateTime? entryDateTime;
  /// The level of the sleep data (can be light, deep, rem, or wake).
  String? level;
For example:
[
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:38:30.000, level: wake, ), 
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:39:00.000, level: wake, ),
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:39:30.000, level: wake, ), 
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:40:00.000, level: wake, ), 
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:40:30.000, level: wake, ), 
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:41:00.000, level: wake, ), 
    FitbitSleepData(userID: 7ML2XV, dateOfSleep: 2022-05-09 00:00:00.000, entryDateTime: 2022-05-08 22:41:30.000, level: wake, ), 
    ...
]
Information about the user's Sleep data can be obtained in three steps:
# Step 1: Instanciate a manager
First, you need to instanciate a FitbitSleepDataManager
    FitbitSleepDataManager fitbitSleepDataManager = FitbitSleepDataManager(
        clientID: '<OAuth 2.0 Client ID>',
        clientSecret: '<Client Secret>',
    );
# Step 2: Create the request url
Then, you have to create a url object, FitbitSleepAPIURL, that fetches the Sleep data, during the desidered time range. For example:
    FitbitSleepAPIURL fitbitSleepAPIURL = FitbitSleepAPIURL.day(
                                    date: DateTime.now(),
                                    fitbitCredentials: fitbitCredentials,
                                  );
For the complete list of possible FitbitSleepAPIURL, defined for different time ranges, please refer to the API Doc (opens new window).
# Step 3: Get the data
Finally you can obtain the Sleep data using
    List<FitbitSleepAPIURL> fitbitSleepAPIURL = await fitbitSleepDataManager.fetch(fitbitSleepAPIURL);