CSMS 연동 문서
CSMS Integration
외부 API(B2B) 연동 가이드
파트너 시스템용 · v1
본 문서는 파트너/CPO 시스템이 server-to-server로 CSMS 데이터를 조회하는 외부 API의 연동 규격을 정의합니다. 모든 API는 조회 전용(GET)이며, 발급받은 API 키에 매핑된 CPO 소유 자원으로 응답이 자동 스코프됩니다.

개요

항목
Base URLhttps://external-api.oasis-arca.com
프로토콜HTTPS (TLS 1.2 이상)
형식요청 쿼리 파라미터 / 응답 application/json (UTF-8)
메서드전 엔드포인트 GET (조회 전용)
시각 표현ISO-8601. lastHeartbeat 등 instant 필드는 UTC(Z) 표기, zone 없는 local date-time 은 KST(Asia/Seoul) 기준

빠른 시작

curl "https://external-api.oasis-arca.com/api/v1/ext/stations" \
  -H "x-api-key: <발급받은 API 키>"

응답의 null 값 필드는 생략될 수 있습니다. 파서는 필드 부재를 허용하도록 구현하십시오.

목록 API(stations · chargers · transactions)는 공통으로 page(0-base, 기본 0) / size(기본 50, 최대 200) 페이지네이션을 지원하며, 응답에 items와 함께 page/size/totalElements/totalPages 메타가 포함됩니다.

인증 (API 키)

모든 요청에 발급받은 API 키를 x-api-key 헤더로 전달합니다. 키는 CPO(사업자) 단위로 CSMS 운영팀이 발급합니다.

x-api-key: <발급받은 API 키>
API 키는 서버 측에만 보관하십시오. 모바일 앱·웹 프론트엔드 등 클라이언트 코드에 포함하면 안 됩니다. 키가 유출된 경우 운영팀에 즉시 재발급을 요청하십시오.
  • 키 누락·무효 → 403 (게이트웨이 단)
  • 운영팀에서 차단된 키 → 403 (백엔드 단)
  • 다른 CPO 소유 자원은 목록에서 제외되고, 상세 조회 시 404로 응답합니다.

사용량 제한

항목기본 플랜
초당 요청 수10 rps (burst 20)
일일 쿼터100,000 요청/일
초과 시429 Too Many Requests — 재시도 시 지수 백오프 권장

플랜 상향이 필요하면 운영팀에 문의하십시오.

오류 응답

오류는 발생 지점에 따라 두 가지 형태로 반환됩니다.

게이트웨이 단 (키 검증·사용량 제한)

{ "message": "Forbidden" }

백엔드 단 (파라미터·대상 검증)

{ "error": "조회 기간은 최대 92일까지 가능합니다." }
상태 코드발생 지점의미
400백엔드잘못된 파라미터 (기간 92일 초과, size 범위 초과 등)
403게이트웨이API 키 누락 · 무효
403백엔드차단(비활성)된 키
404백엔드대상 없음 (다른 CPO 소유 자원 포함)
429게이트웨이사용량 제한 초과
5xx-서버 오류 — 지수 백오프 후 재시도

변경 정책

  • URL은 /api/v1/ext/로 고정됩니다.
  • 하위 호환을 깨지 않는 변경(응답 필드 추가, enum 값 추가 등)은 예고 없이 이루어질 수 있습니다. 파서는 알 수 없는 필드·enum 값을 무시하도록 구현하십시오.
  • 호환이 깨지는 변경이 필요한 경우 별도 공지 후 진행합니다.

충전소 목록

GET/api/v1/ext/stations

키에 매핑된 CPO가 소유한 충전소 목록을 이름 오름차순으로 반환합니다 (페이지네이션).

쿼리 파라미터

파라미터타입기본값설명
pagenumber00부터 시작하는 페이지 번호
sizenumber50페이지 크기 (최대 200)

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/stations?page=0&size=50" -H "x-api-key: <API 키>"

응답 200

