1. Create Reports

  • Asleep.createReports : Sleep Tracking에 대한 결과를 가져오기 위한 Reports를 생성합니다.
fun createReports(asleepConfig: AsleepConfig?): Reports?
Parameter NameTypeDescription
asleepConfigAsleepConfig?initAsleepConfig 호출에서 콜백 받은 설정 값을 입력

2. Get Single Report

  • Asleep.Reports.getReport : sessionId에 해당하는 Report를 가져옵니다.
fun getReport(sessionId: String, reportListener: ReportListener)
Parameter NameTypeDescription
sessionIdStringSleep Tracking을 정지할 때 받을 수 있는 sessionId의 값
reportListenerReportListenerReport를 콜백 받을 리스너
  • Asleep.Reports.ReportListener
interface ReportListener {
    fun onSuccess(report: Report?)
    fun onFail(errorCode: Int, detail: String)
}
  • 성공 시, onSuccess()가 호출됩니다.
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
timezoneString타임존 (Timezone List)
peculiaritiesList해당 수면 세션의 특이사항이 있을 경우 이를 설명해주는 필드. 해당 필드는 여러 개의 라벨을 포함할 수 있음.

IN_PROGRESS: 세션이 OPEN, CLOSED인 경우
NEVER_SLEPT: 분석 결과 세션 측정시간 동안 전혀 잠을 자지 않았다고 판단 되는 경우
TOO_SHORT_FOR_ANALYSIS: 측정시간이 너무 짧아 유효한 분석을 할 수 없는 경우 (현재 20분 미만)
TOO_LONG_FOR_ANALYSIS: 분석은 정상적으로 되었지만, 세션 측정 시간이 너무 길어 신뢰하기 어려운 경우 (현재 24시간 초과)
INVALID:TOO_MANY_DEFECTS_IN_SLEEP_STAGES: 오디오 업로드 누락 등의 이유로 오류율이 높아 수면 분석 결과가 충분하지 않은 경우
NO_BREATHING_STABILITY: 고객의 계약 조건상 호흡 안정 분석을 지원하지 않는 경우
NO_REALTIME_POLLING: 고객의 계약 조건상 실시간으로 수면 정보를 확인할 수 없는 경우
missingDataRatioFloat오디오 업로드 누락 등의 이유로 인한 수면 분석 결과 오류율
sessionSession?세션 분석 정보
statStat?분석 통계 정보
idStringsession id
stateString세션의 상태
OPEN: 진행 중인 세션으로, 오디오 업로드가 가능한 상태
CLOSED: 세션 종료 요청이 보내져 종료된 세션. 오디오 파일 업로드 불가능. 업로드된 수면 오디오에 대한 분석이 계속 진행중인 상태
COMPLETE: 세션 종료 후 모든 수면 분석이 완료된 상태
startTimeString세션 시작 시각
예) 2022-08-01T01:31:17+09:00 (요청 타임존이 Asia/Seoul 일 경우)
endTimeString?세션 종료 시각
예) 2022-08-01T01:31:17+09:00 (요청 타임존이 Asia/Seoul 일 경우)
sleepStagesList<Int>?수면 단계 리스트
breathStagesList<Int>?호흡 안정도 단계 리스트
createdTimezoneString세션이 생성된 타임존 (Timezone List)v2.2.0<=SDK
unexpectedEndTimeString?비정상 세션 종료 시각. 추후 initAsleepConfig될 때의 시각이 저장.v2.2.0<=SDK
sleepEfficiencyFloat?수면 측정 시간 중 실제로 잠든 시간의 비율
sleepLatencyInt?잠들때까지 걸린 시각
sleepTimeString?수면 측정 시작 후 잠들기 까지 걸린 시간
wakeupLatencyInt?잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간
wakeTimeString?잠에서 깨어난 시각
timeInWakeInt?수면 도중에 깬 시간
timeInSleepPeriodInt?수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepInt?수면 측정 시간 중 실제로 수면 중이었던 시간
이 시간이 deep, light, rem의 3단계로 구분됨
timeInBedInt?수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간
timeInRemInt?수면 단계가 rem 으로 진행된 총 시간
timeInLightInt?수면 단계가 light 로 진행된 총 시간
timeInDeepInt?수면 단계가 deep로 진행된 총 시간
timeInStableBreathInt?호흡 안정 구간이었던 총 시간
timeInUnstableBreathInt?호흡 불안정 구간이었던 총 시간
wakeRatioFloat?수면 단계 도중 중간에 깬 시간의 비율
sleepRatioFloat?수면 단계 도중 깨지 않고 잔 시간의 비율
remRatioFloat?rem sleep 비율
lightRatioFloat?수면 단계 도중 light 수면의 비율
deepRatioFloat?수면 단계 도중 deep 수면의 비율
stableBreathRatioFloat?수면 단계 도중 호흡 안정 구간이었던 시간의 비율
unstableBreathRatioFloat?수면 단계 도중 호흡 불안정 구간이었던 시간의 비율
breathingPatternString?호흡 불안정의 단계

