[
  {
    "id": "refund.executeOnline",
    "korailPath": "refunds.executeOnlineRefunds",
    "method": "POST",
    "kind": "refund",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "온라인 환불 실행 — 구매이력 불요(pnrNo+원권튜플만)."
  },
  {
    "id": "goods.cacheRead",
    "korailPath": "goods.cacheRead.do",
    "method": "GET",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.commutationInfo",
    "korailPath": "research.cmtrInfo.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "push.crewCallList",
    "korailPath": "push.crwCallRq.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "global.stations",
    "korailPath": "/ebizcom/com.korail.mobile.global.stations.do",
    "method": "GET",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "maas.cancelFee",
    "korailPath": "maas.cncFee.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "copt.maasDetailList",
    "korailPath": "copt.gdReqQry.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "ncard.history",
    "korailPath": "ticket.dcntCrdUseQry.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "product.detail",
    "korailPath": "product.ReservationDetail",
    "method": "GET",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "product.list",
    "korailPath": "product.ReservationList",
    "method": "GET",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "goods.meta",
    "korailPath": "goods.meta.do",
    "method": "GET",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.seatInfo",
    "korailPath": "pass.seatInfo.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "패스 좌석지정 대상 조회(wctNo/saleDt/saleSqno/tkRetPwd 페이징)."
  },
  {
    "id": "tripChange.originalTicket",
    "korailPath": "research.tripChgOgtk.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "여정변경용 원권(원승차권) 조회."
  },
  {
    "id": "tripChange.dates",
    "korailPath": "reservation.tripChgDate.do",
    "method": "GET",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "변경가능 날짜 조회(GET)."
  },
  {
    "id": "pass.otrReserve",
    "korailPath": "pass.passOtrReserve",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "OTR(좌석없는 패스권) 예약, passOtrPayIssue 로 이어짐."
  },
  {
    "id": "product.payInfo",
    "korailPath": "product.payInfo",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "여행상품 결제 사전확인(strLumpStlTgtNo 획득)."
  },
  {
    "id": "maas.reserveStatus",
    "korailPath": "maas.rsvStt.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "응답 empty(봉투만)."
  },
  {
    "id": "mileage.accompanySave",
    "korailPath": "mileage.acpnMlgSave.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "delay.acceptProcess",
    "korailPath": "delay.acptPrs.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "지연배상금 수락처리."
  },
  {
    "id": "research.actualSchedule",
    "korailPath": "research.actualTrainSchedule.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "cart.add",
    "korailPath": "cart.addCartList",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "seats.airportBusResidual",
    "korailPath": "lms.TResidualSeatsResearch.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "공항버스 좌석맵 — research.TResidualSeatsResearch 와 동일 스키마."
  },
  {
    "id": "mileage.amountSpec",
    "korailPath": "mlg.amtSpec.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.assignScheduleView",
    "korailPath": "research.assignScheduleView.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "addService.buyConfirm",
    "korailPath": "addService.buyConfirm.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "goods.cacheCheck",
    "korailPath": "goods.cacheCheck.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "checkin.cancel",
    "korailPath": "checkin.cnc.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "필드명 saleDt(psbFlg/reg 는 saleDd)."
  },
  {
    "id": "addService.wheelchairCancel",
    "korailPath": "addService.reserve.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "addService.reserve.do 는 다기능 경로(postRequestWheelchairWithHistory 와 공유), jobDvCd 로 분기."
  },
  {
    "id": "cashReceipt.issue",
    "korailPath": "cashReceipt.issue.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "delay.cashRefund",
    "korailPath": "dlay.cashRfn.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "명시적 @Field 바디(In 모델 없음) — 계좌환불(dmnPrsDvCd/dptnBankCd/dptnAcntNo)."
  },
  {
    "id": "cert.congressperson",
    "korailPath": "certification.assemblyCert",
    "method": "GET",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "국회의원 무임(GET)."
  },
  {
    "id": "cert.merit",
    "korailPath": "certification.MeritCert",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "국가유공자 인증."
  },
  {
    "id": "qry.transferStation",
    "korailPath": "qry.chtnStn.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "codes.get",
    "korailPath": "common.code.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "common.code.do 공유 — 단일 코드셋."
  },
  {
    "id": "codes.getMulti",
    "korailPath": "common.code.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "common.code.do 공유 — 복수 코드셋 변형."
  },
  {
    "id": "crypto.encrypt",
    "korailPath": "common.encrypt.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "common.encrypt.do 공유(postKBPayEncrypt 와 동일 경로)."
  },
  {
    "id": "passCard.coupons",
    "korailPath": "passCard.CouponView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.custTripInfo",
    "korailPath": "research.custTripInfo.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.ncardInfo",
    "korailPath": "research.dcntCrdInfo.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.ncardScheduleView",
    "korailPath": "research.dcntCrdScheduleView.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "crypto.decrypt",
    "korailPath": "common.decrypt.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "delay.certificate",
    "korailPath": "dlay.athnIsu.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "지연증명서 발급조회."
  },
  {
    "id": "passCard.delayDiscount",
    "korailPath": "passCard.DelayDiscountView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "페이징 Query h_page_no."
  },
  {
    "id": "delay.returnReceipt",
    "korailPath": "dlay.pymtRcet.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "account.delete",
    "korailPath": "login.mbSced.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "회원탈퇴 — login.mbSced.do 이지만 로그인 세션 필요."
  },
  {
    "id": "addSrv.wheelchairHistoryDelete",
    "korailPath": "addSrv.helpSrvCust.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "helpSrvCust.do 다기능 경로(qryDvCd/addSrvDvCd 분기)."
  },
  {
    "id": "tk.receivedTicketHistory",
    "korailPath": "tk.pbpAcepSpec.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "받은승차권 내역."
  },
  {
    "id": "tk.deliveryReceiver",
    "korailPath": "tk.dlvRcvCust.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "gift.send",
    "korailPath": "giftInfo.GiftSend",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "승차권 선물 발송(+presentMap) → 변경 예약번호 chgePbpRsvNo."
  },
  {
    "id": "tk.deviceReset",
    "korailPath": "tk.dvcInfoInit.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "기기정보 초기화(디바이스 바인딩 리셋)."
  },
  {
    "id": "cert.disability",
    "korailPath": "certification.disabled.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "passCard.discountCheck",
    "korailPath": "passCard.DiscountCheck",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "delay.depositBankList",
    "korailPath": "dlay.dptnBank.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "명시적 @Field(Device/Version/Key만) — 계좌환불용 은행목록."
  },
  {
    "id": "ebizcross.uuid",
    "korailPath": "/ebizcross/getUUID.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "크로스서비스 UUID 발급 유틸(인증 전)."
  },
  {
    "id": "trn.freeSeatCar",
    "korailPath": "trn.fresScar.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "copt.stationConvenienceMenu",
    "korailPath": "copt.gdMenuLt.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "역편의 URL 메뉴(엘리베이터/주차/BIS)."
  },
  {
    "id": "refund.ticketDetail",
    "korailPath": "refunds.SelTicketInfo",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "refunds.* 이지만 조회(반환대상 상세)."
  },
  {
    "id": "tk.guardianSms",
    "korailPath": "tk.gurdSmsSnd.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "보호자 SMS 발송(사이드이펙트 액션)."
  },
  {
    "id": "reservation.guideSeatCondition",
    "korailPath": "reservation.guideSeatCnd.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "login.inquiryIsMember",
    "korailPath": "login.joinCfm.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "joinCfm — 회원존재 확인(인증 전)."
  },
  {
    "id": "reservation.ticketRsvInquiry",
    "korailPath": "certification.ReservationList",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "certification.ReservationList 공유 — 경량변형(hidPnrNo만)."
  },
  {
    "id": "pay.integratedSettlement",
    "korailPath": "pay.intgStl.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "통합(장바구니) 정산(+PaymentMethod 그리드)."
  },
  {
    "id": "crypto.kbPayEncrypt",
    "korailPath": "common.encrypt.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "common.encrypt.do 공유(postCommonEncrypt 와 동일 경로) — KB페이 변형."
  },
  {
    "id": "krPass.list",
    "korailPath": "/ebizcom/krPassLstDtl.do",
    "method": "POST",
    "kind": "read",
    "auth": "nonmember",
    "mToken": false,
    "charge": false,
    "note": "외국인 코레일패스 조회(여권/이메일/비번)."
  },
  {
    "id": "krPass.changeStartDate",
    "korailPath": "/ebizcom/krPassChgStDt.do",
    "method": "POST",
    "kind": "write",
    "auth": "nonmember",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "krPass.flexiDateFix",
    "korailPath": "/ebizcom/krPassFxDateFix.do",
    "method": "POST",
    "kind": "write",
    "auth": "nonmember",
    "mToken": false,
    "charge": false,
    "note": "Flexi 이용일 확정."
  },
  {
    "id": "krPass.payment",
    "korailPath": "/ebizcom/krPassPayment.do",
    "method": "POST",
    "kind": "pay",
    "auth": "nonmember",
    "mToken": false,
    "charge": true,
    "note": "enc 카드필드+3DS, 외국인 결제."
  },
  {
    "id": "mileage.lpointAuth",
    "korailPath": "mlg.lpotAthn.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "L포인트 인증(auth/cert 성격)."
  },
  {
    "id": "qr.localRailwayAuth",
    "korailPath": "qr.bchTripSv.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "벽지노선 여행 QR 인증."
  },
  {
    "id": "session.login",
    "korailPath": "login.Login",
    "method": "POST",
    "kind": "write",
    "auth": "none",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token 게이트 — 세션 확립(JSESSIONID)."
  },
  {
    "id": "login.authRegister",
    "korailPath": "login.loginAthnReg.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "로그인 인증(생체 등) 등록."
  },
  {
    "id": "login.authRemove",
    "korailPath": "login.loginAthnRmv.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "로그인 인증 해제."
  },
  {
    "id": "session.logout",
    "korailPath": "login.Logout",
    "method": "POST",
    "kind": "write",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "세션 파기."
  },
  {
    "id": "ebizcom.lostCenterSearch",
    "korailPath": "/ebizcom/cs/guide/lost/srchLostCenter.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "분실물센터 검색(공개)."
  },
  {
    "id": "addService.maasCancelPay",
    "korailPath": "addService.cancelPay.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "addService.maasServiceCancel",
    "korailPath": "addService.coptCnc.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "addService.coptCnc.do."
  },
  {
    "id": "ebizmaas.stationList",
    "korailPath": "/ebizmaas/EbizMaasStationList.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "MaaS 역목록(참조데이터)."
  },
  {
    "id": "cust.matchedDiscountTarget",
    "korailPath": "cust.mchdDcntTgt.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "member.verify",
    "korailPath": "member.verify.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.mergeSeats",
    "korailPath": "research.mergeSeatsC.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "중간승차역 좌석연속 조회."
  },
  {
    "id": "file.mobilePlusMain",
    "korailPath": "/file/CACHE/prdMobilePlusMain.cache",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "정적 캐시 파일."
  },
  {
    "id": "file.mobileService",
    "korailPath": "/file/CACHE/MobileService.cache",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": "정적 캐시 파일."
  },
  {
    "id": "myTicket.list",
    "korailPath": "myTicket.MyTicketNewList.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "xPoint.myView",
    "korailPath": "xPoint.MyXPointView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "reservation.ncardExtension",
    "korailPath": "reservation.dcntCrdExtn.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "N카드 연장(상태변경)."
  },
  {
    "id": "pay.naverPayMoney",
    "korailPath": "pay.naverPayMoneyRsv.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": null
  },
  {
    "id": "pay.naverPay",
    "korailPath": "pay.naverPayRsv.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "stlScnUrl(결제화면 URL) 반환 — 웹뷰 리다이렉트."
  },
  {
    "id": "nonMember.ticketReserve",
    "korailPath": "nonMember.NonMemTicket",
    "method": "POST",
    "kind": "write",
    "auth": "nonmember",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token — 비회원 예매(이름+전화+비번), PNR 생성, 세션 없음."
  },
  {
    "id": "nonMember.ticketList",
    "korailPath": "nonMember.NonMemTicketList",
    "method": "POST",
    "kind": "read",
    "auth": "nonmember",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "xPoint.okCashbagCert",
    "korailPath": "xPoint.OkCashbagCertView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.infoList",
    "korailPath": "pass.passInfoList",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.menu",
    "korailPath": "pass.passMenu.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.otrPayIssue",
    "korailPath": "pass.passOtrPayIssue",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "OTR 발권(결제+발권, 3 map)."
  },
  {
    "id": "pass.payIssue",
    "korailPath": "pass.passPayIssue",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "패스 결제+발권(fromPassReserveInfo 로 예약객체→결제요청)."
  },
  {
    "id": "pass.reserve",
    "korailPath": "pass.passReserve",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.scheduleInfoList",
    "korailPath": "pass.passScheduleInfoList",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pay.payco",
    "korailPath": "payment.reserve.payco.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": null
  },
  {
    "id": "delay.pnrQuery",
    "korailPath": "delay.pnrQry.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "login.popupConfirmRecord",
    "korailPath": "login.poppCfmRec.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "팝업 확인 기록 저장."
  },
  {
    "id": "trn.priceFare",
    "korailPath": "trn.prcFare.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token 게이트 — 운임계산(조회)."
  },
  {
    "id": "reservation.priceReCalculation",
    "korailPath": "certification.PriceReCalculation",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "PNR 재계산(6개 병렬 @Field 승객행) — 마스터표 W."
  },
  {
    "id": "push.update",
    "korailPath": "push.update",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "푸시 등록/토큰 갱신."
  },
  {
    "id": "railplus.autoCharge",
    "korailPath": "railplus.autoCharge.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "tk.recentDeliveryHistory",
    "korailPath": "tk.rcntDlvHst.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "refund.commission",
    "korailPath": "refunds.CommissionView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "CommonIn 미상속 — Device/Version/Key/Lang + h_comp_nm/h_comp_cert_no/ctlDvCd 명시 전송."
  },
  {
    "id": "refund.request",
    "korailPath": "refunds.RefundsRequest",
    "method": "POST",
    "kind": "refund",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "CommonIn 미상속 — 환불 실행."
  },
  {
    "id": "addSrv.wheelchairRequest",
    "korailPath": "addSrv.helpSrvCust.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "helpSrvCust.do 다기능 경로."
  },
  {
    "id": "addService.wheelchairReRequest",
    "korailPath": "addService.reserve.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "addService.reserve.do 다기능 경로(postCancelWheelchair 와 공유) — 이력 재신청."
  },
  {
    "id": "reservation.cancel",
    "korailPath": "reservationCancel.ReservationCancel",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "실제 취소 실행(txtPnrNo/txtJrnySqno/txtJrnyCnt)."
  },
  {
    "id": "reservation.cancelCheck",
    "korailPath": "reservationCancel.ReservationCancelChk",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "취소 사전확인(수수료/addSrvRetList 반환) — 실제 취소는 ReservationCancel 이 수행."
  },
  {
    "id": "reservation.change",
    "korailPath": "reservation.reservationChange.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "reservation.list",
    "korailPath": "certification.ReservationList",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "certification.ReservationList 공유 — 전체변형(psgDisc0019List)."
  },
  {
    "id": "pay.reservationPayment",
    "korailPath": "payment.ReservationPayment",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "payment.ReservationPayment 공유(postRsvPayment 와 동일 경로) +PaymentMethod 그리드 — 평문 PAN/VAN_PWD."
  },
  {
    "id": "reservation.view",
    "korailPath": "reservation.ReservationView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "timeStamp 캐시버스터."
  },
  {
    "id": "reservationWait.register",
    "korailPath": "reservationWait.ReservationWait",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "명절 대기예약(기존 PNR에 등록)."
  },
  {
    "id": "tk.retrieveTicket",
    "korailPath": "tk.pbpWdrw.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "보낸승차권 철회(withdraw)."
  },
  {
    "id": "pay.rsvPayment",
    "korailPath": "payment.ReservationPayment",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "payment.ReservationPayment 공유(postReservationPayment 와 동일 경로) — RsvPaymentIn 변형(hidRsvChgNo)."
  },
  {
    "id": "schedule.runDate",
    "korailPath": "schedule.runDt",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "lmu.scheduleQuery",
    "korailPath": "lmu.scdlQry.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "trains.search",
    "korailPath": "seatMovie.ScheduleView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token — 열차조회, 페이징 h_next_pg_flg + qryStNo/qryStTrnNo."
  },
  {
    "id": "trains.searchSpecial",
    "korailPath": "seatMovie.ScheduleViewSpecial",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token — 특별열차 조회."
  },
  {
    "id": "ebizcom.travelProductSearch",
    "korailPath": "/ebizcom/gdLstDtl.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "reservation.seatAssign",
    "korailPath": "reservation.seatAssign.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "좌석지정 예약 → ReservationOut(PNR 생성)."
  },
  {
    "id": "checkin.info",
    "korailPath": "checkin.info.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "필드명 saleDt(psbFlg/reg 는 saleDd)."
  },
  {
    "id": "checkin.possible",
    "korailPath": "checkin.psbFlg.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "필드명 saleDd + qrcode."
  },
  {
    "id": "checkin.register",
    "korailPath": "checkin.reg.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "필드명 saleDd + 물리좌석(scarNo/seatNo)."
  },
  {
    "id": "crypto.shinhanEncrypt",
    "korailPath": "shinhan.Encrypt.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "신한카드 암호화 유틸."
  },
  {
    "id": "cart.show",
    "korailPath": "cart.showCartList",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pay.samsungPayDecrypt",
    "korailPath": "pay.spayCphdDatVal.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "삼성페이 — 서버복호로 stlCrCrdNo 반환."
  },
  {
    "id": "pay.monimoDecrypt",
    "korailPath": "pay.monimoDecrypt.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "모니모 — 서버복호 stlCrCrdNo."
  },
  {
    "id": "pay.samsungPayOrderNo",
    "korailPath": "pay.spayOrdNo.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "encTotTxnAmt AES-256-CBC(키=AppLoginCphd)."
  },
  {
    "id": "common.specificDateData",
    "korailPath": "common.specificDateData.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "integrate.srCheck",
    "korailPath": "integrate.srCheck.do",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "integrate.srJoin",
    "korailPath": "integrate.srJoin.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "SR 통합회원 가입(join)."
  },
  {
    "id": "common.stationData",
    "korailPath": "common.stationdata",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "common.stationInfo",
    "korailPath": "common.stationinfo",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pay.realtimeAccount",
    "korailPath": "pay.stbkAcnt.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "실시간계좌이체 — 예금주 조회(pay.* 경로라 kind=pay)."
  },
  {
    "id": "pay.stbkBankList",
    "korailPath": "pay.stbkRegBank.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "은행목록 조회(pay.* 경로라 kind=pay)."
  },
  {
    "id": "pay.settlementKeyProcess",
    "korailPath": "pay.stlKeyPrs.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "정산키 등록."
  },
  {
    "id": "pay.settlementKeyQuery",
    "korailPath": "pay.stlKeyQry.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "등록 정산키 목록 조회(pay.* 경로라 kind=pay)."
  },
  {
    "id": "seats.residual",
    "korailPath": "research.TResidualSeatsResearch.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "좌석맵(잔여석)."
  },
  {
    "id": "ticket.dupCheck",
    "korailPath": "ticket.ticketDupCheck.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "receipt.info",
    "korailPath": "receipt.ReceiptInfo",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "reservation.ticketReserve",
    "korailPath": "certification.TicketReservation",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": true,
    "charge": false,
    "note": "🔒 m-token — 발권요청(자동/입석), PNR 생성."
  },
  {
    "id": "myTicket.widget",
    "korailPath": "myTicket.MyTicketWidget.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "encMbCrdNo(암호 회원카드)."
  },
  {
    "id": "pay.tossBillingKey",
    "korailPath": "pay.tossautoC.do",
    "method": "POST",
    "kind": "pay",
    "auth": "member",
    "mToken": false,
    "charge": true,
    "note": "토스 빌링키."
  },
  {
    "id": "trainsInfo.tourTrainSpecialRoom",
    "korailPath": "trainsInfo.TourTrainSpecialRoom",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "pass.travelGoodsMenu",
    "korailPath": "pass.trGdMenuLt.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "research.trainResearch",
    "korailPath": "research.TrainResearch",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "tripChange.handleCancel",
    "korailPath": "ticket.tripChgHndgCnc.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "변경 수기취소(+lumpStlTgtMap 동적)."
  },
  {
    "id": "tripChange.process",
    "korailPath": "reservation.tripChgPrsC.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "여정변경 확정 → 신규 PNR(ReservationOut)."
  },
  {
    "id": "login.userCheck",
    "korailPath": "login.userCheck",
    "method": "POST",
    "kind": "read",
    "auth": "none",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "addSrv.wheelchairHistory",
    "korailPath": "addSrv.helpSrvCust.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "helpSrvCust.do 다기능 경로(조회 변형)."
  },
  {
    "id": "addSrv.wheelchairResult",
    "korailPath": "addSrv.helpSrvTk.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "xPoint.view",
    "korailPath": "xPoint.XPointView",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": null
  },
  {
    "id": "product.cancel",
    "korailPath": "product.ReservationCancel",
    "method": "GET",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "GET 메서드이지만 취소 실행."
  },
  {
    "id": "push.crewCall",
    "korailPath": "push.callCrew.do",
    "method": "POST",
    "kind": "write",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "승무원 호출(사이드이펙트 액션)."
  },
  {
    "id": "self.seatChangeInfo",
    "korailPath": "self.seatChgInfo.do",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "좌석변경 가능조회."
  },
  {
    "id": "refund.verifyOnline",
    "korailPath": "refunds.verifyOnlineRefunds",
    "method": "POST",
    "kind": "read",
    "auth": "member",
    "mToken": false,
    "charge": false,
    "note": "refunds.* 이지만 조회(검증) — CommonOut 미상속."
  }
]