자동 사고 통보 (ACN) API 개발자 가이드
서비스 개요
자동 사고 통보(ACN)는 차량 충돌 사고 발생 시 사고 상황을 자동으로 감지하고 사고 정보를 콜센터나 긴급 구조 기관에 전송하여 구조를 요청하는 텔레매틱스 서비스입니다.
서비스 특징
- 사고 자동 감지 및 즉각적인 구조 요청
- 긴급 구조 요청을 위한 수동 SOS 버튼 제공
- 사고 위치 정보 및 상세 데이터 전송
- 자동 음성 통화 연결
- 구조 시간 단축을 통한 생존율 향상
법적 요구사항
- EU: 2018년부터 신차 내 eCall 설치 의무화
- 국가별 서비스 방식 차이 반영 (EU - PSAP 직접 연결, 미국 - OEM 경유 등)
- 개인정보 보호법 준수
- 긴급 상황 데이터의 최우선 처리
주요 시나리오
시나리오 1: 사고 자동 감지 및 긴급 통화 연결
엔티티별 API 흐름:
🚗 차량 (TCU):
- 사고 감지: 에어백 전개 또는 차량 전복을 통해 사고 감지
- 데이터 수집: GPS, VIN, 속도 등 MSD(Minimum Set of Data) 수집
- 긴급 연락: 즉각적인 음성 통화 연결 및 데이터 전송
🏢 콜센터:
- 이벤트 모니터링: SSE를 통한 사고 알림 수신
- 사건 생성: ACN 레코드 생성 및 지도상 위치 확인
- 구조 협력: 구조 기관(119/112)에 출동 요청
📱 앱 (사용자):
- 모니터링: SSE를 통한 사고 알림 수신
- 상태 확인: 현재 사고 처리 상태 확인
- 시스템 헬스: ACN 시스템 상태 확인
시나리오 2: 사고 데이터 처리 및 상태 관리
엔티티별 API 흐름:
🏢 콜센터:
- 상태 관리: 상담원 가용 상태 확인
- 사건 할당: 할당된 사건 관리
- 통계 분석: ACN 처리량 모니터링
- 이력 감사: 과거 사고 기록 조회
🚗 차량 (TCU):
- 통화 상태 전송: 통화 종료 시 VCT 이벤트 전송
- 상태 업데이트: 사고 상태 변경 정보 전송
- 데이터 재전송: 통신 실패 시 데이터 재전송 시도
- 시스템 상태 유지: ACN 시스템과의 연결 상태 유지
📱 앱 (사용자):
- 실시간 상태 모니터링: SSE를 통한 사고 처리 상태 수신
- 사고 위치 확인: 지도상에 사고 위치 표시
- 시스템 헬스 상태: 시스템 상태 모니터링
시나리오 3: 사고 종료 및 후속 처리
엔티티별 API 흐름:
🏢 콜센터:
- 사건 종료: 구조 완료 후 ACN 사건 종료
- 결과 기록: 최종 구조 결과 및 종료 사유 기록
📱 앱 (사용자):
- 결과 확인: 최종 사고 처리 결과 확인
- 이력 관리: 완료된 사고 이력 보기
주요 기능
📱 앱 구현 기능
1. ACN 시스템 모니터링
- 시스템 헬스: 전반적인 ACN 시스템 상태 모니터링
- 실시간 알림: SSE/푸시를 통한 사고 알림 수신
- 상태 조회: 현재 사고 처리 상태 확인
- 이력 감사: 과거 사고 기록 및 결과 조회
🏢 콜센터 구현 기능
1. ACN 사건 관리
- 사건 모니터링: 실시간 차량 사고 모니터링
- 상태 조회: 특정 사고 상세 정보 조회
- 사건 종료: 조사 완료 후 사건 종료 처리
- 이력 관리: 과거 사고 기록 관리
2. 상담원 및 통계 분석
- 상담원 상태: 상담원 가용 상태 모니터링
- 할당된 사건: 상담원 업무량 관리
- 서비스 통계: 전반적인 ACN 성능 분석
- 시스템 헬스: 전반적인 ACN 시스템 헬스 모니터링
시퀀스 다이어그램
ACN (자동 사고 통보) 시스템 흐름

