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 | Enter Asleep.Config instance |
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 | sessionId that can be received when stopping tracking |
completionBlock | Asleep.Model.Report? | If nil, an error occurs. |
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 ) | View date start |
toDate | String (YYYY-MM-DD ) | View date end |
orderBy | Asleep.Model.OrderBy | Default value: .descending Options: .ascending , .descending DESC : Descending order ASC : Ascending order |
offset | Int | Default value: 0 Number of reports to skip |
limit | Int | Default value: 20 Maximum number of report (0~100) |
completionBlock | Array<Asleep.Model.SleepSession>? | If nil, an error occurs |
Asleep.AsleepError? | Error Codes |
4. Get average stats
Asleep.Reports.getAverageReport()
v2.3.0<=SDK
var reports: Asleep.Reports?
let fromDate: String = "2023-05-01"
let toDate: String = "2023-05-07"
// Closure
reports?.getAverageReport(fromDate: fromDate, toDate: toDate, completionBlock: { (averageReport: Asleep.Model.AverageReport?, error: Asleep.AsleepError?) in
if let error {
print(error)
return
}
if let averageReport {
}
})
// Async
Task {
do {
let averageReport = try await reports?.getAverageReport(fromDate: fromDate, toDate: toDate)
} catch {
print(error)
}
}
Property Name | Type | Description |
---|---|---|
fromDate | String (YYYY-MM-DD ) | The starting time for the period you want to check the average |
toDate | String (YYYY-MM-DD ) | The ending time for the period you want to check the average |
completionBlock | Asleep.Model.AverageReport? | f nil, an error occurs. |
Asleep.AsleepError? | Error Codes |
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.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 to be deleted |
completionBlock | Asleep.AsleepError? | Error Codes |
6. Data Type
Asleep.Model.Report
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 | The adjusted time zone of the analysis result e.g. UTC , Asia/Seoul (Timezone List) |
peculiarities | Asleep.Model.Peculiarity | A field for describing specific details or peculiarities of the sleep session. Possible values include: - IN_PROGRESS : If the session is OPEN, CLOSED - NEVER_SLEPT : No sleep detected during measurement time - TOO_SHORT_FOR_ANALYSIS : Measurement time too short (less than 20 minutes) - TOO_LONG_FOR_ANALYSIS : Measurement time excessively long (exceeding 24 hours) - TOO_MANY_DEFECTS_IN_SLEEP_STAGES : High error rate due to missing audio uploads - NO_BREATHING_STABILITY : Contract does not support breathing stability analysis - NO_REALTIME_POLLING : No real-time access to sleep information |
missing_data_ratio | Float (0~1 range) | Error rate in sleep analysis results due to missing audio uploads |
session | Asleep.Model.Session | Session report information |
stat | Asleep.Model.Stat | Analysis report information |
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 breathStages: [Int]?
}
enum State {
case open
case closed
case complete
}
Asleep.Model.Stat
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 timeInStableBreath: Int?
let timeInUnstableBreath: Int?
let timeInSnoring: Int?
let timeInNoSnoring: Int?
let wakeRatio: Float?
let sleepRatio: Float?
let remRatio: Float?
let lightRatio: Float?
let deepRatio: Float?
let stableBreathRatio: Float?
let unstableBreathRatio: Float?
let snoringRatio: Float?
let noSnoringRatio: Float?
let unstableBreathCount: Int?
let breathingPattern: BreathingPattern?
let breathingIndex: Float?
let sleepCycle: Int?
let sleepCycleCount: Int?
let sleepCycleTime: [Date]?
let wasoCount: Int?
let longestWaso: Int?
let sleepIndex: Int?
let snoringCount: Int?
}
enum BreathingPattern {
case stableBreath
case mildlyUnstableBreath
case moderatelyUnstableBreath
case severelyUnstableBreath
}
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
}
Asleep.Model.AverageReport
v2.3.0<=SDK
struct AverageReport {
let period: Period
let peculiarities: [Peculiarity]
let averageStats: AverageStats?
let neverSleptSessions: [NeverSleptSession]
let sleptSessions: [SleptSession]
}
Asleep.Model.Period
v2.3.0<=SDK
struct Period {
let timezone: String
let startDate: Date
let endDate: Date
}
Asleep.Model.AverageStats
v2.3.0<=SDK
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 timeInStableBreath: Int?
let timeInUnstableBreath: 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 stableBreathRatio: Double?
let unstableBreathRatio: Double?
let snoringRatio: Double?
let noSnoringRatio: Double?
let breathingIndex: Double?
let wasoCount: Int
let longestWaso: Int
let unstableBreathCount: Int
let sleepCycleCount: Int
let snoringCount: Int?
}
Asleep.Model.NeverSleptSession
v2.3.0<=SDK
struct NeverSleptSession {
let id: String
let startTime: Date
let endTime: Date
let completedTime: Date
}
Property name | Type | Description |
---|---|---|
id | String | session id |
startTime | Date | Session start time |
endTime | Date | Session end time |
completedTime | Date | Time of session analysis completion |
Asleep.Model.SleptSession
v2.3.0<=SDK
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 timeInStableBreath: Int?
let timeInUnstableBreath: Int?
let timeInSnoring: Int?
let timeInNoSnoring: Int?
let wakeRatio: Double
let sleepRatio: Double
let remRatio: Double?
let lightRatio: Double?
let deepRatio: Double?
let stableBreathRatio: Double?
let unstableBreathRatio: Double?
let snoringRatio: Double?
let noSnoringRatio: Double?
let unstableBreathCount: Int?
let breathingPattern: BreathingPattern?
let sleepCycle: Int?
let sleepCycleCount: Int?
let wasoCount: Int?
let longestWaso: Int?
let snoringCount: Int?
}
Updated about 1 month ago