Skip to content

차량 상태 확인 API 개발자 가이드

서비스 개요

원격 차량 상태 서비스는 모바일 앱이나 웹 플랫폼을 통해 사용자가 차량의 현재 상태 정보를 원격으로 조회할 수 있는 텔레매틱스 서비스입니다.

서비스 특징

  • 실시간 원격 차량 상태 조회
  • 차량 제어 기능이 없는 조회 전용 서비스
  • 사용자 편의 중심의 상태 확인
  • 차량 이용 계획 수립 지원
  • 차량 관리 효율성 향상

법적 요구사항

  • 개인정보 보호법 준수
  • 차량 상태 정보 수집에 대한 명시적 동의 필요
  • 위치 정보에 대한 별도 동의 필요
  • 데이터 보유 정책 준수

주요 시나리오

시나리오 1: 차량 상태 업데이트 요청 및 처리

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 업데이트 요청: 최신 차량 상태 업데이트 요청
  2. 대시보드 조회: 표시를 위한 전체 차량 상태 조회
  3. 위치 확인: 현재 차량 위치 확인
  4. 이용 모니터링: 주행 거리 및 연료 레벨 모니터링연료 상태 조회

시나리오 2: 직접 차량 상태 조회

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 상태 조회: 전체 차량 상태 조회
  2. 대시보드 표시: 종합 차량 상태 대시보드 표시

🏢 콜센터:

  1. 상태 제공: 앱에 최신 차량 상태 제공
  2. 이력 조회: 분석을 위한 상태 변경 이력 조회
  3. 이벤트 스트리밍: SSE를 통한 실시간 상태 업데이트 제공

시나리오 3: 부품별 상세 상태 조회

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 차량 위치 조회: 차량 위치 조회
  2. 연료 상태 조회: 연료/배터리 상태 조회
  3. 주행 거리 조회: 적산 거리계 조회

🏢 콜센터:

  1. 부품별 상태 제공: 각 부품별 상세 상태 제공
  2. 부품별 분석: 부품별 상태 분석 및 경고 생성

시나리오 4: 상태 이력 조회 및 분석

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 이력 조회: 상태 변경 이력 조회
  2. 추이 차트 표시: 상태 변경 추이 차트 표시

🏢 콜센터:

  1. 이력 관리: 상태 변경 이력 자동 관리
  2. 패턴 분석: 상태 변경 패턴 분석
  3. 통계 생성: 상태 관련 통계 자동 생성

시나리오 5: 상태 알림 설정 및 관리

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 알림 설정 조회: 알림 설정 조회
  2. 알림 설정 업데이트: 알림 설정 업데이트

🏢 콜센터:

  1. 설정 관리: 알림 설정 자동 관리
  2. 임계치 관리: 부품별 임계치 관리
  3. 알림 전송: 설정된 알림 자동 전송

시나리오 6: 실시간 상태 이벤트 수신

엔티티별 API 흐름:

📱 앱 (사용자):

  1. SSE 연결: 실시간 상태 이벤트 스트림 연결
  2. 실시간 수신: 실시간으로 차량 상태 변경 수신

🏢 콜센터:

  1. 이벤트 스트림 제공: 실시간 상태 이벤트 스트림 제공
  2. 이벤트 전송: 실시간으로 상태 변경 이벤트 전송

시나리오 7: 상태 분석 및 통계

엔티티별 API 흐름:

📱 앱 (사용자):

  1. 분석 조회: 상태 분석 데이터 조회

🏢 콜센터:

  1. 상태 분석: 평균 엔진 온도, 배터리 건강 추이 등 분석
  2. 통계 제공: 상태 관련 통계 데이터 제공
  3. 정비 점수: 차량 정비 점수 계산

시나리오 8: 비상 상황 대응

엔티티별 API 흐름:

🏢 콜센터:

  1. 비상 알림 생성: 엔진 과열 등 비상 상황 감지 시 알림 생성
  2. 비상 연락: 사용자와 비상 전화 연락
  3. 견인차 지원: 비상 상황 시 견인차 출동 요청

