콘텐츠로 이동

계정 조회 모델

승차권·예약 내역·계정 정보 조회의 응답 모델입니다.

TicketListTrain

TicketListTrain(
    journey_sequence: str | None = None,
    run_date: str | None = None,
    train_no: str | None = None,
    train_class_code: str | None = None,
    train_class_name: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    car_no: str | None = None,
    seat_no: str | None = None,
    seat_count: str | None = None,
    passenger_type_code: str | None = None,
    received_amount: str | None = None,
    buyer_name: str | None = None,
    passenger_name: str | None = None,
    train_suspension_flag: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

승차권 한 장에 포함된 열차 구간 정보를 담습니다.

호차 번호(car_no)처럼 서버가 정수로 보내는 값도 문자열로 담습니다.

TicketListTicket

TicketListTicket(
    pnr_no: str | None = None,
    sale_window_no: str | None = None,
    sale_date: str | None = None,
    return_sale_date: str | None = None,
    sale_sequence: str | None = None,
    return_password: str | None = None,
    ticket_status_code: str | None = None,
    ticket_kind_code: str | None = None,
    ticket_kind_name: str | None = None,
    train_info: tuple[Mapping[str, object], ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
    ticket_sequence: str | None = None,
    ticket_status_name: str | None = None,
    return_possible_flag: str | None = None,
    use_transaction_no: str | None = None,
    notify_use_transaction_no: str | None = None,
    pbp_acceptance_target_flag: str | None = None,
    trains: tuple[TicketListTrain, ...] = (),
)

승차권 한 장의 식별자·상태와 열차 구간을 담습니다.

ticket_kind_code

ticket_kind_code: str | None = None

승차권 종류 코드(h_tk_knd_cd)입니다. 예약 행이 아니라 승차권 행의 값을 읽습니다.

ticket_status_name

ticket_status_name: str | None = None

승차권 상태 이름(h_tk_stt_nm)입니다. 서버가 보낸 이름을 그대로 담으며 ticket_status_code를 따로 번역하지 않습니다.

return_possible_flag

return_possible_flag: str | None = None

반환 가능 여부 플래그(h_ret_psb_flg)입니다. 앱은 승차권 상세의 플래그와 사용 여부도 함께 확인하므로 이 값만으로 환불할 수 있는지 판단할 수 없습니다. 앱이 비교하는 값은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

pbp_acceptance_target_flag

pbp_acceptance_target_flag: str | None = None

대리수령 대상 여부 플래그(h_pbp_acep_tgt_flg)입니다. 승차권 상세 응답에는 이 값이 보통 없으므로, 앱처럼 환불하려면 이 값을 refund의 pbp_acceptance_target_flag로 넘기세요.

TicketListReservation

TicketListReservation(
    tickets: tuple[TicketListTicket, ...] = (),
    departure_datetime: str | None = None,
    ticket_kind_code: str | None = None,
    list_count: str | None = None,
    seat_assign_count: int | None = None,
    ticket_status: str | None = None,
    is_finished: bool | None = None,
    is_history: bool | None = None,
    is_emergency: bool | None = None,
    display_ticket_name: str | None = None,
    is_non_member: bool | None = None,
    is_transfer: bool | None = None,
    is_wheelchair_member: bool | None = None,
    is_rail_police_enabled: bool | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    additional_service: MaasServiceDetail | None = None,
    ticket_kind: str | None = None,
)

예약 하나에 속한 승차권 목록과 부가서비스를 담습니다.

tickets 외의 필드는 추정한 응답 키로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다. 키가 다르면 해당 필드는 None입니다.

departure_datetime

departure_datetime: str | None = None

출발 일시(hDptDtTm)입니다. 응답에 없으면 None입니다.

ticket_kind

ticket_kind: str | None = None

승차권 종류(ticketKind)입니다. 서버가 보낸 문자열을 그대로 담으며, 값의 의미는 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

TicketListResponse

TicketListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    reservations: tuple[TicketListReservation, ...] = (),
    total_count: str | None = None,
)

Bases: BaseKorailResponse

현재 승차권 또는 구매 이력을 예약별로 묶어 담습니다.

total_count

total_count: str | None = None

전체 건수(h_total_cnt)입니다. 키가 없으면 None입니다.

ServiceStatusResponse

ServiceStatusResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

Bases: BaseKorailResponse

예매 서비스의 운영 상태 응답을 담습니다.

CartItem

CartItem(
    service_code: str | None = None,
    provider_name: str | None = None,
    product_name: str | None = None,
    item_type: str | None = None,
    departure_date: str | None = None,
    received_amount: str | None = None,
    reservation_received_date: str | None = None,
    ticket_count: str | None = None,
    usage_start_date: str | None = None,
    usage_start_time: str | None = None,
    usage_close_time: str | None = None,
    partner_reservation_no: str | None = None,
    pnr_no: str | None = None,
    lump_sum_target_no: str | None = None,
    customer_no: str | None = None,
    virtual_reservation_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    item_type_code: str | None = None,
    provider_id: str | None = None,
    item_sequence: str | None = None,
    journey_sequence: str | None = None,
    journey_type_code: str | None = None,
    usage_close_date: str | None = None,
    settlement_limit_time: str | None = None,
    settlement_extension_transaction_no: str | None = None,
    settlement_means_allow_value: str | None = None,
    field_settlement_division: str | None = None,
    supervising_station_code: str | None = None,
    filler: str | None = None,
)

장바구니의 열차·공항버스 예약 또는 부가서비스 한 행을 담습니다.

ticket_count

ticket_count: str | None = None

승차권 매수(h_tk_cnt)입니다. 서버가 정수로 보내도 문자열로 담습니다.

provider_id

provider_id: str | None = None

부가서비스 제공 업체 ID(h_add_srv_mrk_ent_id)입니다. 업체 이름은 provider_name에 있습니다.

item_sequence

item_sequence: str | None = None

이 행의 항목 일련번호(h_item_sqno)입니다.

journey_sequence

journey_sequence: str | None = None

여정 일련번호(h_jrny_sqno)입니다.

journey_type_code

journey_type_code: str | None = None

여정 구분 코드(h_jrny_tp_cd)입니다.

usage_close_date

usage_close_date: str | None = None

이용 종료 날짜(utlClsDt)입니다. usage_close_time과 이어 붙이면 이용 종료 일시가 됩니다.

settlement_limit_time

settlement_limit_time: str | None = None

결제 기한(h_stl_lmt_tm)입니다. 그 자체로 기한을 나타내는 문자열입니다.

settlement_extension_transaction_no

settlement_extension_transaction_no: str | None = None

응답의 h_stl_extns_tno 값을 그대로 담습니다. 의미를 확인하지 못했습니다.

settlement_means_allow_value

settlement_means_allow_value: str | None = None

응답의 h_stl_mns_allw_val 값을 그대로 담습니다. 의미를 확인하지 못했습니다.

field_settlement_division

field_settlement_division: str | None = None

응답의 h_fld_stl_dv 값을 그대로 담습니다. 의미를 확인하지 못했습니다.

supervising_station_code

supervising_station_code: str | None = None

응답의 h_spvs_rs_stn_cd 값을 그대로 담습니다. 의미를 확인하지 못했습니다.

filler

filler: str | None = None

응답의 h_filler 값을 그대로 담습니다. 의미를 확인하지 못했습니다.

usage_window

usage_window: tuple[str | None, str | None, str | None]

이용 시작일·시작 시각·종료 시각을 한 번에 반환합니다.

CartListResponse

CartListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[CartItem, ...] = (),
)

Bases: BaseKorailResponse

로그인 계정의 장바구니 목록을 담습니다.

DepositBank

DepositBank(
    code: str | None = None,
    display_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

입금 가능한 은행의 코드와 이름을 담습니다.

DepositBankListResponse

DepositBankListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[DepositBank, ...] = (),
)

Bases: BaseKorailResponse

입금 가능한 은행 목록을 담습니다.

DelayDiscountTicket

