Google 대중교통 티켓 판매 확장 프로그램

이 페이지에는 GTFS 티켓 판매 사양의 세부 항목이 정의되어 있습니다(사양은 본 문서 작성 시 제안 단계에 있음). 또한 Google의 추가 제한사항도 포함되어 있습니다.

요구사항

stop_times.txtdeparture_time 필드는 필수 항목입니다.

추가 필드 유형

이 섹션에서는 추가 필드 유형과 Google의 확장 프로그램 유형을 설명합니다.

  • URI: 스키마가 포함된 정규화된 URI(Uniform Resource Identifier)입니다. URI의 특수문자는 올바른 이스케이프를 사용해야 합니다. 정규화된 URI 값을 만드는 방법에 대한 설명은 RFC 3986 URI(Uniform Resource Identifier): 일반 구문을 참고하세요.

파일 확장 또는 추가

파일 이름 상태 정의
agency.txt 확장 agency.ticketing_deep_link_id 추가
routes.txt 확장 routes.ticketing_deep_link_id 추가
trips.txt 확장 trips.trip_ticketing_id, trips.ticketing_type 추가
stop_times.txt 확장 stop_times.ticketing_type 추가
ticketing_identifiers.txt 추가
ticketing_deep_links.txt 추가

테이블 정의

agency.txt(파일 확장됨)

필드 이름 상태 세부정보
ticketing_deep_link_id 선택사항 (ticketing_deep_links.txt의 ID) 특정 기관에 사용할 딥 링크를 정의합니다. routes.txt에서 덮어쓸 수 있습니다.

routes.txt(파일 확장됨)

필드 이름 상태 세부정보
ticketing_deep_link_id 선택사항 (ticketing_deep_links.txt의 ID) 특정 경로에 사용할 딥 링크를 정의합니다. 있는 경우, agency.txt에 있는 항목을 덮어씁니다.

trips.txt(파일 확장됨)

필드 이름 상태 세부정보
ticketing_trip_id 선택사항

(ID) 딥 링크에서 전달할 식별자입니다. 고유한 식별자가 아니어도 됩니다.

필요한 경우 trip_id를 사용합니다.

ticketing_type 선택사항

(enum) 특정 여정에 대해 딥 링크를 통한 티켓 판매가 가능한지 정의합니다.

  • 0 또는 empty: 다음과 같이 가정함
    • routeing_deep_link_id가 경로 또는 기관에 정의되어 있는 경우 사용 가능
    • 그 외에는 사용 불가
  • 1: 사용 불가

stop_times.txt(파일 확장됨)

필드 이름 상태 세부정보
ticketing_type 선택사항

(enum) 특정 여정에 대해 딥 링크를 통한 티켓 판매가 가능한지 정의합니다. 정의된 경우 trip.ticketing_type에 설정된 값을 재정의합니다.

  • 비어 있음: trip.ticketing_type에 따라 정의됨
  • 0: 다음과 같이 가정함
    • ticketing_deep_link_id가 경로 또는 기관에 정의되어 있는 경우 사용 가능
    • 그 외에는 사용 불가

ticketing_identifiers.txt(파일 추가됨)

티켓 판매에서 가장 일반적인 사례는 모든 정류장에 결제 처리를 위한 식별자가 있는 것입니다. 여러 기관에서 특정 정류장에 동일한 식별자를 사용할 수 있습니다. 여러 기관이 같은 정류장에서 서비스를 제공하는 경우 각 기관에 대해 이 매핑을 반복하세요.

필드 이름 상태 세부정보
ticketing_stop_id 필수 (ID) 특정 기관에 대해 해당 정류장의 기본 티켓 판매 ID를 정의합니다.
stop_id 필수 (stops.txt의 ID) 기본 ticketing_stop_id가 정의된 정류장입니다.
agency_id 필수 (agency.txt의 ID) 기본 ticketing_stop_id가 정의된 정류장의 기관입니다.

ticketing_deep_links.txt(파일 추가됨)

필드 이름 상태 세부정보>
ticketing_deep_link_id 필수 (ID) 딥 링크의 ID를 정의합니다.
web_url 선택사항

(URL) 딥 링크의 방문 URL입니다.

translations.txt를 통해 번역을 제공하여 탑승자에게 언어별 URL을 보낼 수 있습니다.

android_intent_uri 선택사항

(URI) android.intent.action.VIEW 인텐트가 포함된 네이티브 Android 앱에 전달할 URI입니다.

비어 있으면 네이티브 Android 앱으로 연결되는 딥 링크가 없다는 의미입니다.

Android의 딥 링크에 관한 자세한 내용은 앱 콘텐츠 딥 링크 만들기를 참고하세요.

이 필드는 translations.txt를 통해 번역할 수 없습니다.

ios_universal_link_url 선택사항

(URL) iOS에서 호출할 범용 링크 URL입니다.

비어 있으면 iOS에 딥 링크가 표시되지 않습니다.

자세한 내용은 iOS의 범용 링크를 참고하세요.

이 필드는 translations.txt를 통해 번역할 수 없습니다.

API 호출의 필드 자리표시자

Google은 다음 매개변수를 사용하여 이전 URL을 호출합니다.

필드 이름 상태 세부정보
service_date 필수

(날짜, 반복 가능) 여정의 서비스 일자입니다.