📱 앱 (사용자):

  1. 비상 알림 수신: "엔진 과열이 감지되었습니다. 즉시 안전한 곳에 정차하십시오." 알림 수신

주요 기능

📱 앱 구현 기능

1. 차량 상태 조회 및 모니터링

2. 상태 이력 및 분석

3. 상태 분석 조회

  • 분석 데이터 조회: 상태 분석 데이터 조회
  • 정비 점수: 차량 정비 점수 확인
  • 효율성 분석: 차량 효율성 관련 분석 정보 확인

🏢 콜센터 구현 기능

1. 차량 상태 데이터 수집 시스템

  • 데이터 수신: 실시간 차량 상태 데이터 수신
  • 데이터 저장: 상태 데이터의 안전한 저장
  • 상태 관리: 최신 상태 자동 관리
  • 품질 관리: 상태 데이터 품질 및 정확성 관리
  • 데이터 검증: 상태 데이터 유효성 검증

2. 상태 이력 관리 시스템

  • 이력 수집: 상태 변경 이력 자동 수집
  • 이력 관리: 상태 이력 자동 관리
  • 패턴 분석: 상태 변경 패턴 자동 분석
  • 통계 생성: 상태 관련 통계 자동 생성

3. 알림 및 경고 시스템

  • 알림 설정 관리: 알림 설정 자동 관리
  • 임계치 관리: 부품별 임계치 자동 관리
  • 알림 생성: 상태 이상 감지 시 알림 자동 생성
  • 푸시 알림: 사용자 앱으로 푸시 알림 자동 전송
  • 비상 알림: 비상 상황에 대한 즉각적인 알림

4. 상태 분석 시스템

  • 상태 분석: 상태 분석 자동 실행
  • 통계 생성: 상태 관련 통계 자동 생성
  • 정비 점수: 차량 정비 점수 자동 계산
  • 효율성 분석: 차량 효율성 자동 분석

5. API 서비스 관리

  • API 응답 처리: 차량 상태 관련 API 요청 처리
  • 요청 검증: API 요청 유효성 검증
  • 성능 모니터링: API 응답 시간 및 가용성 모니터링
  • 에러 핸들링: API 에러 및 예외 상황 대응
  • 버전 관리: API 버전 및 호환성 관리

6. 보안 및 프라이버시

  • 상태 수집 동의: 차량 상태 데이터 수집 동의 관리
  • 프라이버시 보호: 사용자 차량 상태 정보 프라이버시 보호
  • 데이터 보안: 차량 상태 데이터의 안전한 처리
  • 감사 로깅: 상태 정보 접근 및 처리에 대한 감사 로그 유지
  • 접근 제어: 사용자별 상태 정보 접근 권한 관리

7. 시스템 운영 및 모니터링

  • 시스템 상태 모니터링: 차량 상태 시스템 24시간 모니터링
  • 데이터 품질 관리: 상태 데이터 품질 및 정확성 관리
  • 센서 상태 모니터링: 차량 센서 통신 상태 모니터링
  • 예외 처리: 네트워크, 센서, 데이터 처리 예외 대응
  • 시스템 최적화: 상태 데이터 처리 로직 최적화

8. 데이터 분석 및 통계

  • 상태 패턴 분석: 차량 상태 변경 패턴 자동 분석
  • 이용 통계: 상태 조회 이용 통계 자동 생성
  • 고장 통계: 차량 고장 관련 통계 자동 생성
  • 서비스 품질 분석: 상태 서비스 품질 자동 분석
  • 개선 권장 사항: 서비스 개선 권장 사항 자동 생성

시퀀스 다이어그램

차량 상태 시스템 흐름

차량 상태

API 엔드포인트

헤더, 응답 코드 및 에러 형식은 공통 API 사양을 참조하십시오.

전체 차량 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/status" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

차량 위치 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/location" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

연료 상태 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/fuel" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

