NTHU Data API

A live, keyless, MIT-licensed FastAPI service publishing 22 paths over NTHU campus data — announcements by unit, campus bus routes and schedules, the course catalog and course search, department directories, dining venues and opening hours, real-time campus electricity usage, library study-space availability and lost-and-found, campus locations, and unit newsletters. It publishes its own OpenAPI description at /openapi.json (serving 3.1.0 as of 2026-08-30; the archived pristine copy in openapi/_original/ declares 3.0.3, so upstream has since bumped its emitted version) and Swagger UI at /docs. Split per tag by our refine pipeline into the nine documents referenced below; the pristine source contract is openapi/_original/nthu-data-api.yaml.

Operations 23

GET /announcements/ Get Announcements #
GET /announcements/sources Get Announcements List #
GET /announcements/lists/departments List Announcement Departments #
GET /buses/routes Get Bus Route Metadata #
GET /buses/info/stops Get Bus Stops Information #
GET /buses/schedules Get Bus Schedules #
GET /buses/stops/{stop_name} Get Stop Bus Information By Stop #
GET /courses/ Get All Courses #
GET /courses/search Search Courses By Field And Value #
POST /courses/search Search Courses By Condition #
GET /courses/lists/{list_name} List Courses By Type #
GET /departments/ Get All Departments #
GET /departments/search Fuzzy Search Departments And People #
GET /dining/ Get Dining Data #
GET /dining/open Get Open Restaurants #
GET /energy/electricity_usage Get Realtime Electricity Usage #
GET /libraries/space Get Library Space Availability #
GET /libraries/lost_and_found Get Library Lost And Found Items #
GET /libraries/rss/{rss_type} Get Library Rss Data #
GET /locations/ Get All Locations #
GET /locations/search Fuzzy Search Locations #
GET /newsletters/ Get All Newsletters #
GET /newsletters/{newsletter_name} Get Newsletter By Name #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nthu-data-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nthu-data-api.yaml Raw ↑
openapi: 3.0.3
info:
  title: NTHU Data API
  description: 由國立清華大學校內各單位資料所組成的公共資料 API。
  version: 2.0.0
