struct Report {
let timezone: String
let peculiarities: [Peculiarity]
let missingDataRatio: Float
let session: Session
let stat: Stat?
}
enum Peculiarity {
case inProgress
case neverSlept
case tooShortForAnalysis
case tooLongForAnalysis
case tooManyDefectsInSleepStages
case noBreathingStability
case noRealtimePolling
}
Property Name
Type
Description
timezone
String
분석 결과의 시간대를 해당 timezone으로 변경해서 반환 (예: UTC, Asia/Seoul)
peculiarities
Asleep.Model.Peculiarity
해당 수면 세션의 특이사항을 설명하는 필드. 여러 개의 라벨 포함 가능.
missingDataRatio
Float
오디오 업로드 누락 등의 이유로 인한 수면 분석 결과 오류율 (0~1.0)
session
Asleep.Model.Session
세션 분석 정보
stat
Asleep.Model.Stat
분석 통계 정보
Asleep.Model.Session
struct Session {
let id: String
let state: State
let startTime: Date
let endTime: Date?
let unexpectedEndTime: Date?
let createdTimezone: String
let sleepStages: [Int]?
let snoringStages: [Int]?
}
enum State {
case open
case closed
case complete
}
struct Stat {
let sleepEfficiency: Float?
let sleepLatency: Int?
let sleepTime: Date?
let wakeupLatency: Int?
let wakeTime: Date?
let lightLatency: Int?
let deepLatency: Int?
let remLatency: Int?
let timeInWake: Int?
let timeInSleepPeriod: Int?
let timeInSleep: Int?
let timeInBed: Int?
let timeInRem: Int?
let timeInLight: Int?
let timeInDeep: Int?
let timeInSnoring: Int?
let timeInNoSnoring: Int?
let wakeRatio: Float?
let sleepRatio: Float?
let remRatio: Float?
let lightRatio: Float?
let deepRatio: Float?
let snoringRatio: Float?
let noSnoringRatio: Float?
let sleepCycle: Int?
let sleepCycleCount: Int?
let sleepCycleTime: [Date]?
let wasoCount: Int?
let longestWaso: Int?
let sleepIndex: Int?
let snoringCount: Int?
}
Property Name
Type
Description
sleepEfficiency
Float?
수면 측정 시간 중 실제로 잠든 시간의 비율
sleepLatency
Int?
잠들때까지 걸린 시간
sleepTime
Date?
수면 측정 시작 후 잠들기까지 걸린 시간
wakeupLatency
Int?
잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간
wakeTime
Date?
잠에서 깨어난 시각
lightLatency
Int?
첫 수면 시작으로부터 첫 번째 light가 발생하기까지의 시간
deepLatency
Int?
첫 수면 시작으로부터 첫 번째 deep이 발생하기까지의 시간
remLatency
Int?
첫 수면 시작으로부터 첫 번째 rem이 발생하기까지의 시간
timeInWake
Int?
수면 도중에 깬 시간
timeInSleepPeriod
Int?
수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
timeInSleep
Int?
수면 측정 시간 중 실제로 수면 중이었던 시간 (이 시간이 deep, light, rem의 3단계로 구분됨)
timeInBed
Int?
수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간
timeInRem
Int?
수면 단계가 rem 으로 진행된 총 시간
timeInLight
Int?
수면 단계가 light 로 진행된 총 시간
timeInDeep
Int?
수면 단계가 deep로 진행된 총 시간
timeInSnoring
Int?
코골이가 발생한 총 시간
timeInNoSnoring
Int?
코골이가 발생하지 않은 총 시간
wakeRatio
Float?
수면 단계 도중 중간에 깬 시간의 비율
sleepRatio
Float?
수면 단계 도중 깨지 않고 잔 시간의 비율
remRatio
Float?
수면 단계 도중 REM 수면의 비율
lightRatio
Float?
수면 단계 도중 light 수면의 비율
deepRatio
Float?
수면 단계 도중 deep 수면의 비율
snoringRatio
Float?
수면 단계 도중 코골이었던 시간의 비율
noSnoringRatio
Float?
수면 단계 도중 코골이가 아니었던 시간의 비율
sleepCycle
Int?
수면 주기 1회당 평균 시간
sleepCycleCount
Int?
수면 주기의 횟수
sleepCycleTime
[Date]?
수면 주기 전환 기준 시각 (예: [첫번째 수면 주기 시작 시각, 첫번째 수면 주기 종료 시각, 두번째 수면 주기 종료 시각, ..., 마지막 수면 주기 종료 시각])
wasoCount
Int?
수면 구간 중 wake가 발생한 횟수
longestWaso
Int?
수면 구간 중 가장 긴 wake의 시간
sleepIndex
Int?
수면 데이터 분포를 학습하여 정의된 수면의 질을 종합적으로 대표하는 지표 (수면 점수)
snoringCount
Int?
코골이 구간의 발생한 횟수
Asleep.Model.SleepSession
struct SleepSession {
let sessionId: String
let state: State
let sessionStartTime: Date
let sessionEndTime: Date?
let createdTimezone: String
let unexpectedEndTime: Date?
let lastReceivedSeqNum: Int
let timeInBed: Int
}
enum State {
case open
case closed
case complete
}
struct AverageReport {
let period: Period
let peculiarities: [Peculiarity]
let averageStats: AverageStats?
let neverSleptSessions: [NeverSleptSession]
let sleptSessions: [SleptSession]
}
수면 세션들의 평균을 구할 때 특이사항. (NO_BREATHING_STABILITY: 호흡 안정 분석 미지원)
averageStats
Asleep.Model.AverageStats?
slept_sessions의 수면 메트릭들의 평균들을 가지는 객체
neverSleptSessions
Array<Asleep.Model.NeverSleptSession>
세션 측정시간 동안 전혀 잠을 자지 않았다고 판단 되는 세션들의 목록
sleptSessions
Array<Asleep.Model.SleptSession>
세션 측정시간 동안 잠을 잤다고 판단 되는 세션들의 목록
Asleep.Model.Period
struct Period {
let timezone: String
let startDate: Date
let endDate: Date
}
Property Name
Type
Description
timezone
String
요청한 타임존 (예: UTC, Asia/Seoul)
startDate
Date
요청한 시작 시간
endDate
Date
요청한 종료 시간
Asleep.Model.AverageStats
struct AverageStats {
let startTime: String
let endTime: String
let sleepTime: String
let wakeTime: String
let sleepLatency: Int
let wakeupLatency: Int
let timeInBed: Int
let timeInSleepPeriod: Int
let timeInSleep: Int
let timeInWake: Int
let timeInLight: Int?
let timeInDeep: Int?
let timeInRem: Int?
let timeInSnoring: Int?
let timeInNoSnoring: Int?
let sleepEfficiency: Double
let wakeRatio: Double
let sleepRatio: Double
let lightRatio: Double?
let deepRatio: Double?
let remRatio: Double?
let snoringRatio: Double?
let noSnoringRatio: Double?
let wasoCount: Int
let longestWaso: Int
let sleepCycleCount: Int?
let snoringCount: Int?
}
Property Name
Type
Description
startTime
String (hh:mm:ss)
세션 시작 시각
endTime
String (hh:mm:ss)
세션 종료 시각
sleepTime
String (hh:mm:ss)
잠들때까지 걸린 시각
wakeTime
String (hh:mm:ss)
잠에서 깨어난 시각
sleepLatency
Int
잠들때까지 걸린 시각
wakeupLatency
Int
잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간
timeInBed
Int
수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간
timeInSleepPeriod
Int
수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
timeInSleep
Int
수면 측정 시간 중 실제로 수면 중이었던 시간 (이 시간이 deep, light, rem의 3단계로 구분됨)
timeInWake
Int
수면 도중에 깬 시간
timeInLight
Int?
수면 단계가 light 로 진행된 총 시간
timeInDeep
Int?
수면 단계가 deep로 진행된 총 시간
timeInRem
Int?
수면 단계가 rem 으로 진행된 총 시간
timeInSnoring
Int?
코골이가 발생한 총 시간
timeInNoSnoring
Int?
코골이가 발생하지 않은 총 시간
sleepEfficiency
Double
수면 측정 시간 중 실제로 잠든 시간의 비율
wakeRatio
Double
수면 단계 도중 중간에 깬 시간의 비율
sleepRatio
Double
수면 단계 도중 깨지 않고 잔 시간의 비율
lightRatio
Double?
수면 단계 도중 light 수면의 비율
deepRatio
Double?
수면 단계 도중 deep 수면의 비율
remRatio
Double?
rem sleep 비율
snoringRatio
Double?
수면 단계 도중 코골이었던 시간의 비율
noSnoringRatio
Double?
수면 단계 도중 코골이가 아니었던 시간의 비율
wasoCount
Int
수면 구간 중 wake가 발생한 횟수
longestWaso
Int
수면 구간 중 가장 긴 wake의 시간
sleepCycleCount
Int?
수면 주기의 횟수
snoringCount
Int?
코골이 구간의 발생한 횟수
Asleep.Model.NeverSleptSession
struct NeverSleptSession {
let id: String
let startTime: Date
let endTime: Date
let completedTime: Date
}
Property Name
Type
Description
id
String
session id
startTime
Date
세션 시작 시각
endTime
Date
세션 종료 시각
completedTime
Date
세션 분석 완료 시각
Asleep.Model.SleptSession
struct SleptSession {
let id: String
let createdTimezone: String
let startTime: Date
let endTime: Date
let completedTime: Date
let sleepEfficiency: Double
let sleepLatency: Int?
let wakeupLatency: Int?
let lightLatency: Int?
let deepLatency: Int?
let remLatency: Int?
let sleepTime: Date?
let wakeTime: Date?
let timeInWake: Int
let timeInSleepPeriod: Int
let timeInSleep: Int
let timeInBed: Int
let timeInRem: Int?
let timeInLight: Int?
let timeInDeep: Int?
let timeInSnoring: Int?
let timeInNoSnoring: Int?
let wakeRatio: Double
let sleepRatio: Double
let remRatio: Double?
let lightRatio: Double?
let deepRatio: Double?
let snoringRatio: Double?
let noSnoringRatio: Double?
let sleepCycle: Int?
let sleepCycleCount: Int?
let wasoCount: Int?
let longestWaso: Int?
let snoringCount: Int?
}