주행 거리 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/odometer" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

차량 상태 변경 이력 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/status/history?limit=10" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

차량 상태 업데이트 요청

bash
curl -X POST "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/status/refresh" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

차량 상태 알림 조회

bash
curl -X GET "https://api.ecarus.run/api/v1/information/vehicles/KMHSH81C7LU123456/status/alerts" \
     -H "Authorization: Bearer sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d"

데이터 모델

차량 상태 정보 응답

json
{
  "vin": "KMHSH81C7LU123456",
  "userId": "user123",
  "timestamp": "2026-01-13T14:30:00Z",
  "status": {
    "ignition": "OFF",
    "engine": "STOPPED",
    "transmission": "PARK",
    "doors": {
      "driver": "CLOSED",
      "passenger": "CLOSED",
      "rearLeft": "CLOSED",
      "rearRight": "CLOSED",
      "trunk": "CLOSED"
    },
    "windows": {
      "driver": "CLOSED",
      "passenger": "CLOSED",
      "rearLeft": "CLOSED",
      "rearRight": "CLOSED"
    },
    "lights": {
      "headlights": "OFF",
      "parkingLights": "OFF",
      "brakeLights": "OFF",
      "turnSignals": {
        "left": "OFF",
        "right": "OFF"
      },
      "hazardLights": "OFF"
    },
    "security": {
      "immobilizer": "ACTIVE",
      "alarm": "DISARMED",
      "locked": true
    },
    "climate": {
      "airConditioning": "OFF",
      "heating": "OFF",
      "fanSpeed": 0,
      "temperature": 22.5,
      "unit": "CELSIUS"
    }
  },
  "location": {
    "latitude": 37.4021,
    "longitude": 127.1087,
    "altitude": 15.2,
    "accuracy": 5.0,
    "timestamp": "2026-01-13T14:30:00Z"
  },
  "fuel": {
    "level": 65.5,
    "range": 320,
    "unit": "PERCENTAGE",
    "type": "GASOLINE",
    "estimatedRefill": "2026-01-20T00:00:00Z"
  },
  "battery": {
    "level": 85.2,
    "voltage": 12.6,
    "health": "GOOD",
    "charging": false,
    "estimatedLife": 24,
    "unit": "PERCENTAGE"
  },
  "odometer": {
    "total": 48200,
    "trip": 125,
    "unit": "KILOMETERS",
    "lastReset": "2020-01-01T00:00:00Z"
  },
  "sensors": {
    "tirePressure": {
      "frontLeft": 32.5,
      "frontRight": 32.8,
      "rearLeft": 31.9,
      "rearRight": 32.2,
      "unit": "PSI",
      "status": "NORMAL"
    },
    "engineTemperature": 95.2,
    "coolantTemperature": 88.5,
    "oilPressure": 45.8,
    "unit": "CELSIUS"
  },
  "alerts": [
    {
      "alertId": "alert-001",
      "type": "LOW_FUEL",
      "severity": "MEDIUM",
      "message": "연료 레벨이 20% 미만입니다.",
      "timestamp": "2026-01-13T14:30:00Z",
      "acknowledged": false
    }
  ]
}

차량 위치 정보 응답

json
{
  "vin": "KMHSH81C7LU123456",
  "userId": "user123",
  "timestamp": "2026-01-13T14:30:00Z",
  "location": {
    "latitude": 37.4021,
    "longitude": 127.1087,
    "altitude": 15.2,
    "accuracy": 5.0,
    "heading": 185.5,
    "speed": 0,
    "unit": "KM/H"
  },
  "address": {
    "country": "South Korea",
    "city": "Seoul",
    "district": "Gangnam-gu",
    "street": "Teheran-ro",
    "building": "123",
    "postalCode": "06234"
  },
  "geofence": {
    "withinGeofence": true,
    "geofenceId": "home-001",
    "geofenceName": "Home",
    "distanceFromCenter": 150,
    "unit": "METERS"
  },
  "parking": {
    "isParked": true,
    "parkingDuration": 28500,
    "parkingType": "STREET",
    "parkingLocation": {
      "floor": "B2",
      "zone": "A-15",
      "coordinates": {
        "latitude": 37.4021,
        "longitude": 127.1087
      }
    }
  },
  "lastUpdate": "2026-01-13T14:30:00Z"
}