paths:
  /announcements/:
    get:
      tags:
      - Announcements
      summary: Get Announcements
      description: '取得校內每個處室的所有公告資訊。

        資料來源:各處室網站'
      operationId: getAnnouncements
      parameters:
      - name: department
        in: query
        required: false
        schema:
          type: string
          description: 部門名稱。請透過 `/announcements/lists/departments` 取得完整列表。
          title: Department
        description: 部門名稱。請透過 `/announcements/lists/departments` 取得完整列表。
      - name: title
        in: query
        required: false
        schema:
          type: string
          description: 公告標題關鍵字
          title: Title
        description: 公告標題關鍵字
      - name: language
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/AnnouncementLanguageOption'
          description: 語言篩選
        description: 語言篩選
      - name: fuzzy
        in: query
        required: false
        schema:
          type: boolean
          description: 是否進行模糊搜尋,若不啟用則必須完全符合(不建議)
          default: true
          title: Fuzzy
        description: 是否進行模糊搜尋,若不啟用則必須完全符合(不建議)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnnouncementDetail'
                title: Response Getannouncements
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /announcements/sources:
    get:
      tags:
      - Announcements
      summary: Get Announcements List
      description: '取得公告列表(不包含文章內容)。

        資料來源:各處室網站'
      operationId: getAnnouncementsList
      parameters:
      - name: department
        in: query
        required: false
        schema:
          type: string
          description: 部門名稱
          title: Department
        description: 部門名稱
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
                title: Response Getannouncementslist
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /announcements/lists/departments:
    get:
      tags:
      - Announcements
      summary: List Announcement Departments
      description: 取得所有有公告的部門列表。
      operationId: listAnnouncementDepartments
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  type: string
                type: array
                title: Response Listannouncementdepartments
  /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'
  /courses/:
    get:
      tags:
      - Courses
      summary: Get All Courses
      description: '取得所有課程。

        資料來源:[教務處課務組/JSON格式下載](https://curricul.site.nthu.edu.tw/p/406-1208-111356,r7883.php?Lang=zh-tw)'
      operationId: getAllCourses
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/CourseData'
                type: array
                title: Response Getallcourses
  /courses/search:
    get:
      tags:
      - Courses
      summary: Search Courses By Field And Value
      description: '根據提供的欄位和值搜尋課程。

        - 使用欄位名稱作為查詢參數

        - 例如:/search?chinese_title=產業.+&english_title=...'
      operationId: searchCoursesByFieldAndValue
      parameters:
      - name: id
        in: query
        required: false
        schema:
          type: string
          description: 課號
          title: Id
        description: 課號
      - name: chinese_title
        in: query
        required: false
        schema:
          type: string
          description: 課程中文名稱
          title: Chinese Title
        description: 課程中文名稱
      - name: english_title
        in: query
        required: false
        schema:
          type: string
          description: 課程英文名稱
          title: English Title
        description: 課程英文名稱
      - name: credit
        in: query
        required: false
        schema:
          type: string
          description: 學分數
          title: Credit
        description: 學分數
      - name: size_limit
        in: query
        required: false
        schema:
          type: string
          description: 人限
          title: Size Limit
        description: 人限
      - name: freshman_reservation
        in: query
        required: false
        schema:
          type: string
          description: 新生保留人數
          title: Freshman Reservation
        description: 新生保留人數
      - name: object
        in: query
        required: false
        schema:
          type: string
          description: 通識對象
          title: Object
        description: 通識對象
      - name: ge_type
        in: query
        required: false
        schema:
          type: string
          description: 通識類別
          title: Ge Type
        description: 通識類別
      - name: language
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/CourseLanguage'
          description: 授課語言
        description: 授課語言
      - name: note
        in: query
        required: false
        schema:
          type: string
          description: 備註
          title: Note
        description: 備註
      - name: suspend
        in: query
        required: false
        schema:
          type: string
          description: 停開註記
          title: Suspend
        description: 停開註記
      - name: class_room_and_time
        in: query
        required: false
        schema:
          type: string
          description: 教室與上課時間
          title: Class Room And Time
        description: 教室與上課時間
      - name: teacher
        in: query
        required: false
        schema:
          type: string
          description: 授課教師
          title: Teacher
        description: 授課教師
      - name: prerequisite
        in: query
        required: false
        schema:
          type: string
          description: 擋修說明
          title: Prerequisite
        description: 擋修說明
      - name: limit_note
        in: query
        required: false
        schema:
          type: string
          description: 課程限制說明
          title: Limit Note
        description: 課程限制說明
      - name: expertise
        in: query
        required: false
        schema:
          type: string
          description: 第一二專長對應
          title: Expertise
        description: 第一二專長對應
      - name: program
        in: query
        required: false
        schema:
          type: string
          description: 學分學程對應
          title: Program
        description: 學分學程對應
      - name: no_extra_selection
        in: query
        required: false
        schema:
          type: string
          description: 不可加簽說明
          title: No Extra Selection
        description: 不可加簽說明
      - name: required_optional_note
        in: query
        required: false
        schema:
          type: string
          description: 必選修說明
          title: Required Optional Note
        description: 必選修說明
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CourseData'
                title: Response Searchcoursesbyfieldandvalue
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Courses
      summary: Search Courses By Condition
      description: 進階搜尋,根據條件取得課程。可以使用巢狀條件。
      operationId: searchCoursesByCondition
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/CourseQueryCondition'
              - $ref: '#/components/schemas/CourseCondition'
              title: Query Condition
            examples:
              normal_1:
                summary: 單一搜尋條件
                value:
                  row_field: chinese_title
                  matcher: 數統導論
                  regex_match: true
              normal_2:
                summary: 兩個搜尋條件
                value:
                - row_field: teacher
                  matcher: 黃
                  regex_match: true
                - or
                - row_field: teacher
                  matcher: 孫
                  regex_match: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CourseData'
                title: Response Searchcoursesbycondition
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /courses/lists/{list_name}:
    get:
      tags:
      - Courses
      summary: List Courses By Type
      description: 取得指定類型的課程列表。
      operationId: listCoursesByType
      parameters:
      - name: list_name
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/CourseListName'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CourseData'
                title: Response Listcoursesbytype
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /departments/:
    get:
      tags:
      - Departments
      summary: Get All Departments
      description: '取得所有部門與人員資料。

        資料來源:[清華通訊錄](https://tel.net.nthu.edu.tw/nthusearch/)'
      operationId: getAllDepartments
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Department'
                type: array
                title: Response Getalldepartments
  /departments/search:
    get:
      tags:
      - Departments
      summary: Fuzzy Search Departments And People
      description: 模糊搜尋全校部門與人員名稱。
      operationId: searchDepartmentsAndPeople
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
          description: 要查詢的部門或人員名稱
          title: Query
        description: 要查詢的部門或人員名稱
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  anyOf:
                  - type: array
                    items:
                      $ref: '#/components/schemas/Department'
                  - type: array
                    items:
                      $ref: '#/components/schemas/DepartmentPerson'
                title: Response Searchdepartmentsandpeople
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /dining/:
    get:
      tags:
      - Dining
      summary: Get Dining Data
      description: '取得所有餐廳及廠商資料。

        資料來源:[總務處經營管理組](https://ddfm.site.nthu.edu.tw/p/404-1494-256455.php?Lang=zh-tw)'
      operationId: getDiningData
      parameters:
      - name: building_name
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/DiningBuildingName'
          description: 餐廳建築名稱(可選)
        description: 餐廳建築名稱(可選)
      - name: restaurant_name
        in: query
        required: false
        schema:
          type: string
          description: 餐廳名稱(可選)
          title: Restaurant Name
        description: 餐廳名稱(可選)
      - name: fuzzy
        in: query
        required: false
        schema:
          type: boolean
          description: 是否進行模糊搜尋,若不啟用則必須完全符合(不建議)
          default: true
          title: Fuzzy
        description: 是否進行模糊搜尋,若不啟用則必須完全符合(不建議)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiningBuilding'
                title: Response Getdiningdata
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /dining/open:
    get:
      tags:
      - Dining
      summary: Get Open Restaurants
      description: 取得指定營業日的餐廳資料。
      operationId: getOpenRestaurants
      parameters:
      - name: schedule
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/DiningScheduleName'
          description: 營業時間查詢
        description: 營業時間查詢
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiningRestaurant'
                title: Response Getopenrestaurants
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /energy/electricity_usage:
    get:
      tags:
      - Energy
      summary: Get Realtime Electricity Usage
      description: '取得校園電力即時使用量。

        資料來源:[校園能源查詢管理系統](http://140.114.188.86/powermanage/index.aspx)'
      operationId: getRealtimeElectricityUsage
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/EnergyElectricityInfo'
                type: array
                title: Response Getrealtimeelectricityusage
  /libraries/space:
    get:
      tags:
      - Libraries
      summary: Get Library Space Availability
      description: '取得圖書館空間使用資訊。

        資料來源:[圖書館空間預約系統](https://libsms.lib.nthu.edu.tw/RWDAPI_New/GetDevUseStatus.aspx)'
      operationId: getLibrarySpaceAvailability
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LibrarySpace'
                type: array
                title: Response Getlibraryspaceavailability
  /libraries/lost_and_found:
    get:
      tags:
      - Libraries
      summary: Get Library Lost And Found Items
      description: '取得圖書館失物招領資訊。

        資料來源:[圖書館失物招領系統](https://adage.lib.nthu.edu.tw/find)'
      operationId: getLibraryLostAndFoundItems
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LibraryLostAndFound'
                type: array
                title: Response Getlibrarylostandfounditems
  /libraries/rss/{rss_type}:
    get:
      tags:
      - Libraries
      summary: Get Library Rss Data
      description: '取得指定圖書館的 RSS 資料。

        資料來源:[圖書館官網展覽與活動](https://www.lib.nthu.edu.tw/events/index.html)'
      operationId: getLibraryRssData
      parameters:
      - name: rss_type
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/LibraryRssType'
          description: RSS 類型:最新消息(news)、電子資源(eresources)、展覽及活動(exhibit)、南大與人社分館(branches)
        description: RSS 類型:最新消息(news)、電子資源(eresources)、展覽及活動(exhibit)、南大與人社分館(branches)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LibraryRssItem'
                title: Response Getlibraryrssdata
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /locations/:
    get:
      tags:
      - Locations
      summary: Get All Locations
      description: '取得校內所有地點資訊。

        資料來源:[國立清華大學校園地圖](https://www.nthu.edu.tw/campusmap)'
      operationId: getAllLocations
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LocationDetail'
                type: array
                title: Response Getalllocations
  /locations/search:
    get:
      tags:
      - Locations
      summary: Fuzzy Search Locations
      description: 使用名稱模糊搜尋地點資訊。
      operationId: fuzzySearchLocations
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
          description: 要查詢的地點
          title: Query
        description: 要查詢的地點
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocationDetail'
                title: Response Fuzzysearchlocations
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /newsletters/:
    get:
      tags:
      - Newsletters
      summary: Get All Newsletters
      description: '取得所有的電子報。

        資料來源:[國立清華大學電子報系統](https://newsletter.cc.nthu.edu.tw/nthu-list/index.php/zh/)'
      operationId: getAllNewsletters
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NewsletterInfo'
                type: array
                title: Response Getallnewsletters
  /newsletters/{newsletter_name}:
    get:
      tags:
      - Newsletters
      summary: Get Newsletter By Name
      description: 取得指定電子報的資訊。
      operationId: getNewsletterByName
      parameters:
      - name: newsletter_name
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/NewsletterName'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsletterInfo'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AnnouncementArticle:
      properties:
        title:
          title: Title
          description: 公告標題
          nullable: true
          type: string
        link:
          title: Link
          description: 公告連結
          nullable: true
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
        date:
          title: Date
          description: 公告日期 (YYYY-MM-DD)
          nullable: true
          type: string
      type: object
      required:
      - title
      - link
      title: AnnouncementArticle
      description: Individual announcement article.
    AnnouncementDetail:
      properties:
        title:
          type: string
          title: Title
          description: 佈告欄標題
        link:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Link
          description: 佈告欄連結
        language:
          type: string
          title: Language
          description: 佈告欄語言
        department:
          type: string
          title: Department
          description: 發布部門
        articles:
          items:
            $ref: '#/components/schemas/AnnouncementArticle'
          type: array
          title: Articles
          description: 公告列表
      type: object
      required:
      - title
      - link
      - language
      - department
      - articles
      title: AnnouncementDetail
      description: Announcement detail with articles list.
    AnnouncementLanguageOption:
      type: string
      enum:
      - zh-tw
      - en
      title: AnnouncementLanguageOption
    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.
    BusDayWithCurrent:
      type: string
      enum:
      - weekday
      - weekend
      - current
      title: BusDayWithCurrent
      description: Day type including current day option.
    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.
    BusDirection:
      type: string
      enum:
      - all
      - up
      - down
      title: BusDirection
      description: Bus direction.
    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.
    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_t

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nthu/refs/heads/main/openapi/_original/nthu-data-api.yaml