{
  "items": [
    {
      "id": 103,
      "sid": "100001",
      "name": "OO빌딩 충전소",
      "address": "경기 과천시 과천대로7나길 60",
      "detailAddress": "C동 505호",
      "postalCode": "13840",
      "latitude": 37.432265,
      "longitude": 126.994741,
      "createdAt": "2026-06-15T05:16:07.760511"
    }
  ],
  "page": 0,
  "size": 50,
  "totalElements": 1,
  "totalPages": 1
}
필드타입설명
idnumber충전소 ID
sidstring?환경부 충전소 ID(SID) — CPO별 6자리
namestring충전소명
addressstring주소
detailAddressstring?상세 주소
postalCodestring?우편번호
latitude / longitudenumber위도 / 경도 (WGS84)
createdAtstring등록 시각 (ISO-8601, KST(Asia/Seoul) 기준 local date-time)

충전소 상세 (소속 충전기 포함)

GET/api/v1/ext/stations/{stationId}

충전소 단건을 조회합니다. 목록 항목의 필드에 더해 해당 충전소 소속 충전기 목록(chargers, ID 오름차순)이 포함되며, 각 충전기의 스키마는 충전기 목록·상태의 항목과 동일합니다(커넥터 상태 포함). 존재하지 않거나 다른 CPO 소유인 경우 404.

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/stations/103" -H "x-api-key: <API 키>"

응답 200

{
  "id": 103,
  "sid": "100001",
  "name": "OO빌딩 충전소",
  "address": "경기 과천시 과천대로7나길 60",
  "detailAddress": "C동 505호",
  "postalCode": "13840",
  "latitude": 37.432265,
  "longitude": 126.994741,
  "createdAt": "2026-06-15T05:16:07.760511",
  "chargers": [
    {
      "id": 3004,
      "stationId": 103,
      "identity": "CP-0001",
      "maxPowerKw": 7,
      "manufacturer": "바이온에버",
      "modelName": "BSS007K-V11-J",
      "online": true,
      "status": "Available",
      "operative": true,
      "ocppVersion": "1.6",
      "currentFirmwareVersion": "A00.00.01",
      "lastHeartbeat": "2026-07-10T06:00:53.706155Z",
      "kepcoContract": {
        "voltageType": "LOW",
        "planOption": "OPTION_1",
        "demandChargeEnabled": false,
        "contractDemandKw": 150.00
      },
      "connectors": [
        { "connectorId": 1, "status": "Charging", "operative": true, "connectorType": "CCS1", "lastStatusTime": "2026-07-10T06:02:55.678207Z" }
      ]
    }
  ]
}

충전기 목록·상태

GET/api/v1/ext/chargers

CPO 소유 충전기 목록을 ID 오름차순으로 반환합니다 (페이지네이션). 각 충전기에 커넥터별 실시간 상태가 포함됩니다.

쿼리 파라미터

파라미터타입기본값설명
pagenumber00부터 시작하는 페이지 번호
sizenumber50페이지 크기 (최대 200)

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/chargers?page=0&size=50" -H "x-api-key: <API 키>"

응답 200

