Korail gateway API โ agent-oriented docs. This same content is at /llms.txt (plain) and /openapi.json (spec).
โ Payment: card-number only. Easy-pay / points / bank transfer / pass / integrated settlements are NOT supported (return HTTP 501).
# rail-api โ Korail gateway API (agent guide)
A systematized pass-through over the Korail (์ฝ๋ ์ผ) mobile API. 159 operations,
all reachable through one generic endpoint. This service handles anti-macro (m-token),
login/session reuse, cookies, form-encoding and error mapping for you.
Base URL: https://rail-api.coderyn.com
## How to call
- Generic (any operation): POST https://rail-api.coderyn.com/v1/op/{operationId} body = JSON of raw korail fields
- Named aliases: POST /v1/sessions (login), GET /v1/trains (=trains.search)
- List operations: GET https://rail-api.coderyn.com/v1/ops (id, kind, auth, mToken, charge, note)
- Machine spec: GET https://rail-api.coderyn.com/openapi.json
- Health: GET https://rail-api.coderyn.com/v1/health
## Auth model
- This service has its OWN users. Each user stores ONE set of korail credentials (encrypted).
- Send: Authorization: Bearer <apiKey> on member operations.
- Admin (needs ADMIN_TOKEN):
POST https://rail-api.coderyn.com/admin/users {"name":"..."} -> {userId, apiKey}
POST https://rail-api.coderyn.com/admin/users/{userId}/credentials {"member_no","password"[,"model","os"]}
POST https://rail-api.coderyn.com/admin/users/{userId}/card {"no","exp":"YYMM","pwd2","auth","type":"personal"} (encrypted at rest)
- auth levels per op: none (reference), member (needs Bearer), nonmember (send name+phone+ticket-pw in body).
## โ A card on file is REQUIRED to reserve
Every reservation path checks the user's stored card first. With NO card on file, these return
HTTP 402 CARD_REQUIRED: /v1/book, /v1/purchase, /v1/pay, /v1/watches (action=reserve), /v1/openrun,
and the raw reserve ops (reservation.ticketReserve, nonMember.ticketReserve, reservation.seatAssign).
Register a card once (admin endpoint above); after that pay/purchase use the STORED card automatically โ
you do NOT pass card details per request (you may still pass "card":{...} to override for one call).
## Rules
- It is a PASS-THROUGH: you supply the raw korail field names (txt*, hid*, h_*) in the JSON body.
The gateway adds Device/Version/Key/Lang, the m-token (for 6 protected paths), and the session cookie.
- Mutations (kind write/pay/refund) REQUIRE an Idempotency-Key header.
- pay/refund move real money โ treat as gated.
- Reservation window: boarding date <= 31 days ahead, else NOT_YET_OPEN.
## โ Payment support โ CARD-NUMBER ONLY
Card-number payment ONLY. Pay via pay.reservationPayment with card fields (STL_CR_CRD_NO / CRD_VLID_TRM / VAN_PWD). NOT supported: easy-pay (PAYCO, KakaoPay, Samsung Pay, Naver Pay, Toss), points, real-time bank transfer, and pass/integrated settlements.
- Supported: pay.reservationPayment (card fields STL_CR_CRD_NO / CRD_VLID_TRM / VAN_PWD).
- NOT supported (these ops return HTTP 501 UNSUPPORTED_PAYMENT_METHOD):
easy-pay (PAYCO / KakaoPay / Samsung Pay / Naver Pay / Toss), points, real-time bank transfer,
pass payment, integrated/cart settlement. See the op list โ unsupported ops are marked โ.
## Recipes (concrete field maps)
### A. Reference read (no auth)
POST https://rail-api.coderyn.com/v1/op/global.stations body: {"stnLang":"ko"}
POST https://rail-api.coderyn.com/v1/op/codes.get body: {"code":"app.login.cphd"}
### B. Establish session (member)
POST https://rail-api.coderyn.com/v1/sessions header: Authorization: Bearer <apiKey>
โ {ok, custNo, mbCrdNo}. A session is also auto-established on the first member op.
### C. Search trains (op: trains.search โ m-token handled for you)
POST https://rail-api.coderyn.com/v1/op/trains.search
body: {
"radJobId":"1","srtCheckYn":"N",
"txtGoAbrdDt":"YYYYMMDD", // boarding date, <= 31 days ahead
"txtGoStart":"์์ธ","txtGoEnd":"๋ถ์ฐ",
"txtGoHour":"060000", // from-time HHMMSS
"txtTrnGpCd":"100", // 100=KTX 101=ITX/์๋ง์ 102=๋ฌด๊ถํ 109=all
"txtPsgFlg_1":"1"
}
โ data.trn_infos.trn_info[]: each has h_trn_no, h_trn_clsf_cd, h_trn_gp_cd, h_run_dt,
h_dpt_dt, h_dpt_tm, h_dpt_rs_stn_cd, h_dpt_stn_cons_ordr, h_dpt_stn_run_ordr,
h_arv_rs_stn_cd, h_arv_stn_cons_ordr, h_arv_stn_run_ordr,
h_gen_rsv_cd ("00"=seats available, "13"=sold out), h_spe_rsv_cd (special/first class).
### D. Reserve a seat hold (op: reservation.ticketReserve โ WRITE, needs Idempotency-Key)
Pick a train t from search where h_gen_rsv_cd=="00". 1 adult, auto general seat, one-way:
POST https://rail-api.coderyn.com/v1/op/reservation.ticketReserve
header: Idempotency-Key: <uuid>
body: {
"txtMenuId":"11","txtJobId":"1101","hidFreeFlg":"N","txtStndFlg":"N",
"txtTotPsgCnt":"1","txtJrnyCnt":"1",
"txtSeatAttCd1":"000","txtSeatAttCd2":"000","txtSeatAttCd3":"000","txtSeatAttCd4":"015","txtSeatAttCd5":"000",
"txtCompaCnt1":"1","txtPsgTpCd1":"1","txtDiscKndCd1":"000",
"txtJrnyTpCd1":"11","txtJrnySqno1":"001",
"txtTrnNo1":t.h_trn_no,"txtTrnClsfCd1":t.h_trn_clsf_cd,"txtTrnGpCd1":t.h_trn_gp_cd,
"txtRunDt1":t.h_run_dt,"txtDptDt1":t.h_dpt_dt,"txtDptTm1":t.h_dpt_tm,
"txtDptRsStnCd1":t.h_dpt_rs_stn_cd,"txtDptStnConsOrdr1":pad6(t.h_dpt_stn_cons_ordr),"txtDptStnRunOrdr1":pad6(t.h_dpt_stn_run_ordr),
"txtArvRsStnCd1":t.h_arv_rs_stn_cd,"txtArvStnConsOrdr1":pad6(t.h_arv_stn_cons_ordr),"txtArvStnRunOrdr1":pad6(t.h_arv_stn_run_ordr),
"txtChgFlg1":"N","txtPsrmClCd1":"1"
}
(pad6 = left-pad numeric to 6 digits, e.g. 1 -> "000001")
โ data.h_pnr_no (reservation id), data.h_jrny_cnt, data.h_ntisu_lmt_dt + h_ntisu_lmt_tm (payment deadline).
The hold auto-cancels if unpaid by the deadline.
### E. Cancel the hold (op: reservation.cancelCheck โ this actually performs the cancel)
POST https://rail-api.coderyn.com/v1/op/reservation.cancelCheck
body: {"txtPnrNo":<h_pnr_no>,"txtJrnySqno":"001","txtJrnyCnt":<h_jrny_cnt>,"hidRsvChgNo":"000"}
โ h_msg_cd "IRG000000" on success. Verify with op reservation.view -> data.jrny_infos empty.
### F. My tickets / reservation view
POST https://rail-api.coderyn.com/v1/op/myTicket.list body: {}
POST https://rail-api.coderyn.com/v1/op/reservation.view body: {"timeStamp":"<epoch-ms>"}
### F2. Composed flows (multi-step sequences collapsed into ONE clean call)
The raw ops mirror the app 1:1, so multi-step sequences (and their handshake values / error-prone
extras) would otherwise be the caller's problem. These composed endpoints handle the whole sequence
internally โ you send only the essentials, never the raw korail fields:
POST https://rail-api.coderyn.com/v1/book
body: { "from":"์์ธ", "to":"๋ถ์ฐ", "ymd":"YYYYMMDD", "trnNo":"001"(optional), "psrm":"1" }
โ search โ reserve โ stores the pay-handshake. Returns a HOLD (no charge).
โ { ok, pnr, seat, fare, deadline, train }
(omit trnNo to grab the first available train.)
POST https://rail-api.coderyn.com/v1/pay
body: { "pnr":"<PNR>", "dryRun":true }
real charge: { "pnr":"<PNR>", "dryRun":false } + Idempotency-Key (uses your STORED card)
โ settles a HOLD by CARD (card-number only โ see payment policy). dryRun:true returns the amount, no charge.
Card comes from the user's stored card; pass "card":{no,exp,pwd2,auth,type} only to override.
โ { ok, pnr, amount, approvalNo, ticketNo, korail }
POST https://rail-api.coderyn.com/v1/cancel
body: { "pnr":"<PNR>" }
โ releases an unpaid HOLD (reservationCancel). โ { ok, pnr, korail }
POST https://rail-api.coderyn.com/v1/refund
body: { "pnr":"<PNR>", "dryRun":true }
โ myTicket โ SelTicketInfo โ CommissionView โ RefundsRequest, in one call.
dryRun:true (default) returns only the quote { fee, amount, tkRetTmsDvCd } โ no money moves.
dryRun:false + Idempotency-Key actually refunds.
โ { ok, pnr, quote:{fee,amount,tkRetTmsDvCd}, refunded, korail }
(You never send ctlDvCd / h_comp_nm / the wct-key rename โ the flow builds the exact fields the app sends.)
POST https://rail-api.coderyn.com/v1/purchase (book + pay in ONE call โ the simple "just buy it")
body: { "from":"์์ธ","to":"๋ถ์ฐ","ymd":"YYYYMMDD","trnNo":"001"(optional) } + Idempotency-Key
โ search โ reserve โ settle with your STORED card. If payment fails, the hold is auto-cancelled (no orphan).
(requires a card on file โ HTTP 402 CARD_REQUIRED otherwise. Pass "card":{...} to override.)
โ { ok, pnr, seat, amount, approvalNo, ticketNo }
Lifecycle: /v1/purchase (one-shot buy) โorโ /v1/book (hold) โ /v1/pay (card) โ later /v1/refund.
Split book/pay = grab a seat now (hold), pay later (used by open-run/monitor). Unpaid hold โ /v1/cancel.
(์ฌ์ ๋ณ๊ฒฝ /v1/change is not yet available โ the raw ops exist but the composed flow is unverified.)
### G. Payment & refund โ GATED (real money). Not executed by default.
Payment (op: pay.reservationPayment) and refund (op: refund.request / refund.commission)
move real money. Build them the same way (pass-through fields) but only fire with explicit intent.
## Response envelope & error codes
Every op returns: {ok, code, data, korail:{strResult,h_msg_cd,h_msg_txt}, requestId}
- ok=true โ success (or benign "no data"). HTTP 200.
- ok=false โ code tells you why; korail.h_msg_cd is the upstream reason.
Gateway codes (HTTP status):
OK success
MTOKEN_REJECTED 429 anti-macro tripped; the gateway auto-regenerates the token & retries once
NOT_YET_OPEN 409 WRD000058 โ reservation window not open (>31 days out)
SESSION_EXPIRED 401 handled internally: the gateway re-logs-in and retries
KORAIL_FAIL 409 upstream strResult:FAIL (usually input error; see korail.h_msg_txt)
UPSTREAM_ERROR 502 korail 5xx; retried once for reads/idempotent
AUTH_REQUIRED 401 member op without a valid Bearer apiKey
LOCK_TIMEOUT 409 another mutation for the same user is in flight
NO_CREDENTIALS 400 user has no korail credentials registered
Common upstream h_msg_cd you'll see:
IRG000000 = success (generic) IRR000018 = reserve success (hold created)
IRZ000001 = query success WRT300005 = "no data" (benign)
WRR000100 = input error (you omitted/mis-typed a required field)
WRD000058 = reservation not yet open
## All operations (159)
refund.executeOnline [refund,charge] auth=member refunds.executeOnlineRefunds โ ์จ๋ผ์ธ ํ๋ถ ์คํ โ ๊ตฌ๋งค์ด๋ ฅ ๋ถ์(pnrNo+์๊ถํํ๋ง).
goods.cacheRead [read] auth=none goods.cacheRead.do
research.commutationInfo [read] auth=member research.cmtrInfo.do
push.crewCallList [read] auth=member push.crwCallRq.do
global.stations [read] auth=none /ebizcom/com.korail.mobile.global.stations.do
maas.cancelFee [read] auth=member maas.cncFee.do
copt.maasDetailList [read] auth=member copt.gdReqQry.do
ncard.history [read] auth=member ticket.dcntCrdUseQry.do
product.detail [read] auth=member product.ReservationDetail
product.list [read] auth=member product.ReservationList
goods.meta [read] auth=none goods.meta.do
pass.seatInfo [read] auth=member pass.seatInfo.do โ ํจ์ค ์ข์์ง์ ๋์ ์กฐํ(wctNo/saleDt/saleSqno/tkRetPwd ํ์ด์ง).
tripChange.originalTicket [read] auth=member research.tripChgOgtk.do โ ์ฌ์ ๋ณ๊ฒฝ์ฉ ์๊ถ(์์น์ฐจ๊ถ) ์กฐํ.
tripChange.dates [read] auth=member reservation.tripChgDate.do โ ๋ณ๊ฒฝ๊ฐ๋ฅ ๋ ์ง ์กฐํ(GET).
pass.otrReserve [write] auth=member pass.passOtrReserve โ OTR(์ข์์๋ ํจ์ค๊ถ) ์์ฝ, passOtrPayIssue ๋ก ์ด์ด์ง.
product.payInfo [read] auth=member product.payInfo โ ์ฌํ์ํ ๊ฒฐ์ ์ฌ์ ํ์ธ(strLumpStlTgtNo ํ๋).
maas.reserveStatus [read] auth=member maas.rsvStt.do โ ์๋ต empty(๋ดํฌ๋ง).
mileage.accompanySave [write] auth=member mileage.acpnMlgSave.do
delay.acceptProcess [write] auth=member delay.acptPrs.do โ ์ง์ฐ๋ฐฐ์๊ธ ์๋ฝ์ฒ๋ฆฌ.
research.actualSchedule [read] auth=member research.actualTrainSchedule.do
cart.add [write] auth=member cart.addCartList
seats.airportBusResidual [read] auth=member lms.TResidualSeatsResearch.do โ ๊ณตํญ๋ฒ์ค ์ข์๋งต โ research.TResidualSeatsResearch ์ ๋์ผ ์คํค๋ง.
mileage.amountSpec [read] auth=member mlg.amtSpec.do
research.assignScheduleView [read] auth=member research.assignScheduleView.do
addService.buyConfirm [write] auth=member addService.buyConfirm.do
goods.cacheCheck [read] auth=none goods.cacheCheck.do
checkin.cancel [write] auth=member checkin.cnc.do โ ํ๋๋ช
saleDt(psbFlg/reg ๋ saleDd).
addService.wheelchairCancel [write] auth=member addService.reserve.do โ addService.reserve.do ๋ ๋ค๊ธฐ๋ฅ ๊ฒฝ๋ก(postRequestWheelchairWithHistory ์ ๊ณต์ ), jobDvCd ๋ก ๋ถ๊ธฐ.
cashReceipt.issue [write] auth=member cashReceipt.issue.do
delay.cashRefund [write] auth=member dlay.cashRfn.do โ ๋ช
์์ @Field ๋ฐ๋(In ๋ชจ๋ธ ์์) โ ๊ณ์ขํ๋ถ(dmnPrsDvCd/dptnBankCd/dptnAcntNo).
cert.congressperson [read] auth=member certification.assemblyCert โ ๊ตญํ์์ ๋ฌด์(GET).
cert.merit [read] auth=member certification.MeritCert โ ๊ตญ๊ฐ์ ๊ณต์ ์ธ์ฆ.
qry.transferStation [read] auth=member qry.chtnStn.do
codes.get [read] auth=none common.code.do โ common.code.do ๊ณต์ โ ๋จ์ผ ์ฝ๋์
.
codes.getMulti [read] auth=none common.code.do โ common.code.do ๊ณต์ โ ๋ณต์ ์ฝ๋์
๋ณํ.
crypto.encrypt [read] auth=none common.encrypt.do โ common.encrypt.do ๊ณต์ (postKBPayEncrypt ์ ๋์ผ ๊ฒฝ๋ก).
passCard.coupons [read] auth=member passCard.CouponView
research.custTripInfo [read] auth=member research.custTripInfo.do
research.ncardInfo [read] auth=member research.dcntCrdInfo.do
research.ncardScheduleView [read] auth=member research.dcntCrdScheduleView.do
crypto.decrypt [read] auth=none common.decrypt.do
delay.certificate [read] auth=member dlay.athnIsu.do โ ์ง์ฐ์ฆ๋ช
์ ๋ฐ๊ธ์กฐํ.
passCard.delayDiscount [read] auth=member passCard.DelayDiscountView โ ํ์ด์ง Query h_page_no.
delay.returnReceipt [read] auth=member dlay.pymtRcet.do
account.delete [write] auth=member login.mbSced.do โ ํ์ํํด โ login.mbSced.do ์ด์ง๋ง ๋ก๊ทธ์ธ ์ธ์
ํ์.
addSrv.wheelchairHistoryDelete [write] auth=member addSrv.helpSrvCust.do โ helpSrvCust.do ๋ค๊ธฐ๋ฅ ๊ฒฝ๋ก(qryDvCd/addSrvDvCd ๋ถ๊ธฐ).
tk.receivedTicketHistory [read] auth=member tk.pbpAcepSpec.do โ ๋ฐ์์น์ฐจ๊ถ ๋ด์ญ.
tk.deliveryReceiver [read] auth=member tk.dlvRcvCust.do
gift.send [write] auth=member giftInfo.GiftSend โ ์น์ฐจ๊ถ ์ ๋ฌผ ๋ฐ์ก(+presentMap) โ ๋ณ๊ฒฝ ์์ฝ๋ฒํธ chgePbpRsvNo.
tk.deviceReset [write] auth=member tk.dvcInfoInit.do โ ๊ธฐ๊ธฐ์ ๋ณด ์ด๊ธฐํ(๋๋ฐ์ด์ค ๋ฐ์ธ๋ฉ ๋ฆฌ์
).
cert.disability [read] auth=member certification.disabled.do
passCard.discountCheck [read] auth=member passCard.DiscountCheck
delay.depositBankList [read] auth=member dlay.dptnBank.do โ ๋ช
์์ @Field(Device/Version/Key๋ง) โ ๊ณ์ขํ๋ถ์ฉ ์ํ๋ชฉ๋ก.
ebizcross.uuid [read] auth=none /ebizcross/getUUID.do โ ํฌ๋ก์ค์๋น์ค UUID ๋ฐ๊ธ ์ ํธ(์ธ์ฆ ์ ).
trn.freeSeatCar [read] auth=member trn.fresScar.do
copt.stationConvenienceMenu [read] auth=member copt.gdMenuLt.do โ ์ญํธ์ URL ๋ฉ๋ด(์๋ฆฌ๋ฒ ์ดํฐ/์ฃผ์ฐจ/BIS).
refund.ticketDetail [read] auth=member refunds.SelTicketInfo โ refunds.* ์ด์ง๋ง ์กฐํ(๋ฐํ๋์ ์์ธ).
tk.guardianSms [write] auth=member tk.gurdSmsSnd.do โ ๋ณดํธ์ SMS ๋ฐ์ก(์ฌ์ด๋์ดํํธ ์ก์
).
reservation.guideSeatCondition [read] auth=member reservation.guideSeatCnd.do
login.inquiryIsMember [read] auth=none login.joinCfm.do โ joinCfm โ ํ์์กด์ฌ ํ์ธ(์ธ์ฆ ์ ).
reservation.ticketRsvInquiry [read] auth=member certification.ReservationList โ certification.ReservationList ๊ณต์ โ ๊ฒฝ๋๋ณํ(hidPnrNo๋ง).
pay.integratedSettlement [pay,charge] auth=member pay.intgStl.do โUNSUPPORTED: integrated/cart settlement not supported โ use card via pay.reservationPayment โ ํตํฉ(์ฅ๋ฐ๊ตฌ๋) ์ ์ฐ(+PaymentMethod ๊ทธ๋ฆฌ๋).
crypto.kbPayEncrypt [read] auth=none common.encrypt.do โ common.encrypt.do ๊ณต์ (postCommonEncrypt ์ ๋์ผ ๊ฒฝ๋ก) โ KBํ์ด ๋ณํ.
krPass.list [read] auth=nonmember /ebizcom/krPassLstDtl.do โ ์ธ๊ตญ์ธ ์ฝ๋ ์ผํจ์ค ์กฐํ(์ฌ๊ถ/์ด๋ฉ์ผ/๋น๋ฒ).
krPass.changeStartDate [write] auth=nonmember /ebizcom/krPassChgStDt.do
krPass.flexiDateFix [write] auth=nonmember /ebizcom/krPassFxDateFix.do โ Flexi ์ด์ฉ์ผ ํ์ .
krPass.payment [pay,charge] auth=nonmember /ebizcom/krPassPayment.do โUNSUPPORTED: KORAIL PASS payment not supported โ card-number payment only โ enc ์นด๋ํ๋+3DS, ์ธ๊ตญ์ธ ๊ฒฐ์ .
mileage.lpointAuth [read] auth=member mlg.lpotAthn.do โ Lํฌ์ธํธ ์ธ์ฆ(auth/cert ์ฑ๊ฒฉ).
qr.localRailwayAuth [read] auth=member qr.bchTripSv.do โ ๋ฒฝ์ง๋
ธ์ ์ฌํ QR ์ธ์ฆ.
session.login [write,mtoken] auth=none login.Login โ ๐ m-token ๊ฒ์ดํธ โ ์ธ์
ํ๋ฆฝ(JSESSIONID).
login.authRegister [write] auth=member login.loginAthnReg.do โ ๋ก๊ทธ์ธ ์ธ์ฆ(์์ฒด ๋ฑ) ๋ฑ๋ก.
login.authRemove [write] auth=member login.loginAthnRmv.do โ ๋ก๊ทธ์ธ ์ธ์ฆ ํด์ .
session.logout [write] auth=none login.Logout โ ์ธ์
ํ๊ธฐ.
ebizcom.lostCenterSearch [read] auth=none /ebizcom/cs/guide/lost/srchLostCenter.do โ ๋ถ์ค๋ฌผ์ผํฐ ๊ฒ์(๊ณต๊ฐ).
addService.maasCancelPay [write] auth=member addService.cancelPay.do
addService.maasServiceCancel [write] auth=member addService.coptCnc.do โ addService.coptCnc.do.
ebizmaas.stationList [read] auth=none /ebizmaas/EbizMaasStationList.do โ MaaS ์ญ๋ชฉ๋ก(์ฐธ์กฐ๋ฐ์ดํฐ).
cust.matchedDiscountTarget [read] auth=member cust.mchdDcntTgt.do
member.verify [read] auth=none member.verify.do
research.mergeSeats [read] auth=member research.mergeSeatsC.do โ ์ค๊ฐ์น์ฐจ์ญ ์ข์์ฐ์ ์กฐํ.
file.mobilePlusMain [read] auth=none /file/CACHE/prdMobilePlusMain.cache โ ์ ์ ์บ์ ํ์ผ.
file.mobileService [read] auth=none /file/CACHE/MobileService.cache โ ์ ์ ์บ์ ํ์ผ.
myTicket.list [read] auth=member myTicket.MyTicketNewList.do
xPoint.myView [read] auth=member xPoint.MyXPointView
reservation.ncardExtension [write] auth=member reservation.dcntCrdExtn.do โ N์นด๋ ์ฐ์ฅ(์ํ๋ณ๊ฒฝ).
pay.naverPayMoney [pay,charge] auth=member pay.naverPayMoneyRsv.do โUNSUPPORTED: Naver Pay Money not supported โ card-number payment only
pay.naverPay [pay,charge] auth=member pay.naverPayRsv.do โUNSUPPORTED: Naver Pay not supported โ card-number payment only โ stlScnUrl(๊ฒฐ์ ํ๋ฉด URL) ๋ฐํ โ ์น๋ทฐ ๋ฆฌ๋ค์ด๋ ํธ.
nonMember.ticketReserve [write,mtoken] auth=nonmember nonMember.NonMemTicket โ ๐ m-token โ ๋นํ์ ์๋งค(์ด๋ฆ+์ ํ+๋น๋ฒ), PNR ์์ฑ, ์ธ์
์์.
nonMember.ticketList [read] auth=nonmember nonMember.NonMemTicketList
xPoint.okCashbagCert [read] auth=member xPoint.OkCashbagCertView
pass.infoList [read] auth=member pass.passInfoList
pass.menu [read] auth=member pass.passMenu.do
pass.otrPayIssue [pay,charge] auth=member pass.passOtrPayIssue โUNSUPPORTED: pass payment not supported โ card-number payment only โ OTR ๋ฐ๊ถ(๊ฒฐ์ +๋ฐ๊ถ, 3 map).
pass.payIssue [pay,charge] auth=member pass.passPayIssue โUNSUPPORTED: pass payment not supported โ card-number payment only โ ํจ์ค ๊ฒฐ์ +๋ฐ๊ถ(fromPassReserveInfo ๋ก ์์ฝ๊ฐ์ฒดโ๊ฒฐ์ ์์ฒญ).
pass.reserve [write] auth=member pass.passReserve
pass.scheduleInfoList [read] auth=member pass.passScheduleInfoList
pay.payco [pay,charge] auth=member payment.reserve.payco.do โUNSUPPORTED: PAYCO not supported โ card-number payment only
delay.pnrQuery [read] auth=member delay.pnrQry.do
login.popupConfirmRecord [write] auth=member login.poppCfmRec.do โ ํ์
ํ์ธ ๊ธฐ๋ก ์ ์ฅ.
trn.priceFare [read,mtoken] auth=member trn.prcFare.do โ ๐ m-token ๊ฒ์ดํธ โ ์ด์๊ณ์ฐ(์กฐํ).
reservation.priceReCalculation [write] auth=member certification.PriceReCalculation โ PNR ์ฌ๊ณ์ฐ(6๊ฐ ๋ณ๋ ฌ @Field ์น๊ฐํ) โ ๋ง์คํฐํ W.
push.update [write] auth=member push.update โ ํธ์ ๋ฑ๋ก/ํ ํฐ ๊ฐฑ์ .
railplus.autoCharge [write] auth=member railplus.autoCharge.do
tk.recentDeliveryHistory [read] auth=member tk.rcntDlvHst.do
refund.commission [read] auth=member refunds.CommissionView โ CommonIn ๋ฏธ์์ โ Device/Version/Key/Lang + h_comp_nm/h_comp_cert_no/ctlDvCd ๋ช
์ ์ ์ก.
refund.request [refund,charge] auth=member refunds.RefundsRequest โ CommonIn ๋ฏธ์์ โ ํ๋ถ ์คํ.
addSrv.wheelchairRequest [write] auth=member addSrv.helpSrvCust.do โ helpSrvCust.do ๋ค๊ธฐ๋ฅ ๊ฒฝ๋ก.
addService.wheelchairReRequest [write] auth=member addService.reserve.do โ addService.reserve.do ๋ค๊ธฐ๋ฅ ๊ฒฝ๋ก(postCancelWheelchair ์ ๊ณต์ ) โ ์ด๋ ฅ ์ฌ์ ์ฒญ.
reservation.cancel [write] auth=member reservationCancel.ReservationCancel โ ์ค์ ์ทจ์ ์คํ(txtPnrNo/txtJrnySqno/txtJrnyCnt).
reservation.cancelCheck [read] auth=member reservationCancel.ReservationCancelChk โ ์ทจ์ ์ฌ์ ํ์ธ(์์๋ฃ/addSrvRetList ๋ฐํ) โ ์ค์ ์ทจ์๋ ReservationCancel ์ด ์ํ.
reservation.change [write] auth=member reservation.reservationChange.do
reservation.list [read] auth=member certification.ReservationList โ certification.ReservationList ๊ณต์ โ ์ ์ฒด๋ณํ(psgDisc0019List).
pay.reservationPayment [pay,charge] auth=member payment.ReservationPayment โ payment.ReservationPayment ๊ณต์ (postRsvPayment ์ ๋์ผ ๊ฒฝ๋ก) +PaymentMethod ๊ทธ๋ฆฌ๋ โ ํ๋ฌธ PAN/VAN_PWD.
reservation.view [read] auth=member reservation.ReservationView โ timeStamp ์บ์๋ฒ์คํฐ.
reservationWait.register [write] auth=member reservationWait.ReservationWait โ ๋ช
์ ๋๊ธฐ์์ฝ(๊ธฐ์กด PNR์ ๋ฑ๋ก).
tk.retrieveTicket [write] auth=member tk.pbpWdrw.do โ ๋ณด๋ธ์น์ฐจ๊ถ ์ฒ ํ(withdraw).
pay.rsvPayment [pay,charge] auth=member payment.ReservationPayment โ payment.ReservationPayment ๊ณต์ (postReservationPayment ์ ๋์ผ ๊ฒฝ๋ก) โ RsvPaymentIn ๋ณํ(hidRsvChgNo).
schedule.runDate [read] auth=member schedule.runDt
lmu.scheduleQuery [read] auth=member lmu.scdlQry.do
trains.search [read,mtoken] auth=member seatMovie.ScheduleView โ ๐ m-token โ ์ด์ฐจ์กฐํ, ํ์ด์ง h_next_pg_flg + qryStNo/qryStTrnNo.
trains.searchSpecial [read,mtoken] auth=member seatMovie.ScheduleViewSpecial โ ๐ m-token โ ํน๋ณ์ด์ฐจ ์กฐํ.
ebizcom.travelProductSearch [read] auth=member /ebizcom/gdLstDtl.do
reservation.seatAssign [write] auth=member reservation.seatAssign.do โ ์ข์์ง์ ์์ฝ โ ReservationOut(PNR ์์ฑ).
checkin.info [read] auth=member checkin.info.do โ ํ๋๋ช
saleDt(psbFlg/reg ๋ saleDd).
checkin.possible [read] auth=member checkin.psbFlg.do โ ํ๋๋ช
saleDd + qrcode.
checkin.register [write] auth=member checkin.reg.do โ ํ๋๋ช
saleDd + ๋ฌผ๋ฆฌ์ข์(scarNo/seatNo).
crypto.shinhanEncrypt [read] auth=member shinhan.Encrypt.do โ ์ ํ์นด๋ ์ํธํ ์ ํธ.
cart.show [read] auth=member cart.showCartList
pay.samsungPayDecrypt [pay,charge] auth=member pay.spayCphdDatVal.do โUNSUPPORTED: Samsung Pay not supported โ card-number payment only โ ์ผ์ฑํ์ด โ ์๋ฒ๋ณตํธ๋ก stlCrCrdNo ๋ฐํ.
pay.monimoDecrypt [pay,charge] auth=member pay.monimoDecrypt.do โUNSUPPORTED: Monimo (Samsung) pay not supported โ card-number payment only โ ๋ชจ๋๋ชจ โ ์๋ฒ๋ณตํธ stlCrCrdNo.
pay.samsungPayOrderNo [pay,charge] auth=member pay.spayOrdNo.do โUNSUPPORTED: Samsung Pay not supported โ card-number payment only โ encTotTxnAmt AES-256-CBC(ํค=AppLoginCphd).
common.specificDateData [read] auth=none common.specificDateData.do
integrate.srCheck [read] auth=none integrate.srCheck.do
integrate.srJoin [write] auth=member integrate.srJoin.do โ SR ํตํฉํ์ ๊ฐ์
(join).
common.stationData [read] auth=none common.stationdata
common.stationInfo [read] auth=none common.stationinfo
pay.realtimeAccount [pay,charge] auth=member pay.stbkAcnt.do โUNSUPPORTED: real-time bank transfer not supported โ card-number payment only โ ์ค์๊ฐ๊ณ์ข์ด์ฒด โ ์๊ธ์ฃผ ์กฐํ(pay.* ๊ฒฝ๋ก๋ผ kind=pay).
pay.stbkBankList [pay,charge] auth=member pay.stbkRegBank.do โUNSUPPORTED: real-time bank transfer not supported โ card-number payment only โ ์ํ๋ชฉ๋ก ์กฐํ(pay.* ๊ฒฝ๋ก๋ผ kind=pay).
pay.settlementKeyProcess [pay,charge] auth=member pay.stlKeyPrs.do โUNSUPPORTED: easy-pay settlement key not supported โ card-number payment only โ ์ ์ฐํค ๋ฑ๋ก.
pay.settlementKeyQuery [pay,charge] auth=member pay.stlKeyQry.do โUNSUPPORTED: easy-pay settlement key not supported โ card-number payment only โ ๋ฑ๋ก ์ ์ฐํค ๋ชฉ๋ก ์กฐํ(pay.* ๊ฒฝ๋ก๋ผ kind=pay).
seats.residual [read] auth=member research.TResidualSeatsResearch.do โ ์ข์๋งต(์์ฌ์).
ticket.dupCheck [read] auth=member ticket.ticketDupCheck.do
receipt.info [read] auth=member receipt.ReceiptInfo
reservation.ticketReserve [write,mtoken] auth=member certification.TicketReservation โ ๐ m-token โ ๋ฐ๊ถ์์ฒญ(์๋/์
์), PNR ์์ฑ.
myTicket.widget [read] auth=member myTicket.MyTicketWidget.do โ encMbCrdNo(์ํธ ํ์์นด๋).
pay.tossBillingKey [pay,charge] auth=member pay.tossautoC.do โUNSUPPORTED: Toss pay not supported โ card-number payment only โ ํ ์ค ๋น๋งํค.
trainsInfo.tourTrainSpecialRoom [read] auth=member trainsInfo.TourTrainSpecialRoom
pass.travelGoodsMenu [read] auth=member pass.trGdMenuLt.do
research.trainResearch [read] auth=member research.TrainResearch
tripChange.handleCancel [write] auth=member ticket.tripChgHndgCnc.do โ ๋ณ๊ฒฝ ์๊ธฐ์ทจ์(+lumpStlTgtMap ๋์ ).
tripChange.process [write] auth=member reservation.tripChgPrsC.do โ ์ฌ์ ๋ณ๊ฒฝ ํ์ โ ์ ๊ท PNR(ReservationOut).
login.userCheck [read] auth=none login.userCheck
addSrv.wheelchairHistory [read] auth=member addSrv.helpSrvCust.do โ helpSrvCust.do ๋ค๊ธฐ๋ฅ ๊ฒฝ๋ก(์กฐํ ๋ณํ).
addSrv.wheelchairResult [read] auth=member addSrv.helpSrvTk.do
xPoint.view [read] auth=member xPoint.XPointView
product.cancel [write] auth=member product.ReservationCancel โ GET ๋ฉ์๋์ด์ง๋ง ์ทจ์ ์คํ.
push.crewCall [write] auth=member push.callCrew.do โ ์น๋ฌด์ ํธ์ถ(์ฌ์ด๋์ดํํธ ์ก์
).
self.seatChangeInfo [read] auth=member self.seatChgInfo.do โ ์ข์๋ณ๊ฒฝ ๊ฐ๋ฅ์กฐํ.
refund.verifyOnline [read] auth=member refunds.verifyOnlineRefunds โ refunds.* ์ด์ง๋ง ์กฐํ(๊ฒ์ฆ) โ CommonOut ๋ฏธ์์.