1. Create Reports

  • Asleep.createReports :Generate Reports to get results for sleep tracking.
fun createReports(asleepConfig: AsleepConfig?): Reports?
Parameter NameTypeDescription
asleepConfigAsleepConfig?Enter the set value received by the callback in the initasleepconfig call

2. Get Single Report

  • Asleep.Reports.getReport :Bring sessionId Report.
fun getReport(sessionId: String, reportListener: ReportListener)
Parameter NameTypeDescription
sessionIdStringWhen Sleep Tracking stops, sessionId value
reportListenerReportListenerReport Callback listener
  • Asleep.Reports.ReportListener
interface ReportListener {
    fun onSuccess(report: Report?)
    fun onFail(errorCode: Int, detail: String)
}
  • If success, onSuccess() is called.
data class Report(
    val timezone: String,
    val peculiarities: List<String>,
    val missingDataRatio: Float,
    val session: Session?,
    val stat: Stat?
)

data class Session(
    val id: String,  
    val state: String,
    val startTime: String,
    val endTime: String?,
    val sleepStages: List<Int>?,  
    val breathStages: List<Int>?,
    val createdTimezone: String,
    val unexpectedEndTime: String?
)

data class Stat(
    val sleepEfficiency: Float?,
    val sleepLatency: Int?,
    val sleepTime: String?,
    val wakeupLatency: Int?,
    val wakeTime: String?,
    val timeInWake: Int?,
    val timeInSleepPeriod: Int?,
    val timeInSleep: Int?,  
    val timeInBed: Int?,
    val timeInRem: Int?,  
    val timeInLight: Int?,  
    val timeInDeep: Int?,
    val timeInStableBreath: Int?,
    val timeInUnstableBreath: Int?,
    val wakeRatio: Float?,  
    val sleepRatio: Float?,
    val remRatio: Float?,    
    val lightRatio: Float?,  
    val deepRatio: Float?,
    val stableBreathRatio: Float?,
    val unstableBreathRatio: Float?,  
    val breathingPattern: String?,
    val breathingIndex: Float?,
    val sleepCycle: Int?,
    val sleepCycleCount: Int?,
    val wasoCount: Int?,
    val longestWaso: Int?,
    val unstableBreathCount: Int?,
    val lightLatency: Int?,
    val remLatency: Int?,
    val deepLatency: Int?
    val sleepIndex: Int?,
    val timeInSnoring: Int?,
    val timeInNoSnoring: Int?,
    val snoringRatio: Float?,
    val noSnoringRatio: Float?,
    val snoringCount: Int?,
    val sleepCycleTime: List<String>?
)
Parameter NameTypeDescriptionVersion
timezoneStringTimezone (Timezone List)
peculiaritiesListA field for describing any specific details or peculiarities of the sleep session. This field can include multiple labels below.