연료/배터리 상태 정보 응답

json
{
  "vin": "KMHSH81C7LU123456",
  "userId": "user123",
  "timestamp": "2026-01-13T14:30:00Z",
  "fuel": {
    "level": 65.5,
    "range": 320,
    "unit": "PERCENTAGE",
    "type": "GASOLINE",
    "capacity": 50,
    "currentVolume": 32.75,
    "volumeUnit": "LITERS",
    "consumption": {
      "average": 8.5,
      "current": 7.2,
      "unit": "L/100KM"
    },
    "estimatedRefill": {
      "date": "2026-01-20T00:00:00Z",
      "mileage": 50900,
      "remainingRange": 320
    },
    "lastRefill": {
      "date": "2026-01-10T00:00:00Z",
      "mileage": 47500,
      "volume": 45,
      "cost": 65000
    }
  },
  "battery": {
    "level": 85.2,
    "voltage": 12.6,
    "health": "GOOD",
    "charging": false,
    "estimatedLife": 24,
    "unit": "PERCENTAGE",
    "temperature": 25.5,
    "temperatureUnit": "CELSIUS",
    "capacity": 60,
    "currentCapacity": 51.12,
    "capacityUnit": "AH",
    "chargeCycles": 145,
    "lastCharge": {
      "date": "2026-01-13T08:00:00Z",
      "duration": 7200,
      "durationUnit": "SECONDS",
      "chargeLevel": 90.5
    },
    "estimatedReplacement": {
      "date": "2028-01-13T00:00:00Z",
      "mileage": 95000
    }
  },
  "alerts": [
    {
      "alertId": "alert-001",
      "type": "LOW_FUEL",
      "severity": "MEDIUM",
      "message": "연료 레벨이 20% 미만입니다.",
      "threshold": 20,
      "currentValue": 65.5,
      "timestamp": "2026-01-13T14:30:00Z",
      "acknowledged": false
    },
    {
      "alertId": "alert-002",
      "type": "BATTERY_HEALTH",
      "severity": "LOW",
      "message": "배터리 상태가 양호하지만 노화가 진행 중입니다.",
      "healthScore": 75,
      "timestamp": "2026-01-13T14:30:00Z",
      "acknowledged": true
    }
  ]
}

주행 거리 정보 응답

json
{
  "vin": "KMHSH81C7LU123456",
  "userId": "user123",
  "timestamp": "2026-01-13T14:30:00Z",
  "odometer": {
    "total": 48200,
    "trip": 125,
    "unit": "KILOMETERS",
    "lastReset": {
      "date": "2020-01-01T00:00:00Z",
      "mileage": 0
    },
    "daily": {
      "today": 125,
      "yesterday": 85,
      "average": 95
    },
    "weekly": {
      "thisWeek": 425,
      "lastWeek": 380,
      "average": 402
    },
    "monthly": {
      "thisMonth": 1850,
      "lastMonth": 1620,
      "average": 1735
    },
    "yearly": {
      "thisYear": 48200,
      "lastYear": 42500,
      "average": 45350
    }
  },
  "trip": {
    "currentTrip": {
      "id": "trip-001",
      "startTime": "2026-01-13T12:00:00Z",
      "startMileage": 48075,
      "duration": 9000,
      "durationUnit": "SECONDS",
      "distance": 125,
      "averageSpeed": 50,
      "maxSpeed": 85,
      "speedUnit": "KM/H",
      "fuelConsumed": 9.0,
      "fuelUnit": "LITERS",
      "efficiency": 7.2,
      "efficiencyUnit": "L/100KM"
    },
    "lastTrips": [
      {
        "id": "trip-000",
        "date": "2026-01-12T18:30:00Z",
        "distance": 85,
        "duration": 5400,
        "fuelConsumed": 6.8,
        "efficiency": 8.0
      }
    ]
  },
  "maintenance": {
    "nextService": {
      "type": "OIL_CHANGE",
      "dueMileage": 50000,
      "dueDate": "2026-02-10T00:00:00Z",
      "remainingMileage": 1800,
      "remainingDays": 25,
      "urgency": "MEDIUM"
    },
    "lastService": {
      "type": "OIL_CHANGE",
      "mileage": 45000,
      "date": "2025-06-15T00:00:00Z",
      "provider": "공식 서비스 센터",
      "cost": 85000
    }
  },
  "alerts": [
    {
      "alertId": "alert-001",
      "type": "MILEAGE_MILESTONE",
      "severity": "INFO",
      "message": "차량이 48,000km 주행 거리에 도달했습니다.",
      "mileage": 48200,
      "timestamp": "2026-01-13T14:30:00Z",
      "acknowledged": false
    }
  ]
}