이 필드의 형식은 JSON 배열입니다.

ticketing_trip_id 필수

(trips.txt의 ID, 반복 가능) 여정의 식별자입니다.

이 필드의 형식은 JSON 배열입니다.

from_ticketing_stop_time_id 필수

(반복 가능) 구간이 시작되는 stop_time의 식별자입니다.

특정 정차 시간의 값은 다음과 같습니다.

  • stop_time의 agency_id 및 stop_id에 대해 ticketing_identifiers.txt에 정의된 ticketing_stop_id입니다.
  • 그밖에는 stop_sequence가 사용됩니다.

이 필드의 형식은 JSON 배열입니다.

to_ticketing_stop_time_id 필수

(반복 가능) 구간이 끝나는 stop_time의 식별자입니다.

값 파생에 대한 설명은 from_ticketing_stop_time_id를 참고하세요.

이 필드의 형식은 JSON 배열입니다.

boarding_time 필수

(ISO 8601, 반복 가능) 구간이 시작되는 stop_time의 출발 시간(departure_time)입니다.

이 필드의 시간 값은 ISO 8601을 준수하며 다음 형식의 문자열로 표시됩니다.

YYYY-MM-DDThh:mm:ss±hh:mm

다음은 모두 동일한 시간을 나타내며 시간대만 다릅니다.

  • 영국 런던: 2019-07-29T18:26:00+01:00
  • 미국 뉴욕: 2019-07-29T13:26:00-04:00
  • 일본 도쿄: 2019-07-30T02:26:00+09:00

이 필드의 형식은 JSON 배열입니다.

구간이 다음과 같은 경우:

  • 서비스 날짜 20190716, 정차 시간 티켓 판매 ID 11에서 정차 시간 티켓 판매 ID 12까지 여정 티켓 판매 ID ti1, 오후 2시(UTC) 탑승
  • 서비스 날짜 20190716, 정차 시간 티켓 판매 ID 21에서 정차 시간 티켓 판매 ID 22까지 여정 티켓 판매 ID ti2, 오후 3시(UTC) 탑승

web_url은 http://myawesomebookingwebsite.com입니다.

매개변수 값은 다음과 같습니다.

필드 이름 세부정보
service_date ["20190716", "20190716"]
ticketing_trip_id ["ti1", "ti2"]
from_ticketing_stop_time_id ["11", "21"]
to_ticketing_stop_time_id ["12", "22"]
boarding_time ["2019-07-16T14:00:00+00:00", "2019-07-16T15:00:00+00:00"]

인코딩 후의 최종 URI는 다음과 같습니다.

http://myawesomebookingwebsite.com?service_date=%5B%2220190716%22,%22%2019071622%5D &ticketing_trip_id=%5B%22ti1%22,%22ti2%22%5D&from_ticketing_stop_time_id=%5B%2211%22,%2221%22%5D &to_ticketing_stop_time_id=%5B%2212%22,%2222%22%5D&boarding_time=%5B%222019-07-16T14:00:00%2B00:00 %22,%222019-07-16T15:00:00%2B00:00%22%5D

다른 ticketing_stop_id 값의 예

티켓 판매의 목적에 따라 ticketing_identifiers.txt 필드를 사용해 정류장의 ID를 서로 다르게 할 수 있습니다. 굵게 표시된 값은 파일 뒤에 설명되는 웹 호출에서 확인할 수 있는 값입니다.

stop.txt

stop_id,stop_name

si1,"Paris Gare-de-Lyon"

si2,"Lyon Part-Dieu"

routes.txt

route_id,route_long_name,ticketing_deep_link_id

ri1,"TGV inOui Paris-Lyon",tdl1

trips.txt

trip_id,service_id,route_id,trip_short_name, ticketing_trip_id

ti1,everyday,ri1,"TGV INOUI 6603",FR_SNCF_6603

ti2,everyday,ri1,"TGV INOUI 6681",FR_SNCF_6681

ti3,everyday,ri1,"TGV INOUI 6607",FR_SNCF_6607

stop_times.txt

trip_id,stop_sequence,stop_id,arrival_time, departure_time

ti1,1,si1,06:59:00,06:59:00

ti1,2,si2,08:56:00,08:56:00

ti2,1,si1,07:53:00,07:53:00

ti2,2,si2,10:00:00,10:00:00

ti3,1,si1,08:59:00,08:59:00

ti3,2,si2,10:56:00,10:56:00

ticketing_identifiers.txt

stop_id,agency_id,ticketing_stop_id

si1,agency1,4924

si2,agency1,4676

ticketing_deep_links.txt
ticketing_deep_link_id, web_url, android_intent_url, ios_universal_urltdl1, https://www.thetrainline.com/api/gtfs/web, https://www.thetrainline.com/api/gtfs/android, https://www.thetrainline.com/api/gtfs/ios

요청이 2019-07-19에 발생하고 GTFS 시간이 UTC+1 시간대인 경우 웹 호출은 다음과 같습니다.

http://www.thetrainline.com/api/gtfs/web?service_date=%5B%2220190719%22%5D&ticketing_trip_id= %5B%22FR_SNCF_6603%22%5D&from_ticketing_stop_time_id=%5B%224924%22%5D&to_ticketing_stop_time_id= %5B%224676%22%5D&boarding_time=%5B%222019-07-19T07:59:00%2B00:00%22%5D