IN_PROGRESS: If the session is OPEN, CLOSED
NEVER_SLEPT: If it is determined that there was no sleep at all during the session measurement time
TOO_SHORT_FOR_ANALYSIS: When the measurement time is too short to conduct a valid analysis (currently less than 20 minutes)
TOO_LONG_FOR_ANALYSIS: Analysis has been conducted successfully, but the session measurement time is excessively long, making it difficult to trust (currently exceeding 24 hours)
TOO_MANY_DEFECTS_IN_SLEEP_STAGES: When the error rate is high due to factors like missing audio uploads, resulting in insufficient sleep analysis results.
NO_BREATHING_STABILITY: When the customer's contract conditions do not support breathing stability analysis.
NO_REALTIME_POLLING: When, according to the customer's contract, real-time access to sleep information is not available.
missingDataRatioFloatThe error rate in sleep analysis results due to reasons such as missing audio uploads
sessionSession?Session analysis information
statStat?Analysis statistical information
idStringSession Id
stateStringStatus of Session
OPEN: An in-progress session, with audio uploads available
CLOSED: The session terminated by sending an end session request. Unable to upload audio files. Analysis of uploaded sleep audio is still in progress
'COMPLETE: All sleep analysis completed after the end of the session
startTimeStringSession start time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
endTimeString?Session end time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
sleepStagesList<Int>?Sleep Stages List
breathStagesList<Int>?Breath Stability Stages List
createdTimezoneStringTimezone of session creation (Timezone List)v2.2.0<=SDK
unexpectedEndTimeString?Abnormal session termination time. This assign the next initAsleepConfig time.v2.2.0<=SDK
sleepEfficiencyFloat?The percentage of time you actually slept during sleep measurement
sleepLatencyInt?time it took to fall asleep
sleepTimeString?The time it takes to fall asleep after the start of sleep staging
wakeupLatencyInt?The time it takes to wake up and end your sleep measurement
wakeTimeString?wake up time
timeInWakeInt?wake during sleep
timeInSleepPeriodInt?During sleep measurement time, excluding the time it took from the start of the sleep measurement to fall asleep and the time it took from the wake to the end of the sleep measurement
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepInt?During sleep measurement time, the time you were actually sleeping
This time is divided into three stages: deep, light, and rem
timeInBedInt?The time from the start of the sleep measurement to the end of the sleep measurement
timeInRemInt?Total time the sleep phase progressed to rem
timeInLightInt?Total time the sleep phase progressed to light
timeInDeepInt?Total time the sleep phase progressed to deep
timeInStableBreathInt?Total time in the breathing stable section
timeInUnstableBreathInt?Total time of breath instability
wakeRatioFloat?Rate of waking time in the middle during sleep stage
sleepRatioFloat?During sleep stage, sleep ratio, not wake
remRatioFloat?Rate of rem sleep during sleep stage
lightRatioFloat?Rate of light sleep during sleep stage
deepRatioFloat?Rate of deep sleep during sleep stage
stableBreathRatioFloat?The percentage of time that was a breathing stable section during the sleep stage
unstableBreathRatioFloat?The percentage of time during the sleep phase that there was a breathing instability section
breathingPatternString?Breathing Instability Level

STABLE_BREATH: stable
MILDLY_UNSTABLE_BREATH: mildly unstable
MODERTATELY_UNSTABLE_BREATH: moderately unstable
SEVERELY_UNSTABLE_BREATH: severely unstable
breathingIndexFloat?Values for determining respiratory instability levels
sleepCycleInt?The average duration of one sleep cycle.v2.2.0<=SDK
sleepCycleCountInt?The number of sleep cycles.v2.2.0<=SDK
wasoCountInt?The number of times 'wake' occurred during the sleep periodv2.2.0<=SDK
longestWasoInt?The duration of the longest 'wake' during the sleep periodv2.2.0<=SDK
unstableBreathCountInt?The number of times unstable breathing occurred.v2.2.0<=SDK
lightLatencyInt?The time it takes to the first Light after the start of sleep.v2.2.0<=SDK
remLatencyInt?The time it takes to the first REM after the start of sleep.v2.2.0<=SDK
deepLatencyInt?The time it takes to the first Deep after the start of sleep.v2.2.0<=SDK
sleepIndexInt?The metric that comprehensively represents sleep quality, defined by learning from the distribution of sleep datav2.3.0<=SDK
timeInSnoringInt?Total time in the breathing stable section2.4.0<=SDK
timeInNoSnoringInt?2.4.0<=SDK
snoringRatioFloat?2.4.0<=SDK
noSnoringRatioFloat?2.4.0<=SDK
snoringCountInt?2.4.0<=SDK
sleepCycleTimeList?2.4.0<=SDK
  • If failure, onFail() is called.
Parameter NameTypeDescription
errorCodeIntSee AsleepErrorCode
detailStringerrorCode Message

3. Get Multiple Reports

  • Asleep.Reports.getReports :Gets a list of Report that are within the range of the date you entered.
fun getReports(
    fromDate: String, 
  	toDate: String, 
  	orderBy: String = "DESC", 
  	offset: Int = 0, 
  	limit: Int = 20, 
  	reportsListener: ReportsListener?)
    