API 엔드포인트
헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.
ACN 통계 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/stats" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"ACN 사건 상태 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/status?cid=ACN_20260307_001" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"ACN 사건 이력 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/history" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"ACN 사건 종료
bash
curl -X POST "https://api.ecarus.run/api/v1/safety/vehicles/KMHSH81C7LU123456/acn/close" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
-H "Content-Type: application/json" \
-d '{
"cid": "ACN_20260307_001",
"closureReason": "EMERGENCY_SERVICES_DISPATCHED",
"result": "SUCCESS",
"agentId": "AGENT_001",
"notes": "모든 피해자가 구조되었으며 안전합니다."
}'ACN 상담원 상태 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/agents/AGENT_001/status" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"상담원 할당 ACN 사건 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/agents/AGENT_001/incidents" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"ACN 시스템 상태 조회
bash
curl -X GET "https://api.ecarus.run/api/v1/safety/acn/system/health" \
-H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"ACN 실시간 이벤트 수신 (SSE)
참고: 브라우저를 통해 접속하거나 전용 SSE 클라이언트 사용을 권장합니다.
bash
curl -N -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d" \
"https://api.ecarus.run/api/v1/safety/acn/events"데이터 모델
ACN 통계 응답 (Statistics Response)
json
{
"totalIncidents": 1250,
"activeIncidents": 3,
"resolvedToday": 8,
"averageResponseTime": "4.5 min",
"successRate": 98.2
}ACN 상태 응답 (Status Response)
json
{
"vin": "KMHSH81C7LU123456",
"cid": "ACN_20260307_001",
"status": "ACTIVE",
"timestamp": "2026-03-07T14:30:00Z",
"location": {
"latitude": 37.4021,
"longitude": 127.1023,
"accuracy": 5.2
},
"severity": "HIGH",
"trigger": "AIRBAG_DEPLOYMENT",
"rescueStatus": "DISPATCHED",
"estimatedArrival": "2026-03-07T14:45:00Z"
}ACN 이력 응답 (History Response)
json
{
"vin": "KMHSH81C7LU123456",
"incidents": [
{
"cid": "ACN_20260307_001",
"timestamp": "2026-03-07T14:30:00Z",
"severity": "HIGH",
"status": "RESOLVED",
"duration": "45 min",
"trigger": "AIRBAG_DEPLOYMENT",
"location": {
"latitude": 37.4021,
"longitude": 127.1023
},
"resolution": "EMERGENCY_SERVICES_DISPATCHED"
}
],
"total": 1
}ACN 사건 종료 요청 (Closure Request)
json
{
"cid": "ACN_20260307_001",
"closureReason": "EMERGENCY_SERVICES_DISPATCHED",
"result": "SUCCESS",
"notes": "모든 피해자가 구조되었으며 안전합니다."
}ACN 사건 종료 응답 (Closure Response)
json
{
"cid": "ACN_20260307_001",
"status": "CLOSED",
"timestamp": "2026-03-07T15:15:00Z"
}ACN 상담원 상태 응답 (Agent Status Response)
json
{
"agentId": "AGENT_001",
"status": "ACTIVE",
"currentIncidents": 2,
"totalHandled": 145,
"averageHandlingTime": "12.3 min",
"lastActivity": "2026-03-07T14:45:00Z"
}ACN 상담원 사건 조회 응답 (Agent Incidents Response)
json
{
"agentId": "AGENT_001",
"incidents": [
{
"cid": "ACN_20260307_001",
"vin": "KMHSH81C7LU123456",
"severity": "HIGH",
"status": "ACTIVE",
"timestamp": "2026-03-07T14:30:00Z",
"location": {
"latitude": 37.4021,
"longitude": 127.1023
},
"assignedTime": "2026-03-07T14:32:00Z",
"estimatedResolution": "2026-03-07T15:15:00Z"
}
],
"total": 1,
"activeCount": 1
}ACN 시스템 상태 응답 (System Status Response)
json
{
"status": "HEALTHY",
"timestamp": "2026-03-07T15:00:00Z",
"services": {
"psapConnection": "ACTIVE",
"voiceCallService": "ACTIVE",
"dataTransmission": "ACTIVE",
"database": "ACTIVE"
},
"metrics": {
"responseTime": "0.8s",
"uptime": "99.9%",
"activeConnections": 45
}
}ACN 실시간 이벤트 (SSE)
json
{
"type": "INCIDENT_CREATED",
"timestamp": "2026-03-07T14:30:00Z",
"data": {
"cid": "ACN_20260307_001",
"vin": "KMHSH81C7LU123456",
"severity": "HIGH",
"location": {
"latitude": 37.4021,
"longitude": 127.1023,
"accuracy": 5.2
},
"trigger": "AIRBAG_DEPLOYMENT"
}
}보안 및 프라이버시
인증 및 권한 부여
- 사용자 인증 토큰 필요 (JWT/OAuth2)
- 차량 접근 권한 확인
- 긴급 상황 최우선 처리 권한 확인
데이터 보안
- 모든 API 통신은 HTTPS/TLS 암호화
- 사고 데이터 전송을 위한 추가 보안 조치 적용
- 민감 정보는 서버측에만 저장
프라이버시 보호
- 사고 정보 수집에 대한 명시적 동의
- 긴급 상황 시 위치 정보 수집 목적 명시
- 사고 데이터 보존 기간 정책 준수
- 사용자 요청 시 데이터 삭제 권리 보장
접근 제어
- VIN 기반 차량 접근 권한 확인
- 긴급 상황 시 권한 최우선 처리
- 외부 기관(구조팀) 접근을 위한 별도 인증 절차 적용
예외 처리
네트워크 관련
- 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
- 응답 지연: 로딩 인디케이터, 타임아웃 처리
- 서버 다운: 에러 메시지 표시, 재시도 제안
차량 상태 관련
- 차량 오프라인: 마지막 사고 정보 표시, 오프라인 상태 알림
- 통신 불가: 지연된 사고 정보 처리, 재전송 로직 적용
- 음성 통화 실패: 대체 연결 수단 시도
긴급 상황 관련
- 위치 정보 오류: 마지막 위치 기반 추정, Cell ID 기반 위치 보정
- 중복 사고: 중복 이벤트 필터링 및 최신 정보 우선순위 설정
- 승객 무의식 상태: 자동 음성 통화 연결 유지
테스트 설정
Base URL: https://api.ecarus.run/api/v1/safety
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456
대화형 API 테스트를 위해 Swagger UI를 사용하십시오.
배포 고려사항
앱 스토어 등록
- 긴급 알림 권한 요청
- 위치 정보 수집에 대한 명확한 설명
- 긴급 상황 서비스 목적 명시
법규 준수
- 국가별 eCall 서비스 규정 확인
- 긴급 구조 서비스 관련 법령 준수
- 개인정보 보호법 준수 (특히 의료 정보 등)
서비스 통합
- PSAP 또는 구조 기관과의 통합 연동
- 보험사 연동 서비스 준비
- 견인 서비스 업체와의 계약 체결 지원