Reports
1. Create report
Asleep.createReports()
var config: Asleep.Config?
var reports: Asleep.Reports?
if let config {
reports = Asleep.createReports(config: config)
}
Property Name | Type | Description |
---|---|---|
config | Asleep.Config | Asleep.Config 객체를 입력 |
2. Get a single report
Asleep.Reports.report()
var reports: Asleep.Reports?
let sessionId: String
// Closure
reports?.report(sessionId: sessionId, completionBlock: { (report: Asleep.Report?, error: Asleep.AsleepError?) in
if let error {
print(error)
return
}
if let report {
}
})
// Async
Task {
do {
let report = try await reports?.report(sessionId: sessionId)
} catch {
print(error)
}
}
Property Name | Type | Description |
---|---|---|
sessionId | String | Sleep Tracking을 정지할 때 받을 수 있는 sessionId의 값 |
completionBlock | Asleep.Model.Report? | nil이면 에러 발생 |
Asleep.AsleepError? | Error Codes |
3. Get multiple reports
Asleep.Reports.reports()
var reports: Asleep.Reports?
let fromDate: String = "2023-05-01"
let toDate: String = "2023-05-07"
// Closure
reports?.reports(fromDate: fromDate, toDate: toDate, completionBlock: { (reportSessions: [Asleep.Model.SleepSession]?, error: Asleep.AsleepError?) in
if let error {
print(error)
return
}
if let reportSessions {
}
})
// Async
Task {
do {
let reportSessions = try await reports?.reports(fromDate: fromDate, toDate: toDate)
} catch {
print(error)
}
}
Property Name | Type | Description |
---|---|---|
fromDate | String (YYYY-MM-DD ) | 조회 시작 날짜 |
toDate | String (YYYY-MM-DD ) | 조회 마지막 날짜 |
orderBy - default value: .descending | Asleep.Model.OrderBy [.ascending, .descending] | DESC : 내림차순 정렬ASC : 오름차순 정렬 |
offset - default value: 0 | Int | 스킵할 Report 개수 |
limit - default value: 20 | Int | 최대 받을 Report 개수(0~20) |
completionBlock | Array<Asleep.Model.SleepSession>? | nil이면 에러 발생 |
Asleep.AsleepError? | Error Codes |
4. Delete report
세션 데이터 삭제 요청에 따라 에이슬립 서버에서 세션 데이터가 삭제된 경우, 추후 과금 사용량 분석 시 삭제된 세션에 대한 구체적인 근거 제공이 어렵습니다.
Asleep.Reports.deleteReport()
var reports: Asleep.Reports?
let sessionId: String
// Closure
reports?.deleteReport(sessionId: sessionId, completionBlock: { (error: Asleep.AsleepError?) in
if let error {
print(error)
return
}
})
// Async
Task {
do {
try await deleteReport?.deleteReport(sessionId: sessionId)
} catch {
print(error)
}
}
Property Name | Type | Description |
---|---|---|
sessionId | String | 삭제할 sessionId의 값 |
completionBlock | Asleep.AsleepError? | Error Codes |
5. Data Type
Asleep.Model.Report
struct Report {
let timezone: String
let validity: Validity
let session: Session
let stat: Stat?
}
enum Validity {
case inProgress
case invalidSleepStage
case invalidOsaStage
case VALID
}
Property name | Type | Description |
---|---|---|
timezone | String | 분석 결과의 시간대를 해당 timezone으로 변경해서 반환 예. UTC , Asia/Seoul |
validity | Asleep.Model.Validity | 해당 수면 세션의 분석이 유효한지 여부 업로드된 오디오 파일들 일부가 유효하지 않거나, 유실된 비율이 일정 이상일 경우 분석이 부정확하여 이를 표시해주는 필드 IN_PROGRESS : 세션이 OPEN인 경우INVALID:TOO_MANDY_DEFECTS_IN_SLEEP_STAGES : 수면 단계 분석 결과가 충분하지 않음INVALID:TOO_MANY_DEFECTS_IN_OSA_STAGES : 수면 무호흡 분석 결과가 충분하지 않음VALID : 분석이 유효 |
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 sleepStages: [SleepStage]
let osaStages: [OSAStage]
}
enum State {
case open
case closed
case complete
}
enum SleepStage {
case error
case wake
case light
case deep
case rem
}
enum OSAStage {
case stable
case unstable
}
Property name | Type | Description |
---|---|---|
id | String | 세션 Id |
state | Asleep.Model.State | 수면 세션 상태 (OPEN , CLOSED , or COMPLETE ) |
startTime | Date | 세션 시작 시각 |
endTime | Date? | 세션 종료 시각 |
sleepStages | Array<Asleep.Model.SleepStage> | 수면 단계 |
osaStages | Array<Asleep.Model.OSAStage> | 수면 무호흡 단계 |
Asleep.Model.Stat
struct Stat {
let sleepEfficiency: Float
let sleepLatency: Int?
let sleepTime: Date?
let wakeupLatency: Int?
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 timeInStableBreath: Int
let timeInUnstableBreath: Int
let wakeRatio: Float?
let sleepRatio: Float?
let remRatio: Float?
let lightRatio: Float?
let deepRatio: Float?
let stableBreathRatio: Float?
let unstableBreathRatio: Float?
let breathingPattern: BreathingPattern?
let estimatedAhi: Float?
}
enum BreathingPattern {
case veryStable
case stable
case unstable
}
Property name | Type | Description |
---|---|---|
sleepEfficiency | Float | 수면 측정 시간 중 실제로 잠든 시간의 비율 |
sleepLatency | Int? | 잠들때까지 걸린 시간 |
sleepTime | Date? | 수면 측정 시작 후 잠들기까지 걸린 시간 |
wakeupLatency | Int? | 잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간 |
wakeTime | Date? | 잠에서 깨어난 시각 |
timeInWake | Int | 수면 도중에 깬 시간 |
timeInSleepPeriod | Int | 수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간 |
timeInSleep | Int | 수면 측정 시간 중 실제로 수면 중이었던 시간 이 시간이 deep, light, rem의 3단계로 구분됨 |
timeInBed | Int | 수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간 |
timeInRem | Int | 수면 단계가 rem 으로 진행된 총 시간 |
timeInLight | Int | 수면 단계가 light 로 진행된 총 시간 |
timeInDeep | Int | 수면 단계가 deep로 진행된 총 시간 |
timeInStableBreath | Int | 호흡 안정 구간이었던 총 시간 |
timeInUnstableBreath | Int | 호흡 불안정 구간이었던 총 시간 |
wakeRatio | Float? | 수면 단계 도중 중간에 깬 시간의 비율 |
sleepRatio | Float? | 수면 단계 도중 깨지 않고 잔 시간의 비율 |
remRatio | Float? | 수면 단계 도중 REM 수면의 비율 |
lightRatio | Float? | 수면 단계 도중 light 수면의 비율 |
deepRatio | Float? | 수면 단계 도중 deep 수면의 비율 |
stableBreathRatio | Float? | 수면 단계 도중 호흡 안정 구간이었던 시간의 비율 |
unstableBreathRatio | Float? | 수면 단계 도중 호흡 불안정 구간이었던 시간의 비율 |
breathingPattern | Asleep.Model.BreathingPattern? | 호흡 불안정의 단계VERY_STABLE : 매우 안정STABLE : 안정UNSTABLE : 불안정 |
estimatedAhi | Float? | 호흡 불안정 레벨을 판단하기 위한 값 |
Asleep.Model.SleepSession
struct SleepSession {
let sessionId: String
let state: State
let sessionStartTime: Date
let sessionEndTime: Date?
let lastReceivedSeqNum: Int
let timeInBed: Int
}
enum State {
case open
case closed
case complete
}
Property name | Type | Description |
---|---|---|
sessionId | String | 수면 세션 ID |
state | Asleep.Model.State | 세션의 상태OPEN : 진행 중인 세션으로, 오디오 업로드가 가능한 상태CLOSED : 세션 종료 요청이 보내져 종료된 세션. 오디오 파일 업로드 불가능. 업로드된 수면 오디오에 대한 분석이 계속 진행중인 상태COMPLETE : 세션 종료 후 모든 수면 분석이 완료된 상태 |
sessionStartTime | Date | 세션 시작 시각 |
sessionEndTime | Date? | 세션 종료 시각 |
lastReceivedSeqNum | Int | 마지막으로 업로드한 오디오 파일의 순서 번호 |
timeInBed | Int | 수면 측정 시작 시각부터 수면 측정 종료 시각까지의 시간 |
Updated 12 months ago