이벤트 스트림 (SSE)
GET
/api/v1/stations/{station_id}/events
const url = 'https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/events?resource_id=res_01J9ZK3Q8M4XW7D2N5R6T0V1BC';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/events?resource_id=res_01J9ZK3Q8M4XW7D2N5R6T0V1BC' \ --header 'Authorization: Bearer <token>'Station 이벤트의 SSE 스트림. 이벤트마다 id: {seq}, event: {type}, data: {StationEvent JSON}.
Last-Event-ID 헤더(또는 last_event_id)로 이어 받는다. 링버퍼(최근 1000개·15분)를 넘었으면 event: resync 를 보내고 닫는다 — REST 로 다시 읽는다.
열려 있는 동안 서버가 깨어 있으므로 오래 여는 화면에는 WebSocket 을 쓴다.
가이드 — 이벤트와 웹훅
파라미터
섹션 제목: “파라미터”경로 파라미터
섹션 제목: “경로 파라미터”station_id
필수
string
예시
stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC쿼리 파라미터
섹션 제목: “쿼리 파라미터”ticket
string
인증 헤더를 싣지 못하는 클라이언트(EventSource)용.
last_event_id
integer format: int64
types
string
쉼표로 구분한 종류 또는 접두사 (command.*,device.status_changed).
resource_id
string
예시
res_01J9ZK3Q8M4XW7D2N5R6T0V1BC200
섹션 제목: “200”성공.
Media typetext/event-stream
string
400
섹션 제목: “400”요청 형식이 틀렸다 — VALIDATION_ERROR(details.errors[]) 또는 BAD_REQUEST. 본문은 오류 봉투.
401
섹션 제목: “401”인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.
404
섹션 제목: “404”없거나 내 것이 아니다 — *_NOT_FOUND. 본문은 오류 봉투.
429
섹션 제목: “429”한도를 넘었다 — Retry-After 초 뒤에 다시. 본문은 오류 봉투.
500
섹션 제목: “500”서버 오류 — INTERNAL_ERROR. 본문은 오류 봉투.
503
섹션 제목: “503”의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.