{
  "items": [
    {
      "id": 3004,
      "stationId": 103,
      "identity": "CP-0001",
      "maxPowerKw": 7,
      "manufacturer": "바이온에버",
      "modelName": "BSS007K-V11-J",
      "online": true,
      "status": "Available",
      "operative": true,
      "ocppVersion": "1.6",
      "currentFirmwareVersion": "A00.00.01",
      "lastHeartbeat": "2026-07-10T06:00:53.706155Z",
      "kepcoContract": {
        "voltageType": "LOW",
        "planOption": "OPTION_1",
        "demandChargeEnabled": false,
        "contractDemandKw": 150.00
      },
      "connectors": [
        { "connectorId": 1, "status": "Charging", "operative": true, "connectorType": "CCS1", "lastStatusTime": "2026-07-10T06:02:55.678207Z" }
      ]
    }
  ],
  "page": 0,
  "size": 50,
  "totalElements": 1,
  "totalPages": 1
}
필드타입설명
idnumber충전기 ID
stationIdnumber?소속 충전소 ID
identitystring?OCPP 충전기 식별자
maxPowerKwnumber?충전기 용량(kW) — 충전기 모델의 최대 출력. 모델 미지정 충전기는 null
manufacturerstring?제조사 — 충전기 모델 기준. 모델 미지정 충전기는 null
modelNamestring?모델명 — 충전기 모델 기준. 모델 미지정 충전기는 null
onlineboolean실시간 접속 여부
statusstring충전기 가용 상태(OCPP 실측) — Available / Unavailable / Faulted
operativeboolean운영자 사용중지 여부 — false면 CSMS 운영자가 중지한 충전기. status(실측)와 별개 축이며, 커넥터에도 connectors[].operative로 동일하게 제공
ocppVersionstring예: 1.6
currentFirmwareVersionstring?현재 펌웨어 버전
lastHeartbeatstring?마지막 heartbeat 시각 (UTC)
kepcoContract.voltageTypestring한전 요금표 전압 구분 — LOW(저압) / HIGH(고압)
kepcoContract.planOptionstring한전 요금표 선택 구분(선택Ⅰ~Ⅳ) — OPTION_1 ~ OPTION_4
kepcoContract.demandChargeEnabledboolean기본요금(수요전력 요금) 반영 여부
kepcoContract.contractDemandKwnumber?한전 계약전력(kW)
connectors[].statusstringOCPP 1.6 ChargePointStatus — Available, Preparing, Charging, SuspendedEVSE, SuspendedEV, Finishing, Reserved, Unavailable, Faulted
connectors[].connectorIdnumber충전기 내 커넥터 번호 (1-base)
connectors[].connectorTypestring?물리 커넥터 타입 (CCS1/Type1/Type2/CHAdeMO/NACS) — 운영자 입력값, 미입력 시 없음
connectors[].lastStatusTimestring?마지막 상태 변경 시각 (UTC)

충전기 상세

GET/api/v1/ext/chargers/{chargerId}

충전기 단건(커넥터 상태 포함)을 조회합니다. 응답 스키마는 목록의 항목과 동일합니다. 존재하지 않거나 다른 CPO 소유인 경우 404.

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/chargers/3004" -H "x-api-key: <API 키>"

충전기 판매 단가 설정 (v1.9.0)

GET/api/v1/ext/chargers/{chargerId}/pricing

충전기에 CSMS 에 설정된 판매 단가를 반환합니다. 충전기에 질의하지 않는 설정값이라 충전기가 오프라인이어도 응답합니다. 기준일(date, KST, 기본 오늘)에 유효한 단가 세트가 할당돼 있으면 시간대별 회원/비회원 단가를, 없으면 CPO 기본 단가를 적용 대상으로 표시합니다. 존재하지 않거나 다른 CPO 소유인 충전기는 404.

쿼리 파라미터

파라미터타입기본값설명
dateYYYY-MM-DD오늘(KST)기준일 — 이 날짜에 유효한 단가 세트 할당을 고릅니다

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/chargers/3004/pricing?date=2026-09-18" -H "x-api-key: <API 키>"

응답 200