Parameter NameTypeDescription
fromDateString (YYYY-MM-DD)View start date
toDateString (YYYY-MM-DD)View last date
orderBy = "DESC"StringDESC: descending order, ASC: ascending order
offset = 0Intnumber of skipped Report
limit = 20Intmax number of Report (0~100)
reportsListenerReportsListener?Report list callback listener
  • Asleep.Reports.ReportsListener
interface ReportsListener {
    fun onSuccess(reports: List<SleepSession>?)
    fun onFail(errorCode: Int, detail: String)
}
  • If success, onSuccess() is called.
data class SleepSession(
    val sessionId: String?,
    val lastReceivedSeqNum: Int?,
    val sessionEndTime: String?,  
    val sessionStartTime: String?,
    val state: String?,
    val timeInBed: Int?,
    val createdTimezone: String,
    val unexpectedEndTime: String?
)
Parameter NameTypeDescriptionVersion
sessionIdString?Sleep session ID
lastReceivedSeqNumInt?The sequence number of the last uploaded audio file
sessionEndTimeString?Session end time
sessionStartTimeString?Session start time
stateString?Sleep session state (OPEN, CLOSED or COMPLETE)
timeInBedInt?The time from the start of the sleep measurement to the end of the sleep measurement
createdTimezoneStringTimezone of session creation (Timezone List)v2.2.0<=SDK
unexpectedEndTimeString?Abnormal session termination time. This assign the next initAsleepConfig time.v2.2.0<=SDK
  • When getReport() is called with a sessionId, it acquires a comprehensive report.
  • If failure, onFail() is called.
Parameter NameTypeDescription
errorCodeIntSee AsleepErrorCode
detailStringerrorCode Message

4. Average-stats

  • Available from v2.3.0
  • Asleep.Reports.getAverageReport
  • You can check the average sleep metrics for a specific period of time.
fun getAverageReport(fromDate: String, toDate: String, averageReportListener: AverageReportListener?)
Parameter NameTypeDescription
fromDateStringThe starting time for the period you want to check the average
toDateStringThe ending time for the period you want to check the average
averageReportListenerAverageReportListenerAverage Report callback listener
  • Asleep.Reports.AverageReportListener
interface AverageReportListener {
    fun onSuccess(averageReport: AverageReport?)
    fun onFail(errorCode: Int, detail: String)
}
  • If success, onSuccess() is called.

AverageReport

data class AverageReport (
    val period: Period,
    val peculiarities: List<String>,
    val averageStats: AverageStats?,
    val neverSleptSessions: List<NeverSleptSessions>,
    val sleptSessions: List<SleptSessions>
)
Parameter NameTypeDescription
periodPeriodTimezone
peculiaritiesListSpecial considerations when calculating the average of sleep sessions
averageStatsAverageStats?An object containing the averages of sleep metrics for "sleptSessions"
neverSleptSessionsListA list of sessions during which it is determined that no sleep occurred at all during the measurement time.
sleptSessionsListA list of sessions during which it is determined that sleep occurred during the measurement time.

Period

data class Period (
    val timezone: String,
    val endDate: String,
    val startDate: String,
)
Parameter NameTypeDescription
timezoneStringrequested timezone
Ex. UTC, Asia/Seoul
startDateStringrequested start date
endDateStringrequested end date

AverageStats