DelayDiscountTicket(
    fare: str | None = None,
    original_sale_date: str | None = None,
    window_no: str | None = None,
    sale_sequence: str | None = None,
    return_password: str | None = None,
    ticket_sequence: str | None = None,
    ticket_kind_code: str | None = None,
    original_ticket_sale_date: str | None = None,
    received_amount: str | None = None,
    train_class_code: str | None = None,
    room_class_code: str | None = None,
    train_no: str | None = None,
    departure_station_code: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    arrival_station_code: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    ticket_status_code: str | None = None,
    ticket_status_name: str | None = None,
    buyer_name: str | None = None,
    passenger_name: str | None = None,
    page_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

지연할인권 한 장의 식별자·사용 조건을 담습니다.

사용 가능 기한(h_use_psb_dt)은 읽지 않습니다. 응답에 있으면 raw에서 확인하세요.

DelayDiscountTicketListResponse

DelayDiscountTicketListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[DelayDiscountTicket, ...] = (),
    current_page: str | None = None,
    total_pages: str | None = None,
    total_count: str | None = None,
    row_count: str | None = None,
    last_page_flag: str | None = None,
)

Bases: BaseKorailResponse

지연할인권 목록과 페이지 정보를 담습니다.

페이지 정보(current_page, total_pages, total_count, row_count, last_page_flag)는 응답의 main_info 블록에서 읽습니다. 블록이 없으면 모두 None입니다.

DiscountCoupon

DiscountCoupon(
    guide: str | None = None,
    start_date: str | None = None,
    expiration_date: str | None = None,
    discount_kind_code: str | None = None,
    discount_rate_amount_division_code: str | None = None,
    weekday_fare_discount: str | None = None,
    weekday_price_discount: str | None = None,
    weekend_fare_discount: str | None = None,
    weekend_price_discount: str | None = None,
    remarks: tuple[str, ...] = (),
    coupon_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

할인쿠폰 한 장의 조건과 유효기간을 담습니다.

discount_rate_amount_division_code

discount_rate_amount_division_code: str | None = None

할인율·할인액 구분 코드(h_disc_rt_amt_dv_cd)입니다. 코드 값의 의미를 확인하지 못했습니다.

DiscountCouponListResponse

DiscountCouponListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[DiscountCoupon, ...] = (),
    current_page: int | None = None,
    total_pages: int | None = None,
    total_count: str | None = None,
    row_count: str | None = None,
)

Bases: BaseKorailResponse

할인쿠폰 목록과 안내를 담습니다.

PassOffice

PassOffice(
    code: str | None = None,
    display_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 조회의 발권처 코드와 표시 이름을 담습니다.

PassOpenDate

PassOpenDate(
    open_date: str | None = None,
    item_sequence: str | None = None,
    pnr_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 사용 개시일 한 행과 그 항목 일련번호·PNR을 담습니다.

PassAvailabilityResponse.pass_info의 한 행입니다. 사용 개시일만 필요하면 PassAvailabilityResponse.open_dates를 쓰세요.

PassAvailabilityMainInfo

PassAvailabilityMainInfo(
    message_code: str | None = None,
    total_count: str | None = None,
    row_count: str | None = None,
    selected_page_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 사용일 조회의 중첩 상태와 건수를 담습니다.

이 응답은 결과 코드를 최상위가 아니라 이 블록의 message_code에만 담아 보낼 수 있습니다. 라이브러리는 이 값으로 예외를 발생시키지 않으므로 필요하면 직접 확인하세요.

PassAvailabilityResponse

PassAvailabilityResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    open_dates: tuple[str, ...] = (),
    ticket_issue_dates: tuple[str, ...] = (),
    offices: tuple[PassOffice, ...] = (),
    pass_info: tuple[PassOpenDate, ...] = (),
    main_info: PassAvailabilityMainInfo | None = None,
)

Bases: BaseKorailResponse

패스의 사용 개시일·발권 가능일·창구 목록을 담습니다.

open_dates

open_dates: tuple[str, ...] = ()

pass_info의 사용 개시일만 모은 목록입니다. 날짜가 없는 행은 건너뜁니다.

TripMenuContent

TripMenuContent(
    title: str | None = None,
    detail: str | None = None,
    detail_type: str | None = None,
    active: str | None = None,
    agree: str | None = None,
    info: str | None = None,
    image: str | None = None,
    url: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    commuter_kind_code: str | None = None,
    pass_type: str | None = None,
    pass_data: PassMenuData | None = None,
)

여행상품 메뉴의 안내 한 행과 패스 조건을 담습니다.

commuter_kind_code

commuter_kind_code: str | None = None

정기권 종류 코드(cmtrKndCd)입니다. get_commuter_kind_menu의 commuter_kind_code로 넘깁니다. 정기권 메뉴가 아닌 행에서는 None일 수 있습니다.

pass_type

pass_type: str | None = None

응답의 passType 값입니다. 의미를 확인하지 못했습니다.

pass_data

pass_data: PassMenuData | None = None

정기권 조회에 필요한 연령·기간 선택지 묶음(passData)입니다. 없으면 None입니다.

TripMenuItem

TripMenuItem(
    title: str | None = None,
    detail: str | None = None,
    menu_type: str | None = None,
    button: str | None = None,
    contents: tuple[TripMenuContent, ...] = (),
    url: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    content_count: int | None = None,
)

여행상품 메뉴 한 항목과 그 안내 목록을 담습니다.

content_count

content_count: int | None = None

안내 행 개수(contCount)입니다. 정수나 숫자 문자열을 정수로 읽으며, 그 밖의 값이면 None입니다.

TripMenuResponse

TripMenuResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[TripMenuItem, ...] = (),
    popup_message: str | None = None,
)

Bases: BaseKorailResponse

여행상품 메뉴 목록을 담습니다.

ProductReservation

ProductReservation(
    product_name: str | None = None,
    reservation_status: str | None = None,
    payment_deadline: str | None = None,
    payment_status: str | None = None,
    virtual_reservation_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    reservation_sequence: str | None = None,
    reservation_status_code: str | None = None,
)

여행상품 예약 한 건의 식별자와 상태를 담습니다.

reservation_sequence

reservation_sequence: str | None = None

예약 순번(strVrRsvSqno)입니다. virtual_reservation_no와 함께 get_product_detail의 reservation_sequence로 넘깁니다.

reservation_status_code

reservation_status_code: str | None = None

예약 상태 코드(strRsvSttCd)입니다. 코드 값의 의미는 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

ProductReservationListResponse

ProductReservationListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[ProductReservation, ...] = (),
    total_count: int | None = None,
)

Bases: BaseKorailResponse

여행상품 예약 목록 한 페이지를 담습니다.

ProductDetailResponse

ProductDetailResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    product_name: str | None = None,
    reservation_status: str | None = None,
    cancellation_deadline: str | None = None,
    cancellation_amount: str | None = None,
    cancellation_fee: str | None = None,
    received_amount: str | None = None,
    total_amount: str | None = None,
    usage_period: str | None = None,
    included_item_names: tuple[str, ...] = (),
    virtual_reservation_no: str | None = None,
    detail_raw: Mapping[str, object] = dict[str, object](),
    goods_sequence: str | None = None,
)

Bases: BaseKorailResponse

여행상품 예약의 상세·금액·취소 조건을 담습니다.

goods_sequence

goods_sequence: str | None = None

상품 일련번호(strGdSqno)입니다. cancel_product_reservation은 이 값과 virtual_reservation_no로 취소를 요청하며, 값이 비어 있으면 요청을 보내기 전에 KorailProtocolError를 발생시킵니다.

ReceiptPayment

ReceiptPayment(
    *,
    payment_method: str,
    approval_date: str,
    installment_months: int,
    amount: int,
    account_no: str,
    approval_no: str,
    card_no: str,
    point_no: str,
    raw: Mapping[str, object] = dict[str, object](),
)

영수증의 결제수단 한 행을 담습니다.

ReceiptCashPayment

ReceiptCashPayment(
    *,
    approval_method_name: str,
    authentication_domain_recognition_no: str,
    cash_receipt_approval_no: str,
    cash_receipt_transaction_division_code: str,
    total_approved_amount: int,
    raw: Mapping[str, object] = dict[str, object](),
)

영수증에 포함된 현금영수증 한 행을 담습니다.

인증 도메인 인식번호와 현금영수증 승인번호도 가리지 않고 서버가 보낸 값 그대로 담습니다.

approval_method_name

approval_method_name: str

승인 방법 이름(h_apv_mtd_nm)입니다.

TicketReceipt