{
  "chargerId": 3004,
  "chargerIdentity": "CP-0001",
  "asOf": "2026-09-18",
  "currency": "KRW",
  "priceUnit": "KRW/kWh",
  "source": "ASSIGNED_PRICE_SET",
  "priceSet": {
    "id": 3,
    "name": "주간 세트",
    "validFrom": "2026-09-01",
    "validTo": "2026-12-31",
    "timeRanges": [
      { "start": "00:00:00", "end": "12:00:00", "memberPrice": 150.00, "nonMemberPrice": 180.00 },
      { "start": "12:00:00", "end": "23:59:59", "memberPrice": 220.00, "nonMemberPrice": 260.00 }
    ]
  },
  "defaultUnitPrice": { "member": 200.00, "nonMember": 240.00 },
  "rounding": { "mode": "HALF_UP", "unit": 1 }
}
필드타입설명
asOfstring기준일(KST)
sourcestringASSIGNED_PRICE_SET(기준일에 유효한 단가 세트 있음) / DEFAULT_UNIT_PRICE(없음 → CPO 기본 단가)
priceSetobject?{ id, name, validFrom, validTo, timeRanges[] } — 기준일에 유효한 단가 세트와 이 충전기에 대한 할당 기간(양끝 포함). DEFAULT_UNIT_PRICE 면 없음
priceSet.timeRanges[]array{ start, end, memberPrice, nonMemberPrice } — KST 벽시계 HH:mm:ss, start 포함·end 미포함, 시작 시각 오름차순. start > end 면 자정을 넘는 구간
defaultUnitPriceobject{ member, nonMember } — CPO 기본 단가(KRW/kWh). 세트 미할당 시, 그리고 세트 시간대에 포함되지 않는 시각에 적용
roundingobject{ mode, unit } — 거래 최종 금액 라운딩 규칙(HALF_UP 기본 1원 반올림 / CEILING / FLOOR). 단가·구간 계산에는 미적용
요일·공휴일·계절 차등은 없습니다 — 날짜별 차등은 세트 할당 기간으로만 표현됩니다. 로밍카드 거래에는 이 단가가 아니라 협약 로밍사 소매가가 적용됩니다(거래의 feeBreakdown.roaming). 단가 세트는 운영자가 수정할 수 있고 변경 이력이 없으므로, 과거 거래에 적용된 단가는 이 API 가 아니라 거래의 feeBreakdown으로 확인하십시오.

충전기 충전 프로필 — CSMS 설정값 (v1.10.0)

GET/api/v1/ext/chargers/{chargerId}/charging-profiles

CSMS 가 이 충전기에 SetChargingProfile 로 보낸 충전 프로필(전력 제한값·시간대별 스케줄)의 현재 유효한 목록입니다. 충전기에 질의하지 않는 CSMS 전송 기록이며, 충전기가 실제로 수락했는지는 항목별 commandStatus로 판단하십시오(기준선으로 쓸 때는 ACCEPTED만). 존재하지 않거나 다른 CPO 소유인 충전기는 404.

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/chargers/3004/charging-profiles" -H "x-api-key: <API 키>"

응답 200