STABLE_BREATH: 안정
MILDLY_UNSTABLE_BREATH: 조금 불안정
MODERATELY_UNSTABLE_BREATH: 불안정
SEVERELY_UNSTABLE_BREATH: 심한 불안정
breathingIndexFloat?호흡 불안정 레벨을 판단하기 위한 값
sleepCycleInt?수면 주기 1회당 평균 시간2.2.0<=SDK
sleepCycleCountInt?수면 주기의 횟수2.2.0<=SDK
wasoCountInt?수면 구간 중 wake가 발생한 횟수2.2.0<=SDK
longestWasoInt?수면 구간 중 가장 긴 wake의 시간2.2.0<=SDK
unstableBreathCount Int?불안정 호흡이 발생한 횟수2.2.0<=SDK
lightLatencyInt?첫 수면 시작으로부터 첫 번째 light가 발생하기까지의 시간2.2.0<=SDK
remLatencyInt?첫 수면 시작으로부터 첫 번째 rem이 발생하기까지의 시간2.2.0<=SDK
deepLatencyInt?첫 수면 시작으로부터 첫 번째 deep이 발생하기까지의 시간2.2.0<=SDK
sleepIndexInt?수면 데이터 분포를 학습하여 정의된 수면의 질을 종합적으로 대표하는 지표2.3.0<=SDK
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
sleepCycleTimeList?수면 주기 전환 기준 시각
예) [첫번째 수면 주기 시작 시각, 첫번째 수면 주기 종료 시각, 두번째 수면 주기 종료 시각, ..., 마지막 수면 주기 종료 시각]
2.4.0<=SDK
  • 실패 시, onFail()이 호출됩니다.
Parameter NameTypeDescription
errorCodeIntAsleepErrorCode 참조
detailStringerrorCode에 관련된 메세지

3. Get Multiple Reports

  • Asleep.Reports.getReports : 입력한 날짜의 범위내에 있는 Report 목록을 가져옵니다.
fun getReports(
    fromDate: String, 
  	toDate: String, 
  	orderBy: String = "DESC", 
  	offset: Int = 0, 
  	limit: Int = 20, 
  	reportsListener: ReportsListener?)
    
Parameter NameTypeDescription
fromDateString (YYYY-MM-DD)조회 시작 날짜
toDateString (YYYY-MM-DD)조회 마지막 날짜
orderBy = "DESC"StringDESC: 내림차순 정렬
ASC: 오름차순 정렬
offset = 0Int스킵할 Report 개수
limit = 20Int최대 받을 Report 개수(0~100)
reportsListenerReportsListener?Report 목록을 콜백 받을 리스너
  • Asleep.Reports.ReportsListener
interface ReportsListener {
    fun onSuccess(reports: List<SleepSession>?)
    fun onFail(errorCode: Int, detail: String)
}
  • 성공 시, onSuccess()가 호출됩니다.
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?세션 Id
lastReceivedSeqNumInt?마지막으로 업로드 받은 오디오 파일의 순서 번호
sessionEndTimeString?세션 종료 시각
sessionStartTimeString?세션 시작 시각
stateString?수면 세션 상태 (OPEN, CLOSED or COMPLETE)
timeInBedInt?침대에 있었던 시간
createdTimezoneString세션이 생성된 타임존 (Timezone List)2.2.0<=SDK
unexpectedEndTimeString?비정상 세션 종료 시각. 추후 initAsleepConfig될 때의 시각이 저장.2.2.0<=SDK
  • sessionId로 getReport() 호출 시 상세 리포트를 가져옵니다.
  • 실패 시, onFail()이 호출됩니다.
