자율차마스터정보 (수집)

자율주행 서비스의 자율 주행 차량 마스터 정보를 수집하여 플랫폼 내에 적재하는 기능을 제공합니다.

1. 자율차마스터정보 수집 API (PostAutonomousCarMasterInfo)

요청 URL

https://service.mqnicrnd5.com/api/v1/acm/collect/pacm

연계 주기

일정 주기 마다 (추후 안내 예정), 변경 시

프로토콜

HTTPS

HTTP 메서드

POST

데이터 포맷

사용법

  • 정보 갱신 유형(I : 추가, U : 변경, D : 삭제)

  • 차량 부분갱신 할 경우

    • deltaUpdateFlag = 'y' 으로 전송

    • autonomousCarMaster 리스트에 담긴 차량 정보가 추가로 갱신됩니다.

    • 전체 차량에 대해서도 부분갱신으로 전송 가능합니다.

    • 정보 갱신 유형은 updateType 필드를 사용하세요.

  • 차량 전체갱신 할 경우

    • deltaUpdateFlag = 'n' 으로 전송

    • autonomousCarMaster 리스트에 담긴 차량 정보로 전체 갱신 되며, 해당 리스트에 존재하지 않는 차량은 삭제됩니다.

    • autonomousCarMaster 리스트에는 해당 과제나 시스템의 전체 자율차 정보를 제공해주세요.

    • 정보 갱신 유형은 updateType = 'I' 로 하여 전송해주세요. 변경이 없는 차량의 경우도 모두 동일하게 입력해주세요.

  • 요청 데이터 예시

  1. 전체 갱신

해당 과제 혹은 시스템에 기존 등록되어 있던 차량은 삭제 되고, autonomousCarMaster 필드에 들어온 차량 정보가 등록됩니다. updateType 필드의 값과는 관계 없이 'I' (추가) 로 등록됩니다.

{
    "deltaUpdateFlag": "n",
    "autonomousCarMaster": [
        {
        "vehicleId": "12345",
        "serviceNo": "k5",
        "vehicleType": "",
        "maker": "MQNIC",
        "updateType": "U",
        "updateDttm": "20250901155600"
        },
                {
        "vehicleId": "12346",
        "serviceNo": "k5",
        "vehicleType": "",
        "maker": "MQNIC",
        "updateType": "I",
        "updateDttm": "20250901155600"
        }
    ]
}

  1. 부분 갱신

해당 과제 혹은 시스템에 기존 등록되어 있던 차량과는 관계 없이, autonomousCarMaster 필드에 추가로 들어온 차량 정보가 갱신됩니다. updateType 을 참조하여 12345번 차량은 정보 업데이트, 12346번 차량은 삭제, 12347번 차량은 추가됩니다.

{
    "deltaUpdateFlag": "y",
    "autonomousCarMaster": [
        {
        "vehicleId": "12345",
        "serviceNo": "k5",
        "vehicleType": "TEST",
        "maker": "MQNIC",
        "updateType": "U",
        "updateDttm": "20250902155600"
        },
        {
        "vehicleId": "12346",
        "serviceNo": "k5",
        "vehicleType": "",
        "maker": "MQNIC",
        "updateType": "D",
        "updateDttm": "20250902155600"
        },
       {
        "vehicleId": "12347",
        "serviceNo": "k5",
        "vehicleType": "TEST",
        "maker": "MQNIC",
        "updateType": "I",
        "updateDttm": "20250902155600"
        }
    ]
}

참고사항

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 접근 토큰(Access Token) 을 추가해야 합니다. 접근 토큰 앞에 "Bearer " 문자열을 추가해야 한다는 점에 주의하세요.

> POST /api/v1/acm/collect/pacm
> Host: service.mqnicrnd5.com
> User-Agent: curl/7.64.1
> Accept: */*
> Authorization: Bearer <접근 토큰>

요청 예시

curl --location 'https://service.mqnicrnd5.com/api/v1/acm/collect/pacm' \
--header 'Authorization: Bearer <접근 토큰>' \
--header 'Content-Type: application/json' \
--data '{
    "deltaUpdateFlag": "n",
    "autonomousCarMaster": [
        {
            "vehicleId": "99371",
            "serviceNo": "10",
            "vehicleType": "",
            "maker": "",
            "updateType": "I",
            "updateDttm": "20240617142040"
        }
    ]
}'

응답 파라미터

수집 API의 경우 별도 응답 파라미터가 아닌 HTTP Status Code로 성공 여부를 구분합니다.

Status Code
설명

200

성공

400

요청 파라미터 검증 실패

401

인증 실패

500

서버 오류

2. 자율차마스터정보 수집 API 구현 예제

다음은 각 언어별 자율차마스터정보 수집 API 구현 예제입니다.

자율차마스터정보 수집 API (PostAutonomousCarMasterInfo)

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import org.json.JSONObject; // JSON 라이브러리 추가 필요

public class CallAPI {

    public static void main(String[] args) {
        String accessToken = "Bearer <접근 토큰>"; // 실제 접근 토큰으로 교체 필요

        // JSON 객체 생성
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("deltaUpdateFlag", "y");
        
        // 'autonomousCarMaster' JSON 배열, 객체 생성 및 삽입
        JSONArray jsonArray = new JSONArray();
        
        JSONObject acm = new JSONObject();
        acm.put("vehicleId", "99371");
        acm.put("serviceNo", "10");
        acm.put("vehicleType", "");
        acm.put("maker", "");
        acm.put("updateType", "I");
        acm.put("updateDttm", "20240617142040");
        
        jsonArray.put(acm);
  
        // 위와 같이 jsonArray에 다른 자율차량 데이터들 추가
        
        jsonObject.put("autonomousCarMaster", jsonArray);
        
        String apiURL = "https://service.mqnicrnd5.com/api/v1/acm/collect/pacm"; // POST 요청 URL

        String responseBody = post(apiURL, jsonObject.toString(), accessToken);

        System.out.println(responseBody);
    }

    private static String post(String apiUrl, String jsonInputString, String accessToken) {
        HttpURLConnection con = connect(apiUrl);
        try {
            con.setRequestMethod("POST");
            con.setRequestProperty("Authorization", accessToken);
            con.setRequestProperty("Content-Type", "application/json; utf-8");
            con.setRequestProperty("Accept", "application/json");
            con.setDoOutput(true);

            try(OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
                os.write(input, 0, input.length);           
            }

            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
                return readBody(con.getInputStream());
            } else { // 오류 발생
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException("API 호출 중 오류 발생: ", e);
        } finally {
            con.disconnect();
        }
    }


    private static HttpURLConnection connect(String apiUrl) {
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection) url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
        }
    }


    private static String readBody(InputStream body) {
        InputStreamReader streamReader = new InputStreamReader(body);


        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();


            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }


            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException("API 응답을 읽는 데 실패했습니다.", e);
        }
    }
}

Last updated