TicketReceipt(
    *,
    travel_date: str,
    departure_station: str,
    departure_time: str,
    arrival_station: str,
    arrival_time: str,
    commuter_kind_code: str,
    journey_type_code: str,
    printed_discount_name: str,
    printed_discount_kind_code: str,
    print_type: str,
    seat_class_name: str,
    ticket_kind_code: str,
    ticket_kind_name: str,
    ticket_status_code: str,
    train_class_code: str,
    train_class_name: str,
    train_group_code: str,
    train_no: str,
    passenger_counts: tuple[int, int, int],
    received_amount: int,
    card_refund_amount: int,
    refund_fee: int,
    refund_received_amount: int,
    point_refund_amount: int,
    payments: tuple[ReceiptPayment, ...] = (),
    cash_receipts: tuple[ReceiptCashPayment, ...] = (),
    member_card_no: str,
    raw: Mapping[str, object] = dict[str, object](),
)

승차권 영수증의 이용 내역과 결제 정보를 담습니다.

TicketReceiptResponse

TicketReceiptResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[TicketReceipt, ...] = (),
)

Bases: BaseKorailResponse

승차권 영수증 조회 결과를 담습니다.

ReservationHistoryTrain

ReservationHistoryTrain(
    departure_station: str | None = None,
    departure_time: str | None = None,
    arrival_station: str | None = None,
    arrival_time: str | None = None,
    run_date: str | None = None,
    train_no: str | None = None,
    train_class_code: str | None = None,
    train_class_name: str | None = None,
    reservation_type_code: str | None = None,
    acceptance_possible_flag: str | None = None,
    payment_flag: str | None = None,
    settlement_flag: str | None = None,
    reserved_amount: str | None = None,
    seat_count: int | None = None,
    standing_count: int | None = None,
    pnr_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    payment_deadline_date: str | None = None,
    payment_deadline_time: str | None = None,
    payment_message: str | None = None,
    payment_possible_date: str | None = None,
    prepayment_target_flag: str | None = None,
    journey_sequence: str | None = None,
)

예약 이력의 열차와 결제 기한 정보를 담습니다.

결제 기한은 payment_deadline_date와 payment_deadline_time에 있으며, 값이 없으면 None입니다. 플래그 필드만으로는 기한을 알 수 없습니다. 이 모델이 읽지 않는 응답 키도 있으며, 원본은 raw에 남습니다.

reserved_amount

reserved_amount: str | None = None

예약 금액(h_rsv_amt)입니다. 이 열차 행에 있는 유일한 금액 필드입니다.

ReservationHistoryTicket

