These docs are for v1.0. Click to read the latest docs for v3.0.

Callback

분석된 결과를 원하시는 HTTP 콜백 URL 호출을 통해 전달해주는 기능으로, Session API에 업로드 및 세션 종료 API에서 파라미터에 적어주면, 아래와 같은 포맷으로 분석 결과를 전달합니다.

1. Request

1.1 Method

POST

1.2 Header

FieldTypeDescription
x-api-keyString데이터 업로드 또는 세션 종료 시 사용한 API Key
x-user-idString수면 세션을 생성한 user id

1.3 Body

Field

Type

Description

callback_event

String (INFERENCE_COMPLETE,SESSION_COMPLETE)

콜백 이벤트 타입
INFERENCE_COMPLETE: 5분 또는 20분 단위로 분석이 완료된 경우
SESSION_COMPLETE: 전체 세션 분석이 완료된 경우

callback_data

Callback Data Object

콜백 데이터

1.3.1 INFERENCE_COMPLETE일 경우 Callback Data Object

Field

Type

Description

user_id

String

user id

session_id

String

session id

seq_num

Int

오디오 데이터 업로드 순서 번호

inference_seq_num

Int

seq_num을 5분 단위로 변환한 번호
예) MELSPECTROGRAM 업로드 시 seq_num 39이면 inference_seq_num은 3

stage_list

[Int]

직전 20분 단위의 수면 단계 결과
예) inference_seq_num이 6이면 3~6까지 40개의 값을 전달받음

osa_stage_list

[Int]

직전 20분 단위의 호흡 안정 단계 결과
예) inference_seq_num이 6이면 3~6까지 40개의 값을 전달받음

1.3.2 SESSION_COMPLETE일 경우 Callback Data Object

FieldTypeDescription
user_idStringuser id
session_idStringsession id
sleep_dataSleep Data Object전체 수면 분석 결과

1.3.3 Sleep Data Object

메트릭에 대한 보다 자세한 설명은 Get Single Session을 참고하실 수 있습니다. 세션의 상태와 계약 조건에 따라 object와 object 내부 구성 요소들의 nullable이 결정됩니다.

  • if state == COMPLETE일 때
    • if 2단계 수면 분석을 사용할 경우: wake와 sleep 밖에 단계가 없으므로 time_in_rem, time_in_light, time_in_deep, rem_ratio, light_ratio, deep_ratio 값은 null
    • if 호흡 안정도 분석 사용 안할 경우: 해당 기능이 제공되지 않으므로 time_in_stable_breath, time_in_unstable_breath, stable_breath_ratio, unstable_breath_ratio, breathing_pattern, estimated_ahi 값은 null
    • if 모든 stage가 wake인 경우(never slept session): 잠을 자지 않은 것이므로 sleep_latency, sleep_time, wakeup_latency, wake_time, wake_ratio, sleep_ratio, rem_ratio, light_ratio, deep_ratio, stable_breath_ratio, unstable_breath_ratio, breathing_pattern, estimated_ahi 모두 null
    • INVALID 세션인 경우(20분 미만 또는 분석 불가인 세션): 모든 nullable 필드 값 null

Field

Type

Description

session_id

String

session id

state

String (COMPLETE만 가능)

세션의 상태
COMPLETE: 세션 종료 후 모든 수면 분석이 완료된 상태

session_start_time

String (YYYY-MM-DDThh:mm:ss+-hh:mm)

세션 시작 시각
예) 2022-08-01T01:31:17+09:00 (요청 타임존이 Asia/Seoul 일 경우)

session_end_time

String (YYYY-MM-DDThh:mm:ss+-hh:mm)

세션 종료 시각
예) 2022-08-01T01:31:17+09:00 (요청 타임존이 Asia/Seoul 일 경우)

sleep_stages

[Sleep Stages]

수면 단계 리스트

osa_stages

[OSA Stages]

호흡 안정도 단계 리스트

sleep_efficiency

float (0~1 범위 소수점 둘째자리)

수면 측정 시간 중 실제로 잠든 시간의 비율

sleep_latency

int (seconds)?

잠들때까지 걸린 시각

sleep_time

String (YYYY-MM-DDThh:mm:ss+-hh:mm)?

수면 측정 시작 후 잠들기 까지 걸린 시간

wakeup_latency

int (seconds)?

잠에서 깨어난 후 수면 측정을 종료하기까지 걸린 시간

wake_time

String (YYYY-MM-DDThh:mm:ss+-hh:mm)?

잠에서 깨어난 시각

time_in_wake

int (seconds)

수면 도중에 깬 시간

time_in_sleep_period

int (seconds)

수면 측정 시간 중 수면 측정 시작으로부터 잠들기 까지 걸린 시간과 잠에서 깨어난 후로부터 수면 측정을 종료하기까지 걸린 시간을 제외한 시간
(time_in_bed - sleep_latency - wakeup_latency)

time_in_sleep

int (seconds)

수면 측정 시간 중 실제로 수면 중이었던 시간
이 시간이 deep, light, rem의 3단계로 구분됨

time_in_bed

int (seconds)

수면 측정 시작 시각부터 수면 측정 종료 시각 까지의 시간

time_in_rem

int (seconds)?

수면 단계가 rem 으로 진행된 총 시간

time_in_light

int (seconds)?

수면 단계가 light 로 진행된 총 시간

time_in_deep

int (seconds)?

수면 단계가 deep로 진행된 총 시간

time_in_stable_breath

int (seconds)?

호흡 안정 구간이었던 총 시간

time_in_unstable_breath

int (seconds)?

호흡 불안정 구간이었던 총 시간

wake_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 중간에 깬 시간의 비율

sleep_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 깨지 않고 잔 시간의 비율

rem_ratio

float (0~1 범위 소수점 둘째자리)?

rem sleep 비율

light_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 light 수면의 비율

deep_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 deep 수면의 비율

stable_breath_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 호흡 안정 구간이었던 시간의 비율

unstable_breath_ratio

float (0~1 범위 소수점 둘째자리)?

수면 단계 도중 호흡 불안정 구간이었던 시간의 비율

breathing_pattern

String (VERY_STABLE,STABLE,UNSTABLE,VERY_UNSTABLE)?

호흡 불안정의 단계

VERY_STABLE: 매우 안정
STABLE: 안정
UNSTABLE: 불안정
VERY_UNSTABLE: 매우 불안정

estimated_ahi

float (0~1 범위 소수점 둘째자리)?

호흡 불안정 레벨을 판단하기 위한 값