TUNA Mirror Sync Status API

Public JSON endpoint published by the Tsinghua University TUNA open-source mirror site exposing the synchronization status of hundreds of mirrored repositories (Debian, Ubuntu, PyPI, CTAN, etc.). Each entry includes name, status, upstream, size, and last_update timestamps. Used to drive the mirror status dashboard; no authentication required.

OpenAPI Specification

tsinghua-tuna-mirror-status.yaml Raw ↑
openapi: 3.0.3
info:
  title: TUNA Mirror Sync Status API
  description: >-
    Public, unauthenticated JSON endpoint published by the Tsinghua University
    TUNA open-source mirror site (mirrors.tuna.tsinghua.edu.cn). It exposes the
    tunasync synchronization status of every mirrored repository served by the
    site (Debian, Ubuntu, PyPI, CTAN, Hackage, and many others). Each entry
    reports the mirror name, current sync status, upstream source, on-disk size,
    and a set of timestamps describing the last and next synchronization runs.
    The document drives the public mirror status dashboard. This OpenAPI
    description was produced faithfully from the live response structure; TUNA
    does not publish a formal machine-readable specification.
  version: 1.0.0
  contact:
    name: TUNA Association, Tsinghua University
    url: https://mirrors.tuna.tsinghua.edu.cn/
  license:
    name: tunasync (MIT)
    url: https://github.com/tuna/tunasync/blob/master/LICENSE
servers:
  - url: https://mirrors.tuna.tsinghua.edu.cn
    description: Tsinghua University TUNA mirror site
paths:
  /static/tunasync.json:
    get:
      operationId: getMirrorSyncStatus
      summary: Get mirror sync status
      description: >-
        Returns an array of status objects, one per mirrored repository managed
        by tunasync. No authentication is required.
      tags:
        - Mirror Status
      responses:
        '200':
          description: A list of mirror synchronization status entries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MirrorStatusList'
components:
  schemas:
    MirrorStatusList:
      type: array
      description: Collection of per-mirror synchronization status entries.
      items:
        $ref: '#/components/schemas/MirrorStatus'
    MirrorStatus:
      type: object
      description: Synchronization status for a single mirrored repository.
      required:
        - name
        - is_master
        - status
        - last_update
        - last_update_ts
        - last_started
        - last_started_ts
        - last_ended
        - last_ended_ts
        - next_schedule
        - next_schedule_ts
        - upstream
        - size
      properties:
        name:
          type: string
          description: Identifier of the mirror (e.g. "debian", "pypi", "hackage").
          example: artixlinux-iso
        is_master:
          type: boolean
          description: Whether this mirror is a master (primary) sync job.
          example: true
        status:
          type: string
          description: Current synchronization status of the mirror.
          enum:
            - success
            - syncing
            - failed
            - paused
          example: success
        last_update:
          type: string
          description: >-
            Human-readable timestamp of the last successful update, formatted as
            "YYYY-MM-DD HH:MM:SS +ZZZZ".
          example: '2026-06-04 05:36:00 +0800'
        last_update_ts:
          type: integer
          format: int64
          description: Unix epoch seconds of the last successful update.
          example: 1780522560
        last_started:
          type: string
          description: Human-readable timestamp of when the most recent sync run started.
          example: '2026-06-04 05:35:55 +0800'
        last_started_ts:
          type: integer
          format: int64
          description: Unix epoch seconds of when the most recent sync run started.
          example: 1780522555
        last_ended:
          type: string
          description: Human-readable timestamp of when the most recent sync run ended.
          example: '2026-06-04 05:36:00 +0800'
        last_ended_ts:
          type: integer
          format: int64
          description: Unix epoch seconds of when the most recent sync run ended.
          example: 1780522560
        next_schedule:
          type: string
          description: >-
            Human-readable timestamp of the next scheduled sync run. May be a
            zero/sentinel value ("0001-01-01 00:00:00 +0000") when no run is
            scheduled.
          example: '2026-06-04 11:36:00 +0800'
        next_schedule_ts:
          type: integer
          format: int64
          description: >-
            Unix epoch seconds of the next scheduled sync run. May be negative
            (sentinel) when no run is scheduled.
          example: 1780544160
        upstream:
          type: string
          description: Upstream source URL the mirror synchronizes from.
          example: rsync://download.artixlinux.org/iso/
        size:
          type: string
          description: >-
            Human-readable on-disk size of the mirror (e.g. "11.4G", "1.26T").
          example: 54.0G
tags:
  - name: Mirror Status
    description: Endpoints describing mirror synchronization state.