{
  "chargerId": 3004,
  "chargerIdentity": "CP-0001",
  "ocppVersion": "1.6",
  "asOf": "2026-09-18T03:00:00Z",
  "profiles": [
    {
      "profileId": 1587249301,
      "connectorId": 0,
      "purpose": "ChargePointMaxProfile",
      "purposeOcpp": "ChargePointMaxProfile",
      "kind": "Recurring",
      "recurrency": "Daily",
      "stackLevel": 0,
      "validFrom": "2026-09-18T00:00:00Z",
      "validTo": "2026-12-31T15:00:00Z",
      "schedule": {
        "duration": 86400,
        "startSchedule": "2026-09-18T00:00:00Z",
        "chargingRateUnit": "W",
        "periods": [
          { "startPeriod": 0,     "limit": 7000, "numberPhases": 1 },
          { "startPeriod": 32400, "limit": 3500, "numberPhases": 1 },
          { "startPeriod": 64800, "limit": 7000, "numberPhases": 1 }
        ]
      },
      "source": "PRESET",
      "sentAt": "2026-09-18T00:00:05Z",
      "commandStatus": "ACCEPTED",
      "commandRespondedAt": "2026-09-18T00:00:06Z"
    }
  ]
}
필드타입설명
ocppVersionstring충전기 OCPP 버전 (1.6 / 2.0.1)
asOfstring조회 시각 — 만료(validTo 경과)·교체·해제 판정 기준
profiles[].profileIdnumber충전기로 보낸 chargingProfileId
profiles[].connectorIdnumber0 = 충전기 전체 (2.0.1 은 evseId)
profiles[].purposestringOCPP 1.6 명칭 — ChargePointMaxProfile(상한) / TxDefaultProfile(거래 기본) / TxProfile(특정 거래)
profiles[].purposeOcppstring충전기 프로토콜로 실제 전송된 명칭 — 2.0.1 은 ChargingStationMaxProfile
profiles[].kindstringAbsolute / Recurring / Relative. Recurring 이면 recurrency(Daily/Weekly)
profiles[].stackLevelnumber같은 목적 안에서 높은 값이 우선
profiles[].validFrom / validTostring?유효기간(UTC). validTo 가 지난 프로필은 목록에서 제외
profiles[].scheduleobject{ duration, startSchedule, chargingRateUnit(W|A), minChargingRate, periods[{ startPeriod, limit, numberPhases }] } — startPeriod 는 스케줄 시작으로부터의 오프셋(초), limit 는 chargingRateUnit 단위
profiles[].sourcestringADMIN(운영자 폼) / PRESET(전력제한 템플릿 적용)
profiles[].sentAtstringCSMS 가 명령을 보낸 시각
profiles[].commandStatusstring충전기 응답 — PENDING / SENT / ACCEPTED / REJECTED / ERROR / EXPIRED / UNKNOWN(명령 로그 없음)
profiles[].commandRespondedAt / commandErrorstring?응답 시각 / 거절·오류 사유
합성 스케줄(GetCompositeSchedule)은 충전기가 계산하는 값이라 CSMS 에 없습니다. 이 목록의 프로필을 OCPP 우선순위 규칙(stackLevel 높은 것 우선, TxProfile → TxDefaultProfile, ChargePointMaxProfile 은 상한)으로 합성하시면 됩니다. 기록 시작(2026-09) 이전에 보낸 프로필은 이력이 없어 나타나지 않으며, 운영자가 다시 보내면 채워집니다. 2.0.1 자동 EV 협상 (ISO 15118) TxProfile 은 거래 단위 일회성이라 기록하지 않습니다.

충전 트랜잭션 내역

GET/api/v1/ext/transactions

충전 트랜잭션 내역을 시작 시각 내림차순으로 반환합니다. 기간은 [from, to) 반개구간으로 필터됩니다.

쿼리 파라미터

파라미터타입기본값설명
fromISO-8601 date-timeto − 30일조회 시작 시각 (예: 2026-06-01T00:00:00Z)
toISO-8601 date-time현재 시각조회 종료 시각 (exclusive)
pagenumber00부터 시작하는 페이지 번호
sizenumber50페이지 크기 (최대 200)
최대 조회 기간은 92일입니다. 초과 시 400이 반환됩니다.

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/transactions?from=2026-06-01T00:00:00Z&to=2026-07-01T00:00:00Z&page=0&size=50" \
  -H "x-api-key: <API 키>"

응답 200