Parameter NameTypeDescription
errorCodeIntAsleepErrorCode 참조
detailStringerrorCode에 관련된 메세지

4. Average-stats

  • v2.3.0 이상부터 사용 가능
  • Asleep.Reports.getAverageReport
  • 사용자의 특정 기간 내 수면 메트릭들의 평균을 확인할 수 있습니다.
fun getAverageReport(fromDate: String, toDate: String, averageReportListener: AverageReportListener?)
Parameter NameTypeDescription
fromDateString평균을 확인하고자 하는 기간의 시작 시간
toDateString평균을 확인하고자 하는 기간의 종료 시간
averageReportListenerAverageReportListenerAverage Report를 콜백 받을 listener
  • Asleep.Reports.AverageReportListener
interface AverageReportListener {
    fun onSuccess(averageReport: AverageReport?)
    fun onFail(errorCode: Int, detail: String)
}
  • 성공 시, onSuccess()가 호출됩니다.

AverageReport

data class AverageReport (
    val period: Period,
    val peculiarities: List<String>,
    val averageStats: AverageStats?,
    val neverSleptSessions: List<NeverSleptSessions>,
    val sleptSessions: List<SleptSessions>
)
Parameter NameTypeDescription
periodPeriod타임존
peculiaritiesList수면 세션들의 평균을 구할 때 특이사항
averageStatsAverageStats?sleptSessions의 수면 메트릭들의 평균들을 가지는 객체
neverSleptSessionsList세션 측정시간 동안 전혀 잠을 자지 않았다고 판단 되는 세션들의 목록
sleptSessionsList세션 측정시간 동안 잠을 잤다고 판단 되는 세션들의 목록

Period