data class AverageStats(
    val startTime: String,
    val endTime: String,
    val sleepTime: String,
    val wakeTime: String,
    val sleepLatency: Int,
    val wakeupLatency: Int,
    val timeInBed: Int,
    val timeInSleepPeriod: Int,
    val timeInSleep: Int,
    val timeInWake: Int,
    val timeInLight: Int?,
    val timeInDeep: Int?,
    val timeInRem: Int?,
    val timeInStableBreath: Int?,
    val timeInUnstableBreath: Int?,
    val sleepEfficiency: Float,
    val wakeRatio: Float,
    val sleepRatio: Float,
    val lightRatio: Float?,
    val deepRatio: Float?,
    val remRatio: Float?,
    val stableBreathRatio: Float?,
    val unstableBreathRatio: Float?,
    val breathingIndex: Float?,
    val wasoCount: Int?,
    val longestWaso: Int?,
    val unstableBreathCount: Int?,
    val sleepCycleCount: Int?,
    val timeInSnoring: Int?,
    val timeInNoSnoring: Int?,
    val snoringRatio: Float?,
    val noSnoringRatio: Float?,
    val snoringCount: Int?
)
Parameter NameTypeDescriptionVersion
startTimeStringSession start time
endTimeStringSession end time
sleepTimeStringThe time it takes to fall asleep after the start of sleep staging
wakeTimeStringWake time
sleepLatencyIntTime to fall asleep
wakeupLatencyIntThe time it takes to wake up and end your sleep measurement
timeInBedIntThe time from the start of the sleep measurement to the end of the sleep measurement
timeInSleepPeriodIntDuring sleep measurement time, excluding the time it took from the start of the sleep measurement to fall asleep and the time it took from the wake to the end of the sleep measurement
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepIntDuring sleep measurement time, the time you were actually sleeping
This time is divided into three stages: deep,light,and rem
timeInWakeIntWake time during sleep
timeInLightInt?Total time the sleep phase progressed to light
timeInDeepInt?Total time the sleep phase progressed to deep
timeInRemInt?Total time the sleep phase progressed to rem
timeInStableBreathInt?Total time in the breathing stable section
timeInUnstableBreathInt?Total time of breath instability
sleepEfficiencyFloat?The percentage of time you actually slept during sleep measurement
wakeRatioFloat?Rate of waking time in the middle during sleep phase
sleepRatioFloat?During sleep stage, sleep ratio, not wake
lightRatioFloat?Rate of light sleep during sleep phase
deepRatioFloat?Rate of deep sleep during sleep phase
remRatioFloat?rem sleep ratio
stableBreathRatioFloat?The percentage of time that was a breathing stable section during the sleep phase
unstableBreathRatioFloat?The percentage of time during the sleep phase that there was a breathing instability section
breathingIndexFloat?Values for determining respiratory instability levels
wasoCountInt?The number of times 'wake' occurred during the sleep period
longestWasoInt?The duration of the longest 'wake' during the sleep period
unstableBreathCountInt?The number of times unstable breathing occurred.
sleepCycleCountInt?The number of sleep cycles.
timeInSnoringInt?2.4.0<=SDK
timeInNoSnoringInt?2.4.0<=SDK
snoringRatioFloat?2.4.0<=SDK
noSnoringRatioFloat?2.4.0<=SDK
snoringCountInt?2.4.0<=SDK

NeverSleptSessions

data class NeverSleptSessions (
    val id: String,
    val startTime: String,
    val endTime: String,
    val completedTime: String
)
Parameter NameTypeDescription
idStringsession id
startTimeStringSession start time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
endTimeStringSession end time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
completedTimeStringTime of session analysis completion
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)

SleptSessions