보안 및 프라이버시

인증 및 권한 부여

  • 사용자 인증 토큰 필요 (JWT/OAuth2)
  • 차량 접근 권한 확인
  • 상태 조회 권한 확인

데이터 보안

  • 모든 API 통신은 HTTPS/TLS 암호화
  • 차량 상태 데이터 전송 시 보안 대책 적용
  • 민감한 위치 정보에 대한 별도 동의 절차

프라이버시 보호

  • 차량 상태 정보 수집에 대한 명시적 동의
  • 위치 정보 수집에 대한 별도 동의 필요
  • 데이터 보유 정책 준수
  • 사용자 요청 시 데이터 삭제 권한 보장

접근 제어

  • VIN 기반 차량 접근 권한 확인
  • 사용자별 상태 정보 접근 권한 관리
  • 이상 접근 패턴 감지

예외 처리

네트워크 관련

  • 연결 실패: 오프라인 모드 지원, 마지막 상태 캐싱
  • 응답 지연: 로딩 인디케이터, 타임아웃 처리
  • 서버 다운: 에러 메시지 표시, 재시도 제안

차량 상태 관련

  • 차량 OFF: 마지막 저장된 상태 표시
  • 장기간 데이터 미수신: 데이터 업데이트 필요 알림
  • 센서 오류: 센서 오류 알림, 기본값 표시

온디맨드 조회 관련

  • 차량 Wake-up 실패: Wake-up 실패 알림
  • 응답 타임아웃: 타임아웃 처리
  • 배터리 소모 우려: 배터리 소모 주의 알림

권한 관련

  • 인증 실패: 재인증 요청
  • 권한 부족: 권한 부족에 대한 명확한 설명 제공
  • 위치 정보 권한: 위치 정보 접근 권한 부족 알림

테스트 설정

Base URL: https://api.ecarus.run/api/v1/information
인증 토큰: sk_4f9c7b8e2d1a6c0f3e7a9b5d8c1e4f2a7c6d9e0b3f5a8c1d4e7f9b2c6a1e3d
샘플 VIN: KMHSH81C7LU123456

대화형 API 테스트를 위해 Swagger UI를 사용하십시오.

배포 고려사항

앱 스토어 등록

  • 차량 상태 조회 권한 요청
  • 위치 정보 수집 권한 요청 (선택 사항)
  • 차량 상태 모니터링 기능에 대한 명확한 설명

법규 준수

  • 개인정보 보호법 준수
  • 차량 상태 정보 수집에 대한 명시적 동의 필요
  • 위치 정보에 대한 별도 동의 필요
  • 데이터 보유 정책 준수

차량 호환성

  • 다양한 차종 지원
  • 내연기관/전기차/하이브리드 지원
  • OEM별 상태 정보 형식 차이 반영 고려
  • 센서 유형별 데이터 처리 차이 고려

Released under the MIT License.