data class Period (
    val timezone: String,
    val endDate: String,
    val startDate: String,
)
Parameter NameTypeDescription
timezoneString요청한 타임존
예. UTC, Asia/Seoul
startDateString요청한 시작 시간
endDateString요청한 종료 시간

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
startTimeString세션 시작 시각
endTimeString세션 종료 시
sleepTimeString잠들때까지 걸린 시
wakeTimeString잠에서 깨어난 시
sleepLatencyInt잠들때까지 걸린 시
wakeupLatencyInt잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간
timeInBedInt수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간
timeInSleepPeriodInt수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepInt수면 측정 시간 중 실제로 수면 중이었던 시간
이 시간이 deep, light, rem의 3단계로 구분됨
timeInWakeInt수면 도중에 깬 시간
timeInLightInt?면 단계가 light 로 진행된 총 시간
timeInDeepInt?수면 단계가 deep로 진행된 총 시간
timeInRemInt?수면 단계가 rem 으로 진행된 총 시간
timeInStableBreathInt?호흡 안정 구간이었던 총 시간
timeInUnstableBreathInt?호흡 불안정 구간이었던 총 시간
sleepEfficiencyFloat?수면 측정 시간 중 실제로 잠든 시간의 비율
wakeRatioFloat?수면 단계 도중 중간에 깬 시간의 비율
sleepRatioFloat?수면 단계 도중 깨지 않고 잔 시간의 비율
lightRatioFloat?수면 단계 도중 light 수면의 비율
deepRatioFloat?수면 단계 도중 deep 수면의 비율
remRatioFloat?rem sleep 비율
stableBreathRatioFloat?수면 단계 도중 호흡 안정 구간이었던 시간의 비율
unstableBreathRatioFloat?수면 단계 도중 호흡 불안정 구간이었던 시간의 비율
breathingIndexFloat?호흡 불안정 레벨을 판단하기 위한 값
wasoCountInt?수면 구간 중 wake가 발생한 횟수
longestWasoInt?수면 구간 중 가장 긴 wake의 시간
unstableBreathCountInt?불안정 호흡이 발생한 횟수
sleepCycleCountInt?수면 주기의 횟수
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
startTimeString세션 시작 시각
endTimeString세션 종료 시각
completedTimeString세션 분석 완료 시각

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
createdTimezoneString세션이 생성된 타임존 (Timezone List)
startTimeString세션 종료 시각
endTimeString세션 종료 시각
completedTimeString세션 분석 완료 시각
sleepEfficiencyFloat수면 측정 시간 중 실제로 잠든 시간의 비율
sleepLatencyInt?잠들때까지 걸린 시각
sleepTimeString?수면 측정 시작 후 잠들기 까지 걸린 시간
wakeupLatencyInt?잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간
wakeTimeString?잠에서 깨어난 시각
lightLatencyInt?첫 수면 시작으로부터 첫 번째 light가 발생하기까지의 시간
deepLatencyInt?첫 수면 시작으로부터 첫 번째 deep이 발생하기까지의 시간
remLatencyInt?첫 수면 시작으로부터 첫 번째 rem이 발생하기까지의 시간
timeInWakeInt수면 도중에 깬 시간
timeInSleepPeriodInt수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
(time_in_bed - sleep_latency - wakeup_latency)
timeInSleepInt수면 측정 시간 중 실제로 수면 중이었던 시간
이 시간이 deep, light, rem의 3단계로 구분됨
timeInBedInt수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간
timeInRemInt?수면 단계가 rem 으로 진행된 총 시간
timeInLightInt?수면 단계가 light 로 진행된 총 시간
timeInDeepInt?수면 단계가 deep로 진행된 총 시간
timeInStableBreathInt?호흡 안정 구간이었던 총 시간
timeInUnstableBreathInt?호흡 불안정 구간이었던 총 시간
wakeRatioFloat수면 단계 도중 중간에 깬 시간의 비율
sleepRatioFloat수면 단계 도중 깨지 않고 잔 시간의 비율
remRatioFloat?rem sleep 비율
lightRatioFloat?수면 단계 도중 light 수면의 비율
deepRatioFloat?수면 단계 도중 deep 수면의 비율
stableBreathRatioFloat?수면 단계 도중 호흡 안정 구간이었던 시간의 비율
unstableBreathRatioFloat?수면 단계 도중 호흡 불안정 구간이었던 시간의 비율
unstableBreathCountInt?불안정 호흡이 발생한 횟수
breathingPatternString?호흡 불안정의 단계

STABLE_BREATH: 안정
MILDLY_UNSTABLE_BREATH: 조금 불안정
MODERATELY_UNSTABLE_BREATH: 불안정
SEVERELY_UNSTABLE_BREATH: 심한 불안정
sleepCycleInt?수면 주기 1회당 평균 시간
sleepCycleCountInt?수면 주기의 횟수
wasoCountInt?수면 구간 중 wake가 발생한 횟수
longestWasoInt?수면 구간 중 가장 긴 wake의 시간
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?호흡 불안정 레벨을 판단하기 위한 값2.4.0<=SDK
  • 실패 시, onFail()이 호출됩니다.
Parameter NameTypeDescription
errorCodeIntAsleepErrorCode 참조
detailStringerrorCode에 관련된 메세지

5. Delete Report

❗️

세션 데이터 삭제 요청에 따라 에이슬립 서버에서 세션 데이터가 삭제된 경우, 추후 과금 사용량 분석 시 삭제된 세션에 대한 구체적인 근거 제공이 어렵습니다.

  • Asleep.deleteReport : sessionId에 해당하는 Report를 삭제합니다.
fun deleteReport(sessionId: String, deleteReportListener: DeleteReportListener)
Parameter NameTypeDescription
sessionIdString삭제할 sessionId의 값
deleteReportListenerDeleteReportListenerReport 삭제에 대한 콜백을 받을 리스너
  • Asleep.Reports.DeleteReportListener
interface DeleteReportListener {
    fun onSuccess(sessionId: String?)
    fun onFail(errorCode: Int, detail: String)
}
  • 성공 시, onSuccess()가 호출됩니다.
Parameter NameTypeDescription
sessionIdString?삭제된 sessionId의 값
  • 실패 시, onFail()이 호출됩니다.
Parameter NameTypeDescription
errorCodeIntAsleepErrorCode 참조
detailStringerrorCode에 관련된 메세지