National Tsing Hua University Buses API

The Buses API from National Tsing Hua University — 4 operation(s) for buses.

OpenAPI Specification

nthu-buses-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: NTHU Data Announcements Buses API
  description: 由國立清華大學校內各單位資料所組成的公共資料 API。
  version: 2.0.0
servers:
- url: https://api.nthusa.tw
  description: NTHU Data API production server
tags:
- name: Buses
paths:
  /buses/routes:
    get:
      tags:
      - Buses
      summary: Get Bus Route Metadata
      description: '取得校園公車資訊。

        - 校本部來自[總務處事務組](https://affairs.site.nthu.edu.tw/p/412-1165-20978.php?Lang=zh-tw)

        - 南大來自[總務處事務組](https://affairs.site.nthu.edu.tw/p/412-1165-20979.php?Lang=zh-tw)'
      operationId: getBusRouteData
      parameters:
      - name: bus_type
        in: query
        required: false
        schema:
          enum:
          - main
          - nanda
          type: string
          description: 車種選擇
          title: Bus Type
        description: 車種選擇
      - name: direction
        in: query
        required: false
        schema:
          enum:
          - up
          - down
          type: string
          description: 方向選擇
          title: Direction
        description: 方向選擇
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BusInfo'
                title: Response Getbusroutedata
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /buses/info/stops:
    get:
      tags:
      - Buses
      summary: Get Bus Stops Information
      description: 取得所有公車站牌的經緯度與資訊。
      operationId: getBusStopsInformation
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BusStopsInfo'
                type: array
                title: Response Getbusstopsinformation
  /buses/schedules:
    get:
      tags:
      - Buses
      summary: Get Bus Schedules
      description: '取得指定條件的公車時刻表。

        - **details=False**: 回傳簡易時刻表(僅發車時間)。

        - **details=True**: 回傳詳細時刻表(包含每站預估到達時間)。'
      operationId: getBusSchedules
      parameters:
      - name: bus_type
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusRouteType'
          description: 車種選擇
        description: 車種選擇
      - name: day
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusDayWithCurrent'
          description: 平日、假日或目前時刻
        description: 平日、假日或目前時刻
      - name: direction
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusDirection'
          description: 上山或下山
        description: 上山或下山
      - name: details
        in: query
        required: false
        schema:
          type: boolean
          description: 是否包含詳細站點時間資訊
          default: false
          title: Details
        description: 是否包含詳細站點時間資訊
      - name: time
        in: query
        required: false
        schema:
          description: 時間。若搜尋 day 選擇 current 時失效。
          title: Time
          nullable: true
          type: string
        description: 時間。若搜尋 day 選擇 current 時失效。
      - name: limits
        in: query
        required: false
        schema:
          description: 最大回傳資料筆數。預設為 5 筆,可以透過查詢參數調整。
          default: 5
          title: Limits
          nullable: true
          type: integer
          minimum: 1
        description: 最大回傳資料筆數。預設為 5 筆,可以透過查詢參數調整。
      responses:
        '200':
          description: 取得公車時刻表信息。
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                  - $ref: '#/components/schemas/BusDetailedSchedule'
                  - $ref: '#/components/schemas/BusSchedule'
                  nullable: true
                title: Response Getbusschedules
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /buses/stops/{stop_name}:
    get:
      tags:
      - Buses
      summary: Get Stop Bus Information By Stop
      description: 取得指定公車站牌的資訊和即將停靠公車。
      operationId: getStopBusInformationByStop
      parameters:
      - name: stop_name
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/BusStopsName'
      - name: bus_type
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusRouteType'
          description: 車種選擇
        description: 車種選擇
      - name: day
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusDayWithCurrent'
          description: 平日、假日或目前時刻
        description: 平日、假日或目前時刻
      - name: direction
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/BusDirection'
          description: 上山或下山
        description: 上山或下山
      - name: time
        in: query
        required: false
        schema:
          description: 時間。若搜尋 day 選擇 current 時失效。
          title: Time
          nullable: true
          type: string
        description: 時間。若搜尋 day 選擇 current 時失效。
      - name: limits
        in: query
        required: false
        schema:
          description: 最大回傳資料筆數。預設為 5 筆,可以透過查詢參數調整。
          default: 5
          title: Limits
          nullable: true
          type: integer
          minimum: 1
        description: 最大回傳資料筆數。預設為 5 筆,可以透過查詢參數調整。
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  nullable: true
                  $ref: '#/components/schemas/BusStopsQueryResult'
                title: Response Getstopbusinformationbystop
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    BusSchedule:
      properties:
        time:
          type: string
          title: Time
          description: 發車時間
        description:
          type: string
          title: Description
          description: 備註
        dep_stop:
          type: string
          title: Dep Stop
          description: 發車地點
        line:
          type: string
          title: Line
          description: '路線 (主校區: red/green, 南大: route_1/route_2)'
          default: ''
        bus_type:
          $ref: '#/components/schemas/BusType'
          description: 營運車輛類型
      type: object
      required:
      - time
      - description
      - dep_stop
      - bus_type
      title: BusSchedule
      description: Unified bus schedule entry for both Main and Nanda campus.
    BusDetailedSchedule:
      properties:
        dep_info:
          $ref: '#/components/schemas/BusSchedule'
          description: 發車資訊
        stops_time:
          items:
            $ref: '#/components/schemas/BusArriveTime'
          type: array
          title: Stops Time
          description: 各站發車時間
      type: object
      required:
      - dep_info
      - stops_time
      title: BusDetailedSchedule
      description: Unified detailed bus schedule for both Main and Nanda campus.
    BusStopsName:
      type: string
      enum:
      - 北校門口
      - 綜二館
      - 楓林小徑
      - 人社院&生科館
      - 台積館
      - 奕園停車場
      - 教育學院大樓&南門停車場
      - 南大校區校門口右側(食品路校牆邊)
      title: BusStopsName
      description: Bus stop names.
    BusDirection:
      type: string
      enum:
      - all
      - up
      - down
      title: BusDirection
      description: Bus direction.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    BusInfo:
      properties:
        direction:
          type: string
          title: Direction
          description: 方向
        duration:
          type: string
          title: Duration
          description: 時刻表有效期間
        route:
          type: string
          title: Route
          description: 路線
        routeEN:
          type: string
          title: Routeen
          description: 英文路線
      type: object
      required:
      - direction
      - duration
      - route
      - routeEN
      title: BusInfo
      description: Bus route information.
    BusRouteType:
      type: string
      enum:
      - all
      - main
      - nanda
      title: BusRouteType
      description: Bus route type.
    BusStopsQueryResult:
      properties:
        arrive_time:
          type: string
          title: Arrive Time
          description: 預計到達時間
        dep_time:
          type: string
          title: Dep Time
          description: 發車時間
        dep_stop:
          type: string
          title: Dep Stop
          description: 發車站牌
        description:
          type: string
          title: Description
          description: 備註
        bus_type:
          $ref: '#/components/schemas/BusType'
          description: 營運車輛類型
      type: object
      required:
      - arrive_time
      - dep_time
      - dep_stop
      - description
      - bus_type
      title: BusStopsQueryResult
      description: Result of querying bus stops.
    BusArriveTime:
      properties:
        stop:
          type: string
          title: Stop
          description: 公車站牌名稱
        arrive_time:
          type: string
          title: Arrive Time
          description: 預計到達時間
      type: object
      required:
      - stop
      - arrive_time
      title: BusArriveTime
      description: Bus arrival time at a stop.
    BusStopsInfo:
      properties:
        name:
          type: string
          title: Name
          description: 站牌中文名稱
        name_en:
          type: string
          title: Name En
          description: 站牌英文名稱
        latitude:
          type: string
          title: Latitude
          description: 站牌所在地緯度
        longitude:
          type: string
          title: Longitude
          description: 站牌所在地經度
      type: object
      required:
      - name
      - name_en
      - latitude
      - longitude
      title: BusStopsInfo
      description: Bus stop information.
    BusType:
      type: string
      enum:
      - route_83
      - large-sized_bus
      - middle-sized_bus
      title: BusType
      description: Bus vehicle type.
    BusDayWithCurrent:
      type: string
      enum:
      - weekday
      - weekend
      - current
      title: BusDayWithCurrent
      description: Day type including current day option.