{
  "items": [
    {
      "id": 98765,
      "chargerId": 3004,
      "chargerIdentity": "CP-0001",
      "connectorId": 1,
      "startTime": "2026-07-11T02:10:00Z",
      "stopTime": "2026-07-11T03:05:12Z",
      "consumedWh": 21500,
      "totalFee": 6450.00,
      "assessedFee": 6450.00,
      "authType": "MEMBER_CARD",
      "feeBreakdown": {
        "pricingSource": "ASSIGNED_PRICE_SET",
        "memberType": "MEMBER",
        "exempted": false,
        "energyWh": 21500,
        "currency": "KRW",
        "priceSet": { "id": 3, "name": "주간 세트" },
        "segments": [
          { "from": "2026-07-11T02:10:00Z", "to": "2026-07-11T03:00:00Z", "energyKwh": 19.5455, "unitPrice": 300.00, "fee": 5863.6364 },
          { "from": "2026-07-11T03:00:00Z", "to": "2026-07-11T03:05:12Z", "energyKwh": 1.9545, "unitPrice": 300.00, "fee": 586.3636 }
        ],
        "rounding": { "mode": "HALF_UP", "unit": 1, "rawFee": 6450.0000, "finalFee": 6450.00 }
      },
      "reason": "Remote"
    }
  ],
  "page": 0,
  "size": 50,
  "totalElements": 1,
  "totalPages": 1
}
필드타입설명
idnumber트랜잭션 ID
chargerIdnumber충전기 ID
chargerIdentitystring?OCPP 충전기 식별자
connectorIdnumber충전기 내 커넥터 번호 (1-base)
startTimestring충전 시작 시각 (UTC)
stopTimestring?충전 종료 시각 — 진행 중이면 없음
consumedWhnumber?충전량(Wh) — 끝난 세션은 확정값, 진행 중 세션은 조회 시점까지의 누계(통상 약 60초 주기 갱신). 미터값 미수신 시 없음
totalFeenumber?실제 청구 요금(원) — 에너지 요금만(점유·시간 요금 없음). 미과금카드 거래는 0. 진행 중이면 없음
assessedFeenumber?산정 요금(원) — 미과금 면제와 무관하게 계산된 정상 요금. totalFee = 0 인 거래의 면제 전 금액. 진행 중·산정 실패면 없음
authTypestring?시작 시점 인증 구분 — NON_BILLING(미과금카드) / MEMBER_CARD(회원카드) / ROAMING(로밍카드) / GUEST_PREPAY(비회원 선결제) / PNC / UNREGISTERED. 2026-07-31 이전 거래는 없음
feeBreakdownobject?요금 산정 스냅샷 — 아래 표. 진행 중 거래와 스냅샷 도입(v1.8.0) 이전 종료 거래는 없음
reasonstring?종료 사유 (OCPP StopTransaction reason)
page / size / totalElements / totalPagesnumber페이지네이션 메타

feeBreakdown — 요금 산정 스냅샷 (v1.8.0)

거래 종료 시점에 어떤 단가가 어느 시간대 구간에 적용됐는지를 고정한 기록입니다. 단가 세트는 운영자가 수정할 수 있으므로 이 스냅샷이 그 거래에 적용된 단가의 유일한 근거입니다. 도매(정산) 단가와 결제 수단 정보는 담지 않습니다.

필드타입설명
pricingSourcestring단가 출처 — ASSIGNED_PRICE_SET(충전기 할당 단가 세트, 시간대별 회원/비회원 단가) / DEFAULT_UNIT_PRICE(할당 없음 → CPO 기본 단가) / ROAMING_RETAIL(로밍 거래 — 협약 로밍사 소매가)
memberTypestring단가 선택에 쓰인 이용자 구분 — MEMBER / NON_MEMBER(비회원 선결제) / ROAMING
exemptedbooleantrue = 미과금카드 거래. totalFee 는 0, 산정액은 assessedFee
energyWhnumber산정에 쓴 충전량(Wh)
priceSetobject?적용 단가 세트 { id, name } — ASSIGNED_PRICE_SET 일 때만
roamingobject?로밍 소매가 정보 { bid, companyName, chargerKw, bandMinKw, bandMaxKw, unitPrice } — ROAMING_RETAIL 일 때만
segments[]array시간대 구간별 산정 { from, to, energyKwh, unitPrice, fee }. 구간 에너지는 전체 충전량을 구간 시간 비례로 배분한 값(구간별 실측 아님). fee 합 = rounding.rawFee
roundingobject{ mode, unit, rawFee, finalFee } — mode: HALF_UP(기본 1원 반올림) / CEILING(올림) / FLOOR(내림). finalFee 가 곧 assessedFee
totalFee에너지 요금만입니다(점유·시간·기본요금 없음). 따라서 totalFee ÷ consumedWh가 곧 실효 단가이며, 같은 충전기에서 값이 갈리는 것은 authType(회원/비회원/로밍)과 시간대 구간 때문입니다. totalFee = 0authType = NON_BILLING(feeBreakdown.exempted = true) 또는 충전량 0으로 판별하십시오.