ReservationHistoryTicket(
    sale_date: str | None = None,
    sale_window_no: str | None = None,
    sale_sequence: str | None = None,
    ticket_kind_code: str | None = None,
    movie_ticket_flag: str | None = None,
    delay_discount_flag: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

예약 이력에 중첩된 발권 승차권 한 행을 담습니다.

ReservationHistoryOriginalTicket

ReservationHistoryOriginalTicket(
    sale_date: str | None = None,
    window_no: str | None = None,
    sale_sequence: str | None = None,
    return_password: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

예약 이력에 중첩된 원표 한 행을 담습니다.

ReservationHistoryPassenger

ReservationHistoryPassenger(
    passenger_type_code: str | None = None,
    passenger_count_per_info: str | None = None,
    discount_kind_code: str | None = None,
    discount_kind_code_2: str | None = None,
    discount_no: str | None = None,
    discount_no_2: str | None = None,
    delay_original_window_no: str | None = None,
    delay_original_sale_date: str | None = None,
    delay_original_sale_sequence: str | None = None,
    delay_original_return_password: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

예약 이력의 승객 유형별 인원·할인 정보를 담습니다.

ReservationHistoryReservation

ReservationHistoryReservation(
    pnr_no: str | None = None,
    total_fare: str | None = None,
    total_price: str | None = None,
    total_discount_amount: str | None = None,
    total_received_amount: str | None = None,
    payment_flag: str | None = None,
    tickets: tuple[ReservationHistoryTicket, ...] = (),
    original_tickets: tuple[
        ReservationHistoryOriginalTicket, ...
    ] = (),
    passengers: tuple[
        ReservationHistoryPassenger, ...
    ] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

예약 이력에 중첩된 예약·운임·결제 정보를 담습니다.

이 블록은 추정한 응답 키(reservationOut)로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다. 키가 다르면 ReservationHistoryJourney.reservation은 None입니다.

ReservationHistoryJourney

ReservationHistoryJourney(
    trains: tuple[ReservationHistoryTrain, ...] = (),
    service_infos: tuple[Mapping[str, object], ...] = (),
    accompanying_infos: tuple[
        Mapping[str, object], ...
    ] = (),
    reservation: ReservationHistoryReservation
    | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

예약 이력의 여정 한 개와 열차·부가 정보를 담습니다.

service_infos(srv_infos)와 accompanying_infos(acmp_infos)는 행을 해석하지 않고 응답의 원본 매핑을 그대로 담습니다.

ReservationHistoryResponse

ReservationHistoryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    reservation_passenger_name: str | None = None,
    phone_no: str | None = None,
    reservation_limit_flag: str | None = None,
    seatmap_flag: str | None = None,
    process_flag: str | None = None,
    follow_flag: str | None = None,
    customer_no: str | None = None,
    customer_division_code: str | None = None,
    customer_sort_code: str | None = None,
    customer_class_code: str | None = None,
    journey_count: str | None = None,
    guide_info: str | None = None,
    journeys: tuple[ReservationHistoryJourney, ...] = (),
    items: tuple[ReservationHistoryTrain, ...] = (),
)

Bases: BaseKorailResponse

현재 예약 이력과 여정별 상세를 담습니다.

남아 있는 예약이 없어 결과 코드 P100의 실패 응답이 오면 예외를 발생시키지 않고, 목록이 빈 응답을 돌려줍니다.

trains

trains: tuple[ReservationHistoryTrain, ...]

items와 같은 열차 목록을 반환합니다.

FreeSeatCarResponse

FreeSeatCarResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    title: str | None = None,
    car_no: str | None = None,
    content: str | None = None,
)

Bases: BaseKorailResponse

열차의 자유석 호차와 안내 문구를 담습니다.

car_no

car_no: str | None = None

자유석 호차 번호(fresScarNo)입니다. 자유석이 없는 열차는 None입니다.

GuideSeatConditionResponse

GuideSeatConditionResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    time_stamp: int | None = None,
)

Bases: BaseKorailResponse

도우미석 이용 조건과 서버 안내를 담습니다.

실패 응답도 예외를 발생시키지 않고 돌려줍니다(세션 만료는 제외). 안내 문구는 h_msg_txt에 있습니다. time_stamp는 추정한 응답 키(timeStamp)로 읽으며, 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

TrainScheduleItem

TrainScheduleItem(
    train_no: str | None = None,
    train_no_qb: str | None = None,
    train_sequence: str | None = None,
    train_group_code: str | None = None,
    train_class_code: str | None = None,
    train_class_name: str | None = None,
    run_date: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    departure_time_qb: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    arrival_time_qb: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    departure_construction_order: str | None = None,
    arrival_construction_order: str | None = None,
    departure_run_order: str | None = None,
    arrival_run_order: str | None = None,
    car_type_name: str | None = None,
    general_room_name: str | None = None,
    special_room_name: str | None = None,
    general_reservation_code: str | None = None,
    general_reservation_name: str | None = None,
    special_reservation_code: str | None = None,
    free_seat_reservation_code: str | None = None,
    standing_reservation_code: str | None = None,
    standing_reservation_name: str | None = None,
    journey_reservation_code: str | None = None,
    journey_reservation_name: str | None = None,
    seat_map_flag: str | None = None,
    delay_sale_flag: str | None = None,
    wait_reservation_flag: str | None = None,
    reservation_possible_name: str | None = None,
    special_reservation_possible_name: str | None = None,
    info_text: str | None = None,
    popup_message: str | None = None,
    shuttle_standing_open_flag: str | None = None,
    remaining_standing_count: str | None = None,
    standard_remaining_seat_count: str | None = None,
    first_remaining_seat_count: str | None = None,
    merge_target_flag: str | None = None,
    train_suspended_flag: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    special_reservation_name: str | None = None,
    free_seat_reservation_name: str | None = None,
)

좌석배정·병합 조회에 사용하는 열차 정보를 담습니다.

get_seat_assignment_schedule과 get_merge_seats_inquiry는 응답 모양이 달라 채우는 필드가 다릅니다. 한쪽 응답에 없는 필드는 None입니다.

general_reservation_name

general_reservation_name: str | None = None

일반실 예약 표시 이름(h_gen_rsv_nm)입니다. 두 조회 모두 이 필드를 채웁니다.

standing_reservation_name

standing_reservation_name: str | None = None

입석 예약 표시 이름(h_stnd_rsv_nm)입니다. 고정값 "-"가 아니라 행마다 다른 값(예: "역발매중")이 옵니다.

reservation_possible_name

reservation_possible_name: str | None = None

예약 가능 표시 문구(h_rsv_psb_nm)입니다. 가부 플래그가 아니라 메뉴에 따라 내용이 달라지는 화면 문구이며, 할인 라벨이 들어 있을 수도 있습니다.

PassScheduleTrain

PassScheduleTrain(
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    detour_code: str | None = None,
    schedule_price: str | None = None,
    train_group_code: str | None = None,
    train_no: str | None = None,
    train_sequence: str | None = None,
    change_train_sequence: str | None = None,
    change_train_division_code: str | None = None,
    run_date: str | None = None,
    price_class_code: str | None = None,
    route_code: str | None = None,
    departure_construction_order: str | None = None,
    arrival_construction_order: str | None = None,
    car_type_code: str | None = None,
    train_class_code: str | None = None,
    commuter_use_terminal_code: str | None = None,
    commuter_use_terminal_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

정기권으로 이용할 수 있는 열차 한 편을 담습니다.

PassAgeOption

PassAgeOption(
    commuter_age_code: str | None = None,
    display_name: str | None = None,
    minimum_age: str | None = None,
    maximum_age: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 예매에 사용할 연령 선택 항목을 담습니다.

PassScheduleInfo

PassScheduleInfo(
    trains: tuple[PassScheduleTrain, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

정기권 열차 조회의 조건과 부가 정보를 담습니다.

PassScheduleMainInfo

PassScheduleMainInfo(
    sale_window_no: str | None = None,
    work_date: str | None = None,
    work_time: str | None = None,
    job_id: str | None = None,
    version_no: str | None = None,
    message_code: str | None = None,
    selected_count: str | None = None,
    total_selected_count: str | None = None,
    count_per_page: str | None = None,
    page_count: str | None = None,
    next_page_flag: str | None = None,
    change_train_division_code: str | None = None,
    page_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

정기권 열차 조회의 중첩 상태와 조건을 담습니다.

page_count

page_count: str | None = None

페이지 수(h_page_cnt)입니다. 전체 건수가 페이지 크기보다 커도 next_page_flag가 "N"으로 올 수 있으므로, 이 값과 next_page_flag만으로 모든 결과를 받았다고 판단하지 마세요.

SeatAssignmentScheduleResponse

SeatAssignmentScheduleResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    next_page_flag: str | None = None,
    merge_reservation_possible_flag: str | None = None,
    job_id: str | None = None,
    menu_id: str | None = None,
    goods_no: str | None = None,
    notice_message: str | None = None,
    first_seat_count: str | None = None,
    second_seat_count: str | None = None,
    agreement_text: str | None = None,
    first_departure_time: str | None = None,
    result_count: str | None = None,
    next_query_station_no: str | None = None,
    next_train_no: str | None = None,
    next_preceding_train_no: str | None = None,
    next_connecting_train_no: str | None = None,
    remaining_seat_count: str | None = None,
    trains: tuple[TrainScheduleItem, ...] = (),
)

Bases: BaseKorailResponse

좌석배정 예매 화면의 열차 목록과 조회 조건을 담습니다.

조회 조건 필드의 이름은 열차 조회 결과의 TrainSearchMetadata와 대부분 같습니다. merge_reservation_possible_flag는 이 응답에서 읽지 않으므로 항상 None입니다.

IntermediateStation

IntermediateStation(
    code: str | None = None,
    name: str | None = None,
    run_order: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

좌석 병합 구간이 나뉘는 중간역을 담습니다.

PassPeriodOption

PassPeriodOption(
    commuter_period_code: str | None = None,
    display_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 예매에 사용할 기간 선택 항목을 담습니다.

MergeSeatsInquiryResponse

MergeSeatsInquiryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    merge_reservation_possible_flag: str | None = None,
    run_date: str | None = None,
    intermediate_stations: tuple[
        IntermediateStation, ...
    ] = (),
    trains: tuple[TrainScheduleItem, ...] = (),
)

Bases: BaseKorailResponse

병합 가능한 열차와 중간역 목록을 담습니다.

run_date

run_date: str | None = None

응답 최상위의 운행일(runDt)입니다. 응답에 없으면 None이며, 열차별 운행일은 trains 각 항목의 run_date에 있습니다.

PassMenuData

PassMenuData(
    commuter_kind_code: str | None = None,
    station_selection: str | None = None,
    age_options: tuple[PassAgeOption, ...] = (),
    period_options: tuple[PassPeriodOption, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

패스 메뉴의 역 선택 조건과 상품 코드를 담습니다.

PassPassengerInfo

PassPassengerInfo(
    h_cls_prnb: int | None = None,
    h_dcnt_knd_cd: str | None = None,
    h_st_prnb: int | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스의 승객 종류별 인원 조건을 담습니다.

PassPassengerInfos

PassPassengerInfos(
    h_chtn_allw_flg: str | None = None,
    h_max_cnt: str | None = None,
    h_min_cnt: str | None = None,
    psg_info: tuple[PassPassengerInfo, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

패스 승객 조건 목록을 담습니다.

PassGoodsInfo

PassGoodsInfo(
    h_cnd_flg_disc_no: str | None = None,
    psg_infos: PassPassengerInfos | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

패스 메뉴에 연결된 상품 정보를 담습니다.

PassMenuItem

PassMenuItem(
    after_day: str | None = None,
    agreement: str | None = None,
    detail_type: str | None = None,
    detail_description: str | None = None,
    enabled: str | None = None,
    item_id: str | None = None,
    information: str | None = None,
    sale_message_1: str | None = None,
    sale_message_2: str | None = None,
    sale_message_3: str | None = None,
    expanded: str | None = None,
    parent_id: str | None = None,
    representative_arrival: str | None = None,
    representative_departure: str | None = None,
    title: str | None = None,
    train_group_code: str | None = None,
    item_type: str | None = None,
    goods_data: PassGoodsInfo | None = None,
    pass_data: PassMenuData | None = None,
    url: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

정기권·패스 메뉴 한 항목과 안내를 담습니다.

after_day

after_day: str | None = None

응답의 afterDay 값입니다. 서버가 보낸 문자열을 그대로 담으므로, 정수가 필요하면 직접 변환하세요.

PassMenuResponse

PassMenuResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[PassMenuItem, ...] = (),
)

Bases: BaseKorailResponse

정기권·패스 메뉴 목록을 담습니다.

CommuterKindMenuResponse

CommuterKindMenuResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    after_day: str | None = None,
    agreement: str | None = None,
    information: str | None = None,
    title: str | None = None,
    pass_data: PassMenuData | None = None,
)

Bases: BaseKorailResponse

정기권 종류별 안내와 예매 조건을 담습니다.

CrewRequestOption

CrewRequestOption(
    message_code: str | None = None,
    content: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

승무원 호출 시 선택할 요청 사유를 담습니다.

CrewRequestListResponse

CrewRequestListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[CrewRequestOption, ...] = (),
)

Bases: BaseKorailResponse

승무원 호출 사유 목록을 담습니다.

PassScheduleResponse

PassScheduleResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    main_info: PassScheduleMainInfo | None = None,
    schedules: tuple[PassScheduleInfo, ...] = (),
)

Bases: BaseKorailResponse

정기권으로 이용 가능한 열차 목록을 담습니다.

DiscountCardSection

DiscountCardSection(
    departure_station_name: str | None = None,
    arrival_station_name: str | None = None,
    journey_sequence: str | None = None,
    journey_type_code: str | None = None,
    train_group_code: str | None = None,
    detour_division_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

N카드를 적용할 수 있는 구간 한 개를 담습니다.

일부 필드는 추정한 응답 키로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

detour_division_name

detour_division_name: str | None = None

경유 구분 이름(stlbDturDvNm)입니다. 앱은 N카드 구간으로 좌석배정 열차를 조회할 때 이 값을 SeatAssignmentScheduleRequest.standing_detour_division_name과 같은 입력 필드로 보냅니다.

DiscountCardOnTicket

DiscountCardOnTicket(
    card_no: str | None = None,
    term_extension_possible_flag: str | None = None,
    sections: tuple[DiscountCardSection, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

승차권 상세에 포함된 N카드와 적용 구간을 담습니다.

card_no

card_no: str | None = None

N카드 번호(h_dcnt_crd_no)입니다.

term_extension_possible_flag

term_extension_possible_flag: str | None = None

기간 연장 가능 여부 플래그(h_dcnt_crd_trm_extn_psb_flg)입니다.

KorailPointSummaryResponse

KorailPointSummaryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    korail_point: str | None = None,
    discount_coupon_count: str | None = None,
    delay_discount_count: str | None = None,
    disability_flag: str | None = None,
    welfare_discount_class_name: str | None = None,
    welfare_discount_class_code: str | None = None,
    customer_lead_flag_name: str | None = None,
    phone_verified_flag: str | None = None,
    email_verified_flag: str | None = None,
    contact_channel_content: str | None = None,
    naver_linked_flag: str | None = None,
    kakao_linked_flag: str | None = None,
    google_linked_flag: str | None = None,
    apple_linked_flag: str | None = None,
    customer_lead_flag: str | None = None,
    disability_type_code: str | None = None,
    disability_type_name: str | None = None,
)

Bases: BaseKorailResponse

계정의 포인트·쿠폰·복지 자격 요약을 담습니다.

일부 필드는 추정한 응답 키로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다. 소셜 연동 플래그 네 개(naver_linked_flag, kakao_linked_flag, google_linked_flag, apple_linked_flag)가 각각 어느 서비스에 대응하는지도 확인하지 못했으므로, 필드 이름의 서비스 대응을 확정된 것으로 보지 마세요.

discount_coupon_count

discount_coupon_count: str | None = None

서버가 알려 준 할인쿠폰 개수(h_disc_coup_cnt)입니다. get_discount_coupons 결과의 개수와 항상 같다는 보장은 없습니다.

naver_linked_flag

naver_linked_flag: str | None = None

네이버 연동 여부로 추정하는 플래그(h_logn_tp_cd1)입니다.

kakao_linked_flag

kakao_linked_flag: str | None = None

카카오 연동 여부로 추정하는 플래그(h_logn_tp_cd2)입니다.

google_linked_flag

google_linked_flag: str | None = None

구글 연동 여부로 추정하는 플래그(h_logn_tp_cd4)입니다.

apple_linked_flag

apple_linked_flag: str | None = None

애플 연동 여부로 추정하는 플래그(h_logn_tp_cd5)입니다.

disability_type_code

disability_type_code: str | None = None

장애 유형 코드(h_hdcp_tp_cd)입니다. 장애 유형은 disability_flag가 아니라 이 필드와 disability_type_name에 있습니다.

disability_type_name

disability_type_name: str | None = None

장애 유형 이름(h_hdcp_tp_cd_nm)입니다.

MileageHistoryEntry

MileageHistoryEntry(
    departure_date: str | None = None,
    point_division_name: str | None = None,
    accrual_division_name: str | None = None,
    receipt_division_name: str | None = None,
    point_amount: str | None = None,
    saved_point_value: str | None = None,
    settlement_amount: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

마일리지 적립 또는 사용 내역 한 행을 담습니다.

MileageHistoryResponse

MileageHistoryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    page_count: str | None = None,
    query_count: str | None = None,
    total_available_rail_point: str | None = None,
    total_available_rail_point_1: str | None = None,
    total_available_affiliate_point: str | None = None,
    total_accumulated_rail_point_1: str | None = None,
    total_used_rail_point_1: str | None = None,
    expiring_point_value: str | None = None,
    ktx_mileage_info: str | None = None,
    entries: tuple[MileageHistoryEntry, ...] = (),
)

Bases: BaseKorailResponse

마일리지 내역 한 페이지와 적립·사용 합계를 담습니다.

응답에 따로 있는 합계 필드는 서로 합치지 않고 각각 담습니다.

page_count

page_count: str | None = None

전체 페이지 수(pgCnt)입니다.

DiscountCardUsage

DiscountCardUsage(
    passenger_name: str | None = None,
    departure_station_name: str | None = None,
    arrival_station_name: str | None = None,
    run_date: str | None = None,
    additional_user_flag: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    sale_date: str | None = None,
    sale_sequence: str | None = None,
    sale_window_no: str | None = None,
)

N카드를 사용한 여행 내역 한 행을 담습니다.

발매 정보(sale_date, sale_sequence, sale_window_no)에는 반환 비밀번호가 없으므로 반환 식별자로 바로 쓸 수 없습니다.

additional_user_flag

additional_user_flag: str | None = None

추가 사용자 여부 플래그(apdUsrFlg)입니다. 값의 의미는 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

sale_date

sale_date: str | None = None

이 사용 건의 발매 일자(saleDt)입니다.

sale_sequence

sale_sequence: str | None = None

발매 일련번호(saleSqno)입니다.

sale_window_no

sale_window_no: str | None = None

발매 창구번호(saleWctNo)입니다.

DiscountCardUsageListResponse

DiscountCardUsageListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    items: tuple[DiscountCardUsage, ...] = (),
)

Bases: BaseKorailResponse

N카드 한 장의 사용 내역 목록을 담습니다.

응답에는 사용 내역 목록(tkUseList)만 있으므로 요약 필드는 없습니다.

DiscountCardScheduleTrain

DiscountCardScheduleTrain(
    train_no: str | None = None,
    train_group_code: str | None = None,
    run_date: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    departure_station_order: str | None = None,
    arrival_station_order: str | None = None,
    departure_run_order: str | None = None,
    arrival_run_order: str | None = None,
    transfer_train_order_no: str | None = None,
    price_class_code: str | None = None,
    settlement_car_type_code: str | None = None,
    settlement_train_class_code: str | None = None,
    commuter_price: str | None = None,
    direct_transfer_division_code: str | None = None,
    detour_code: str | None = None,
    detour_name: str | None = None,
    route_code: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

N카드로 이용 가능한 열차 한 편을 담습니다.

DiscountCardScheduleResponse

DiscountCardScheduleResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    following_page_exists: str | None = None,
    trains: tuple[DiscountCardScheduleTrain, ...] = (),
)

Bases: BaseKorailResponse

N카드로 이용 가능한 열차 목록을 담습니다.

following_page_exists

following_page_exists: str | None = None

다음 페이지 여부입니다. 라이브러리가 값을 채우지 않으므로 항상 None입니다.

MultiChildDiscountTarget

MultiChildDiscountTarget(
    birth_date: str | None = None,
    customer_family_name: str | None = None,
    discount_kind_code: str | None = None,
    family_sequence: str | None = None,
    passenger_type_code: str | None = None,
    passenger_type_name: str | None = None,
    room_class_code: str | None = None,
    requested_discount_kind_code: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

다자녀 할인 대상으로 등록된 가족 한 명을 담습니다.

MultiChildDiscountTargetResponse

MultiChildDiscountTargetResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    targets: tuple[MultiChildDiscountTarget, ...] = (),
)

Bases: BaseKorailResponse

다자녀 할인 대상 가족 목록을 담습니다.

CustomerTripInfo

CustomerTripInfo(
    additional_seat_attribute_code: str | None = None,
    adult_disabled_person_count: str | None = None,
    adult_count: str | None = None,
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    baby_accompanying_person_count: str | None = None,
    changed_at: str | None = None,
    changed_by: str | None = None,
    child_count: str | None = None,
    child_disabled_person_count: str | None = None,
    customer_management_no: str | None = None,
    day_code: str | None = None,
    direction_seat_attribute_group_code: str | None = None,
    direct_transfer_division_code: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    early_train_departure_time: str | None = None,
    elderly_person_count: str | None = None,
    included_flag: str | None = None,
    job_start_hour: str | None = None,
    location_seat_attribute_group_code: str | None = None,
    media_division_code: str | None = None,
    room_class_code: str | None = None,
    passenger_total: str | None = None,
    registered_at: str | None = None,
    registration_sequence: str | None = None,
    registered_by: str | None = None,
    trip_day_no: str | None = None,
    train_classification_code: str | None = None,
    train_connection_flag: str | None = None,
    train_group_code: str | None = None,
    usage_day_no: str | None = None,
    goods_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

계정에 저장된 여행 편의설정을 담습니다.

goods_no

goods_no: str | None = None

상품 번호입니다. 추정한 응답 키(gdNo)로 읽으며, 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

CustomerTripInfoResponse

CustomerTripInfoResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    trips: tuple[CustomerTripInfo, ...] = (),
)

Bases: BaseKorailResponse

여행 편의설정 조회 결과를 담습니다.

MaasServiceDetailInfo

MaasServiceDetailInfo(
    additional_service_request_no: str | None = None,
    booking_time: str | None = None,
    branch_name: str | None = None,
    partner_name: str | None = None,
    delivery_datetime: str | None = None,
    drop_times: str | None = None,
    dropoff_name: str | None = None,
    image: str | None = None,
    name: str | None = None,
    option_name: str | None = None,
    pickup_name: str | None = None,
    pickup_place: str | None = None,
    pickup_times: str | None = None,
    reservation_date: str | None = None,
    return_datetime: str | None = None,
    start_datetime: str | None = None,
    cancel_deadline_date: str | None = None,
    cancel_return_amount: str | None = None,
    cancel_return_fee: str | None = None,
    goods_sequence: str | None = None,
    intermediate_value: str | None = None,
    received_amount: str | None = None,
    reservation_status_name: str | None = None,
    reservation_passenger_name: str | None = None,
    settlement_deadline_date: str | None = None,
    settlement_deadline_datetime: str | None = None,
    settlement_status_code: str | None = None,
    settlement_status_name: str | None = None,
    total_settlement_amount: str | None = None,
    usage_period_content: str | None = None,
    entity_one: tuple[Mapping[str, object], ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

부가서비스의 상품·이용·결제 상세를 담습니다.

MaasServiceDetail

MaasServiceDetail(
    additional_service_division_code: str | None = None,
    additional_service_goods_code: str | None = None,
    additional_service_id: str | None = None,
    marketing_entity_id: str | None = None,
    marketing_entity_name: str | None = None,
    additional_service_name: str | None = None,
    progress_status_code: str | None = None,
    request_no: str | None = None,
    passenger_reference_content: str | None = None,
    partner_reservation_no: str | None = None,
    delivery_close_time: str | None = None,
    delivery_start_time: str | None = None,
    lead_message_1: str | None = None,
    lead_message_2: str | None = None,
    pnr_no: str | None = None,
    request_date: str | None = None,
    request_quantity: str | None = None,
    reservation_station_code_name: str | None = None,
    reservation_specification_url: str | None = None,
    usage_close_date: str | None = None,
    usage_start_date: str | None = None,
    detail_info: MaasServiceDetailInfo | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

신청한 부가서비스 한 건과 그 상세를 담습니다.

MaasServiceDetailListResponse

MaasServiceDetailListResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    details: tuple[MaasServiceDetail, ...] = (),
)

Bases: BaseKorailResponse

신청한 부가서비스 목록을 담습니다.

TripChangeDateResponse

TripChangeDateResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    last_run_date: str | None = None,
    trip_change_dates: tuple[str, ...] = (),
)

Bases: BaseKorailResponse

승차권을 변경할 수 있는 날짜 목록을 담습니다.

trip_change_dates는 응답의 tripChgDates 목록입니다. 목록이 없거나 null 원소가 있으면 KorailProtocolError가 발생합니다.

CommuterPassengerOption

CommuterPassengerOption(
    commuter_usage_age_code: str | None = None,
    common_code_name: str | None = None,
    customer_age_from: int | None = 0,
    customer_age_to: int | None = 0,
    passenger_count_from: int | None = 0,
    passenger_count_to: int | None = 0,
    raw: Mapping[str, object] = dict[str, object](),
)

정기권 승객 종류의 인원·연령 범위를 담습니다.

customer_age_from

customer_age_from: int | None = 0

최소 연령(custAgeFrom)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

customer_age_to

customer_age_to: int | None = 0

최대 연령(custAgeTo)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

passenger_count_from

passenger_count_from: int | None = 0

최소 인원(psgPrnbFrom)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

passenger_count_to

passenger_count_to: int | None = 0

최대 인원(psgPrnbTo)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

CommuterInfoResponse

CommuterInfoResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    additional_service_goods_flag: str | None = None,
    companion_flag: str | None = None,
    commuter_kind_code: str | None = None,
    commuter_usage_age_code: str | None = None,
    menu_id: str | None = None,
    popup_message: str | None = None,
    promotion_message: str | None = None,
    promotion_url: str | None = None,
    seat_attribute_code: str | None = None,
    available_passenger_count_from: int | None = 0,
    available_passenger_count_to: int | None = 0,
    passenger_options: tuple[
        CommuterPassengerOption, ...
    ] = (),
)

Bases: BaseKorailResponse

정기권 예매 단계별 조건·승객·원표 정보를 담습니다.

commuter_usage_age_code

commuter_usage_age_code: str | None = None

정기권 이용 연령 코드(cmtrUtlAgeCd)입니다. 요청에 넣은 승객별 연령 코드와 다른 값이 올 수 있으므로, 요청 값이 그대로 돌아온다고 보지 마세요.

available_passenger_count_from

available_passenger_count_from: int | None = 0

선택할 수 있는 최소 인원(avlPrnbFrom)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

available_passenger_count_to

available_passenger_count_to: int | None = 0

선택할 수 있는 최대 인원(avlPrnbTo)입니다. 키가 없거나 null이면 0, 정수로 읽을 수 없는 값이면 None입니다.

PriceFare

PriceFare(
    journey_sequence: str | None = None,
    room_class_name: str | None = None,
    received_fare: str | None = None,
    received_price: str | None = None,
    total_amount: str | None = None,
    train_no: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

열차 한 구간의 운임 정보를 담습니다.

received_fare

received_fare: str | None = None

요금(rcvdFare)입니다. 특실 추가 요금 등이 들어갑니다.

received_price

received_price: str | None = None

운임(rcvdPrc)입니다. 쉼표와 "원"이 붙은 표시 문자열입니다(예: "21,600원").

total_amount

total_amount: str | None = None

합계 금액(sumAmt)입니다.

PriceFareQuoteResponse

PriceFareQuoteResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    fares: tuple[PriceFare, ...] = (),
)

Bases: BaseKorailResponse

예매 전 운임 조회 결과를 담습니다.

DeliveryRecipientResponse

DeliveryRecipientResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    *,
    acceptance_customer_management_no: str,
    acceptance_customer_name: str,
    acceptance_customer_phone: str,
    member_card_no: str,
)

Bases: BaseKorailResponse

N카드 2인 승차권의 전달 수령자 후보를 담습니다.

네 필드는 응답에 반드시 있어야 하며, 없거나 null이면 KorailProtocolError가 발생합니다.

TicketDuplicationCheckResponse

TicketDuplicationCheckResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    reservation_count: str | None = None,
)

Bases: BaseKorailResponse

PNR 기준 중복 예약 확인 결과를 담습니다.

reservation_count

reservation_count: str | None = None

예약 건수(rsvCnt)입니다. "0007"처럼 서버가 보낸 문자열을 그대로 담습니다.

PbpAcceptanceSeat

PbpAcceptanceSeat(
    *,
    passenger_type_division_name: str,
    room_class_code: str,
    room_class_name: str,
    car_no: int,
    seat_no: str,
    raw: Mapping[str, object] = dict[str, object](),
)

대리수령 내역의 좌석 한 자리를 담습니다.

PbpAcceptanceJourney

PbpAcceptanceJourney(
    *,
    acceptance_customer_name: str,
    acceptance_customer_phone: str,
    journey_type_code: str,
    member_division_name: str,
    acceptance_kind_name: str,
    pbp_reservation_no: str,
    registered_date: str,
    withdrawal_possible_flag: str,
    seats: tuple[PbpAcceptanceSeat, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
    member_card_no: str,
)

대리수령 내역의 여정과 좌석 목록을 담습니다.

PbpAcceptanceTicket

PbpAcceptanceTicket(
    *,
    pnr_no: str,
    sale_date: str,
    sale_sequence: str,
    sale_window_no: str,
    return_password: str,
    journeys: tuple[PbpAcceptanceJourney, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

대리수령 내역의 승차권과 여정 목록을 담습니다.

PbpAcceptanceSpecificationResponse

PbpAcceptanceSpecificationResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    tickets: tuple[PbpAcceptanceTicket, ...] = (),
)

Bases: BaseKorailResponse

승차권별 대리수령 내역 목록을 담습니다.

승차권·여정·좌석의 모든 필드는 응답에 반드시 있어야 하며, 없거나 null이면 KorailProtocolError가 발생합니다.

SelfSeatChangeStation

SelfSeatChangeStation(
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    departure_construction_order: str | None = None,
    departure_run_order: str | None = None,
    general_remaining_seats: str | None = None,
    special_remaining_seats: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

자율 좌석변경이 가능한 승차역과 잔여석을 담습니다.

응답의 도착역 코드·이름과 도착역 편성·운행 순서는 읽지 않습니다. 원본은 raw에 남습니다.

SelfSeatChangeReason

SelfSeatChangeReason(
    query_code: str | None = None,
    query_order: str | None = None,
    reason_text: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

자율 좌석변경 시 선택할 변경 사유를 담습니다.

필드는 추정한 응답 키(qryCode, qryOrdr, frcSaleRsnCont)로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

SelfSeatChangeInfoResponse

SelfSeatChangeInfoResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    train_no: str | None = None,
    train_class_code: str | None = None,
    train_class_name: str | None = None,
    train_group_code: str | None = None,
    train_group_name: str | None = None,
    run_date: str | None = None,
    general_reservation_possible_code: str | None = None,
    special_reservation_possible_code: str | None = None,
    change_before_departure_construction_order: str
    | None = None,
    change_before_arrival_construction_order: str
    | None = None,
    existing_departure_run_order: str | None = None,
    existing_arrival_run_order: str | None = None,
    stations: tuple[SelfSeatChangeStation, ...] = (),
    reasons: tuple[SelfSeatChangeReason, ...] = (),
)

Bases: BaseKorailResponse

자율 좌석변경의 대상 역·사유·열차 정보를 담습니다.

OriginalTicketSeat

OriginalTicketSeat(
    passenger_sequence: str | None = None,
    assign_sequence: str | None = None,
    passenger_type_code: str | None = None,
    room_class_code: str | None = None,
    car_no: str | None = None,
    seat_no: str | None = None,
    seat_count: str | None = None,
    received_fare: str | None = None,
    received_price: str | None = None,
    requested_seat_attribute_code: str | None = None,
    direction_seat_attribute_code: str | None = None,
    location_seat_attribute_code: str | None = None,
    smoking_seat_attribute_code: str | None = None,
    additional_seat_attribute_code: str | None = None,
    etc_seat_attribute_code: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

변경 기준인 원표의 좌석 정보를 담습니다.

OriginalTicketJourney

OriginalTicketJourney(
    journey_sequence: str | None = None,
    journey_order: str | None = None,
    journey_type_code: str | None = None,
    train_no: str | None = None,
    train_group_code: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    departure_station_code: str | None = None,
    departure_station_name: str | None = None,
    departure_construction_order: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    arrival_station_code: str | None = None,
    arrival_station_name: str | None = None,
    arrival_construction_order: str | None = None,
    goods_no: str | None = None,
    total_seat_count: str | None = None,
    total_standing_count: str | None = None,
    general_change_allowed_flag: str | None = None,
    single_ticket_flag: str | None = None,
    seats: tuple[OriginalTicketSeat, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

변경 기준인 원표의 구간과 좌석 목록을 담습니다.

OriginalTicket

OriginalTicket(
    pnr_no: str | None = None,
    ticket_kind_code: str | None = None,
    original_sale_datetime: str | None = None,
    original_window_no: str | None = None,
    original_sale_sequence: str | None = None,
    original_return_password: str | None = None,
    member_card_no: str | None = None,
    adult_count: str | None = None,
    child_count: str | None = None,
    group_discount_count: str | None = None,
    passenger_type_division_code: str | None = None,
    received_amount: str | None = None,
    received_fare: str | None = None,
    received_price: str | None = None,
    change_sale_transaction_no: str | None = None,
    sms_send_flag: str | None = None,
    forced_sale_reason_text: str | None = None,
    journeys: tuple[OriginalTicketJourney, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

변경 기준인 원표의 식별자·상태·여정을 담습니다.

필드는 추정한 응답 키로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다. original_* 필드는 요청한 승차권의 반환 식별자가 그대로 돌아온 값이며 repr에서도 가리지 않습니다.

OriginalTicketInquiryResponse

OriginalTicketInquiryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    tickets: tuple[OriginalTicket, ...] = (),
)

Bases: BaseKorailResponse

변경 기준인 원표 목록을 담습니다.

RecentDeliveryRecipient

RecentDeliveryRecipient(
    *,
    acceptance_customer_management_flag: str,
    acceptance_customer_management_no: str,
    acceptance_customer_name: str,
    acceptance_customer_phone: str,
    acceptance_customer_phone_2: str,
    member_card_no: str,
    raw: Mapping[str, object] = dict[str, object](),
)

최근 승차권을 전달한 수령자 한 명을 담습니다.

RecentDeliveryHistoryResponse

RecentDeliveryHistoryResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    changed_acceptance_reservation_no: str | None = None,
    recipients: tuple[RecentDeliveryRecipient, ...] = (),
)

Bases: BaseKorailResponse

최근 승차권 전달 수령자 목록을 담습니다.

ReservationSeatDetail

ReservationSeatDetail(
    car_no: str | None = None,
    seat_no: str | None = None,
    room_class_code: str | None = None,
    room_class_name: str | None = None,
    passenger_type_code: str | None = None,
    received_amount: str | None = None,
    seat_price: str | None = None,
    seat_fare: str | None = None,
    total_discount_amount: str | None = None,
    seat_group_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    passenger_type_name: str | None = None,
)

예약 상세의 좌석·승객·운임 정보를 담습니다.

received_amount

received_amount: str | None = None

좌석별 받을 금액(h_rcvd_amt)입니다. 예약 메서드가 돌려주는 ReservationHoldResponse의 received_amount는 홀드 응답에 좌석 행이 있으면 그 행들의 이 값을 합한 금액입니다.

passenger_type_name

passenger_type_name: str | None = None

승객 유형 이름(h_psg_tp_dv_nm)입니다. 응답에 따라 없을 수 있으며, 없으면 None입니다.

ReservationDetailJourney

ReservationDetailJourney(
    journey_sequence: str | None = None,
    journey_type_code: str | None = None,
    reservation_change_no: str | None = None,
    run_date: str | None = "",
    departure_date: str | None = None,
    departure_time: str | None = None,
    arrival_time: str | None = None,
    arrival_date: str | None = None,
    departure_station_name: str | None = None,
    arrival_station_name: str | None = None,
    train_no: str | None = None,
    train_class_name: str | None = None,
    seats: tuple[ReservationSeatDetail, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

홀드(결제 전 예약)의 여정 한 개와 좌석 상세를 담습니다.

run_date

run_date: str | None = ''

7.0.8 여정의 운행일(h_run_dt). 누락은 빈 문자열, 명시적 null·잘못된 타입은 None입니다.

TicketReservationDetailResponse

TicketReservationDetailResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    pnr_no: str | None = None,
    window_no: str | None = None,
    journey_count: str | None = None,
    total_fare: str | None = None,
    total_price: str | None = None,
    total_discount_amount: str | None = None,
    total_received_amount: str | None = None,
    payment_flag: str | None = None,
    journeys: tuple[ReservationDetailJourney, ...] = (),
    customer_management_no: str | None = None,
    mandatory_message: str | None = None,
    additional_service_flag: str | None = None,
    disability_certificate_number: str | None = None,
    pre_settlement_target_flag: str | None = None,
    family_info_confirm_flag: str | None = None,
    special_room_fare: str | None = None,
    issue_possible_date: str | None = None,
    issue_possible_time: str | None = None,
    passengers: tuple[ReservationPassengerInfo, ...] = (),
)

Bases: BaseKorailResponse

PNR로 다시 조회한 예약의 여정·좌석·정산액을 담습니다.

RefundCommissionResponse

RefundCommissionResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    refund_amount: str | None = None,
    refund_fee: str | None = None,
    proceed_possible_flag: str | None = None,
    ticket_return_times_division_code: str | None = None,
    usable_mileage: str | None = None,
    secondary_message_code: str | None = None,
    secondary_message_text: str | None = None,
)

Bases: BaseKorailResponse

환불 전 예상 환불액과 수수료를 담습니다.

get_refund_commission이 돌려줍니다. 환불하려면 이 응답을 refund의 commission에 넘기세요. refund는 commission이 이 타입이 아니면(None 포함) 요청을 보내기 전에 KorailProtocolError를 발생시킵니다.

RefundTicketSeat

RefundTicketSeat(
    car_no: str | None = None,
    seat_no: str | None = None,
    buyer_name: str | None = None,
    checkin_status_code: str | None = None,
    discount_kind_code: str | None = None,
    discount_kind_name: str | None = None,
    passenger_type_code: str | None = None,
    passenger_type_name: str | None = None,
    seat_group_name: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

환불 대상 승차권의 좌석 한 자리를 담습니다.

RefundTicketJourney

RefundTicketJourney(
    journey_sequence: str | None = None,
    journey_type_code: str | None = None,
    departure_date: str | None = None,
    departure_time: str | None = None,
    departure_station_name: str | None = None,
    arrival_date: str | None = None,
    arrival_time: str | None = None,
    arrival_station_name: str | None = None,
    train_no: str | None = None,
    train_class_name: str | None = None,
    room_class_name: str | None = None,
    platform_no: str | None = None,
    seats: tuple[RefundTicketSeat, ...] = (),
    raw: Mapping[str, object] = dict[str, object](),
)

환불 대상 승차권의 여정 한 개를 담습니다.

RefundTicketDetailResponse

RefundTicketDetailResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    pnr_no: str | None = None,
    sale_date: str | None = None,
    sale_time: str | None = None,
    window_name: str | None = None,
    original_sale_date: str | None = None,
    original_window_no: str | None = None,
    original_sale_sequence: str | None = None,
    original_return_password: str | None = None,
    ticket_kind_code: str | None = None,
    ticket_kind_name: str | None = None,
    refund_possible_flag: str | None = None,
    return_flag: str | None = None,
    total_fare_amount: str | None = None,
    total_discount_amount: str | None = None,
    total_received_amount: str | None = None,
    train_running_flag: str | None = None,
    passenger_name: str | None = None,
    passenger_birth_date: str | None = None,
    companion_name: str | None = None,
    companion_birth_date: str | None = None,
    pbp_acceptance_target_flag: str | None = None,
    delay_flag: str | None = None,
    delay_ticket_flag: str | None = None,
    additional_service_flag: str | None = None,
    additional_service_cancel: str | None = None,
    qr_code: str | None = None,
    passenger_names: tuple[Mapping[str, object], ...] = (),
    seat_tickets: tuple[Mapping[str, object], ...] = (),
    limousine: Mapping[str, object] | None = None,
    delay_details: tuple[Mapping[str, object], ...] = (),
    journeys: tuple[RefundTicketJourney, ...] = (),
    discount_card: DiscountCardOnTicket | None = None,
)

Bases: BaseKorailResponse

환불 대상 승차권의 식별자·여정·운임 상세를 담습니다.

일부 필드는 추정한 응답 키로 읽습니다. 실제 키 이름은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

refund_possible_flag

refund_possible_flag: str | None = None

환불 가능 여부 플래그(retPsbFlg)입니다. "Y"여도 환불할 수 있다는 보장은 없으므로 get_refund_commission의 결과로 확인하세요.

passenger_name

passenger_name: str | None = None

탑승자 이름(h_abrd_ps_nm)입니다. 동승자 이름(companion_name)이나 passenger_names 목록과는 다른 필드입니다.

passenger_birth_date

passenger_birth_date: str | None = None

탑승자 생년월일(s_brth)입니다.

companion_name

companion_name: str | None = None

동승자 이름(h_compa_nm)입니다.

companion_birth_date

companion_birth_date: str | None = None

동승자 생년월일(h_compa_brth)입니다.

pbp_acceptance_target_flag

pbp_acceptance_target_flag: str | None = None

대리수령 대상 여부 플래그입니다. 응답에 pbpAcepTgtFlg 키가 있을 때만 채우며 보통은 None입니다. 앱처럼 환불하려면 get_ticket_list 승차권의 pbp_acceptance_target_flag를 refund에 넘기세요.

qr_code

qr_code: str | None = None

이 승차권의 QR 코드(h_qrcode)입니다.

passenger_names

passenger_names: tuple[Mapping[str, object], ...] = field(
    default=(), compare=False
)

승객 이름 목록(psgNmList)입니다. 추정한 응답 키로 읽으며, 각 원소는 해석하지 않은 원본 매핑입니다.

seat_tickets

seat_tickets: tuple[Mapping[str, object], ...] = field(
    default=(), compare=False
)

좌석 배정 목록(seatTicketList)입니다. 추정한 응답 키로 읽으며, 각 원소는 해석하지 않은 원본 매핑입니다.

limousine

limousine: Mapping[str, object] | None = field(
    default=None, compare=False
)

연계된 리무진 예약(limousine)입니다. 추정한 응답 키로 읽은 원본 매핑이며, 없으면 None입니다.

delay_details

delay_details: tuple[Mapping[str, object], ...] = field(
    default=(), compare=False
)

지연 정보 목록(dtlList)입니다. 추정한 응답 키로 읽으며, 각 원소는 해석하지 않은 원본 매핑입니다.

discount_card

discount_card: DiscountCardOnTicket | None = None

N카드 정보(dcnt_crd_info)입니다. 응답에 없으면 None이며, N카드 승차권이 아니면 보통 None입니다.

DelayCertificateRow

DelayCertificateRow(
    run_day: str,
    train_no: str,
    departure_station_code: str,
    arrival_station_code: str,
    arrival_station_name: str,
    delay_arrival_flag: str,
    delay_minutes: str,
    run_date: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
)

지연확인증 한 행을 담습니다.

run_date를 뺀 일곱 필드는 응답에 반드시 있어야 하며, 없거나 null이면 KorailProtocolError가 발생합니다. 앱은 delay_arrival_flag가 특정 값인 행만 보여 주지만, 라이브러리는 거르지 않고 모든 행을 돌려줍니다. 앱이 고르는 값은 앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다.

run_date

run_date: str | None = None

운행일(runDt)입니다. 응답에 없으면 None이며, 운행일은 run_day에도 있습니다(예: 요일이 붙은 날짜).

DelayCertificateResponse

DelayCertificateResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    delays: tuple[DelayCertificateRow, ...] = (),
)

Bases: BaseKorailResponse

지연확인증의 행을 담습니다.

응답에 목록(dlayList)이 없거나 null이면 delays는 빈 튜플입니다.

DelayReturnReceiptResponse

DelayReturnReceiptResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    return_date: str | None = None,
    payment_method_name: str | None = None,
    return_amount: str | None = None,
)

Bases: BaseKorailResponse

지연료 반환 영수증을 담습니다.

세 필드 모두 응답에 없으면 None입니다.

SelfCheckInSeat

SelfCheckInSeat(
    pnr_no: str,
    journey_sequence: str,
    assignment_sequence: str,
    run_date: str,
    train_no: str,
    departure_construction_order: str,
    departure_station_code: str,
    arrival_construction_order: str,
    arrival_station_code: str,
    ticket_kind_code: str,
    train_group_code: str,
    car_no: str,
    seat_no: str,
    departure_datetime: str,
    arrival_datetime: str,
    cps_no: str,
    raw: Mapping[str, object] = dict[str, object](),
)

셀프 체크인할 수 있는 좌석 한 행을 담습니다.

열여섯 필드 모두 응답에 반드시 있어야 하며, 없거나 null이면 KorailProtocolError가 발생합니다. 등록할 때는 이 행을 register_self_checkin의 seat로 넘깁니다.

SelfCheckInSeatCheckResponse

SelfCheckInSeatCheckResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    seats: tuple[SelfCheckInSeat, ...] = (),
)

Bases: BaseKorailResponse

셀프 체크인 좌석 확인 결과를 담습니다.

응답에 consList 키가 없으면 KorailProtocolError가 발생하고, 값이 null이면 seats는 빈 튜플입니다.

SelfCheckInInfoResponse

SelfCheckInInfoResponse(
    h_msg_cd: str | None = None,
    h_msg_txt: str | None = None,
    str_result: str | None = None,
    raw: Mapping[str, object] = dict[str, object](),
    pnr_no: str | None = None,
    train_no: str | None = None,
    departure_station_name: str | None = None,
    departure_time: str | None = None,
    arrival_station_name: str | None = None,
    arrival_time: str | None = None,
    car_no: str | None = None,
    seat_no: str | None = None,
    train_class_name: str | None = None,
    checkin_division_code: str | None = None,
)

Bases: BaseKorailResponse

셀프 체크인한 좌석 정보를 담습니다.

열 필드의 키가 응답에 모두 있어야 하며, 하나라도 없으면 KorailProtocolError가 발생합니다. 값이 null이면 해당 필드는 None입니다.