data class SleptSessions (
    val id: String,
    val createdTimezone: String,
    val startTime: String,
    val endTime: String,
    val completedTime: String,
    val sleepEfficiency: Float,
    val sleepLatency: Int?,
    val sleepTime: String?,
    val wakeupLatency: Int?,
    val wakeTime: String?,
    val lightLatency: Int?,
    val deepLatency: Int?,
    val remLatency: Int?,
    val timeInWake: Int,
    val timeInSleepPeriod: Int,
    val timeInSleep: Int,
    val timeInBed: Int,
    val timeInRem: Int?,
    val timeInLight: Int?,
    val timeInDeep: Int?,
    val timeInStableBreath: Int?,
    val timeInUnstableBreath: Int?,
    val wakeRatio: Float,
    val sleepRatio: Float,
    val remRatio: Float?,
    val lightRatio: Float?,
    val deepRatio: Float?,
    val stableBreathRatio: Float?,
    val unstableBreathRatio: Float?,
    val unstableBreathCount: Int?,
    val breathingPattern: String?,
    val sleepCycle: Int?,
    val sleepCycleCount: Int?,
    val wasoCount: Int?,
    val longestWaso: Int?,
    val timeInSnoring: Int?,
    val timeInNoSnoring: Int?,
    val snoringRatio: Float?,
    val noSnoringRatio: Float?,
    val snoringCount: Int?,
    val breathingIndex: Float?
)
Parameter nameTypeDescriptionVersion
idStringsession id
createdTimezoneStringTimezone of session creation (Timezone List)
startTimeStringSession start time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
endTimeStringSession end time
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
completedTimeStringTime of session analysis completion
Example) 2022-08-01T01:31: 17+09: 00 (If the request timezone is Asia/Seoul)
sleepEfficiencyFloatThe percentage of time you actually slept during sleep measurement
sleepLatencyInt?Time to fall asleep
sleepTimeString?The time it takes to fall asleep after the start of sleep staging
wakeupLatencyInt?The time it takes to wake up and end your sleep measurement
wakeTimeString?Wake time
lightLatencyInt?The time it takes to the first Light after the start of sleep
deepLatencyInt?The time it takes to the first Deep after the start of sleep
remLatencyInt?The time it takes to the first REM after the start of sleep
timeInWakeIntWake time during sleep
timeInSleepPeriodIntDuring sleep measurement time, excluding the time it took from the start of the sleep measurement to fall asleep and the time it took from the wake to the end of the sleep measurement
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepIntDuring sleep measurement time, the time you were actually sleeping
This time is divided into three stages: deep,light,and rem
timeInBedIntThe time from the start of the sleep measurement to the end of the sleep measurement
timeInRemInt?Total time the sleep phase progressed to rem
timeInLightInt?Total time the sleep phase progressed to light
timeInDeepInt?Total time the sleep phase progressed to deep
timeInStableBreathInt?Total time in the breathing stable section
timeInUnstableBreathInt?Total time of breath instability
wakeRatioFloatRate of waking time in the middle during sleep phase
sleepRatioFloatDuring sleep stage, sleep ratio, not wake
remRatioFloat?rem sleep ratio
lightRatioFloat?Rate of light sleep during sleep phase
deepRatioFloat?Rate of deep sleep during sleep phase
stableBreathRatioFloat?The percentage of time that was a breathing stable section during the sleep phase
unstableBreathRatioFloat?The percentage of time during the sleep phase that there was a breathing instability section
unstableBreathCountInt?The number of times unstable breathing occurred.
breathingPatternString?Breathing Instability Level

STABLE_BREATH: stable
MILDLY_UNSTABLE_BREATH: mildly unstable
MODERTATELY_UNSTABLE_BREATH:
moderately unstable
SEVERELY_UNSTABLE_BREATH: severely unstable
sleepCycleInt?The average duration of one sleep cycle
sleepCycleCountInt?The number of sleep cycles
wasoCountInt?The number of times 'wake' occurred during the sleep period
longestWasoInt?The duration of the longest 'wake' during the sleep period
timeInSnoringInt?2.4.0<=SDK
timeInNoSnoringInt?2.4.0<=SDK
snoringRatioFloat?2.4.0<=SDK
noSnoringRatioFloat?2.4.0<=SDK
snoringCountInt?2.4.0<=SDK
breathingIndexFloat?Values for determining respiratory instability levels2.4.0<=SDK
  • If failure, onFail() is called.
Parameter NameTypeDescription
errorCodeIntSee AsleepErrorCode
detailStringerrorCode Message

5. Delete Report

❗️

When session data is deleted from the Asleep server upon a request, it becomes difficult to provide specific evidence for the deleted sessions during subsequent billing usage analysis.

  • Asleep.deleteReport :Delete sessionId Report.
fun deleteReport(sessionId: String, deleteReportListener: DeleteReportListener)
Parameter NameTypeDescription
sessionIdStringDelete sessionId value
deleteReportListenerDeleteReportListenerReport delete callback listener
  • Asleep.Reports.DeleteReportListener
interface DeleteReportListener {
    fun onSuccess(sessionId: String?)
    fun onFail(errorCode: Int, detail: String)
}
  • If success, onSuccess() is called.
Parameter NameTypeDescription
sessionIdString?delete sessionId value
  • If failure, onFail() is called.
Parameter NameTypeDescription
errorCodeIntSee AsleepErrorCode
detailStringerrorCode Message