거래별 미터값 시계열

GET/api/v1/ext/transactions/{transactionId}/meter-values

한 트랜잭션에 적재된 미터값(누적 전력량·순시 전력)을 시각 오름차순으로 반환합니다. 충전기 MeterValues 보고 주기(통상 약 60초)로 적재되며, 진행 중인 세션도 조회할 수 있습니다. 보관 중인 과거 거래는 기간 제한 없이 트랜잭션 ID로 소급 조회할 수 있습니다.

쿼리 파라미터

파라미터타입기본값설명
pagenumber00부터 시작하는 페이지 번호
sizenumber50페이지 크기 (최대 200)

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/transactions/98765/meter-values?page=0&size=200" \
  -H "x-api-key: <API 키>"

응답 200

{
  "items": [
    { "timestamp": "2026-08-27T09:23:28Z", "context": "Transaction.Begin", "energyWh": 273, "powerW": null },
    { "timestamp": "2026-08-27T09:24:28Z", "context": "Sample.Periodic",   "energyWh": 294, "powerW": 1260 }
  ],
  "page": 0,
  "size": 200,
  "totalElements": 2,
  "totalPages": 1
}
필드타입설명
timestampstring측정 시각 (UTC)
contextstring?OCPP ReadingContext (Sample.Periodic / Transaction.Begin / Transaction.End 등)
energyWhnumber?누적 충전 전력량(Wh) — 미터 누계값
powerWnumber?순시 전력(W) — Power.Active.Import, 충전기가 보고하지 않으면 없음
다른 CPO 소유 거래를 조회하면 404가 반환됩니다.

출력 등급 분류 기준

GET/api/v1/ext/meta/speed-grades

충전기 출력 등급(완속/중속/급속)의 분류 기준을 반환합니다. 충전기 응답의 maxPowerKw(kW)를 grades 배열 순서대로 상한과 비교해 첫 매칭이 그 충전기의 등급입니다(마지막 등급은 상한 없음). CPO와 무관한 공통 기준이며, CSMS 관리콘솔 대시보드 「출력 분포」와 동일합니다. maxPowerKw가 없는(모델 미지정) 충전기는 미분류로 취급하십시오.

요청 예시

curl "https://external-api.oasis-arca.com/api/v1/ext/meta/speed-grades" \
  -H "x-api-key: <API 키>"

응답 200

{
  "basis": "chargers[].maxPowerKw (kW)",
  "grades": [
    { "grade": "SLOW", "label": "완속", "upperBoundKw": 11, "upperInclusive": true },
    { "grade": "MID",  "label": "중속", "upperBoundKw": 50, "upperInclusive": false },
    { "grade": "FAST", "label": "급속", "upperBoundKw": null, "upperInclusive": null }
  ]
}
필드타입설명
gradestring등급 코드 (SLOW/MID/FAST)
labelstring한글 표기 (완속/중속/급속)
upperBoundKwnumber?이 등급의 상한(kW) — 없으면 상한 없음(최상위 등급)
upperInclusiveboolean?상한 포함 여부 — true: ≤, false: <

OpenAPI 스펙

기계가독형 계약 문서(OpenAPI 3.0)를 제공합니다. 클라이언트 코드 생성(openapi-generator 등)에 사용할 수 있습니다.

# 예: TypeScript 클라이언트 생성
npx @openapitools/openapi-generator-cli generate \
  -i https://admin.oasis-arca.com/docs/external-api.openapi.yaml \
  -g typescript-fetch -o ./csms-external-client

문의

API 키 발급·차단, 사용량 플랜, 응답 필드 추가 요청 등은 CSMS 운영팀에 문의하십시오.

문의: axd@bionever.com

CSMS External API(B2B) Integration Guide · v1