SJTU Open API

The university's own REST API platform (开放API), operated by the SJTU Network and Information Center at api.sjtu.edu.cn under OAuth 2.0 issued by its own jAccount authorization server. 59 documented operations across 13 families: Profile, Task, Enterprise, File, Notification, Mail, Finance, Education, Card, Unicode (思源码), Barcode, Calendar and Signature. Every response uses one envelope — errno, error, total, nextToken, entities[] — and field release is scope controlled, so the same Profile operation returns a different object shape to a `basic` token than to a `privacy` one. Verified live 2026-08-30: an unauthenticated GET of /v1/me/profile returns HTTP 403 with the documented {"errno":10002,"error":"Authentication Failed."}. SJTU publishes no OpenAPI; the specification here is DERIVED from the university's own HTML documentation and marked as such in info.x-provenance.

Operations 62

GET /v1/me/profile Get my user profile #
GET /v1/profile/{jaccount} Get a specified user's profile #
POST /v2/task/message Send a task update message #
GET /v1/enterprise/user/positions List a user's posts and identities #
GET /v1/enterprise/user/rights Get a user's rights #
GET /v1/enterprise/position/dept:post:biz/users List users holding a post #
PUT /v1/enterprise/position/dept:post/users Assign a post to a user #
DELETE /v1/enterprise/position/dept:post/users Revoke a user's post assignment #
GET /v1/enterprise/organizes List organizational units #
GET /v1/enterprise/calendar Get the academic calendar #
PUT /v1/file Upload a file #
GET /v1/file/{id} Download a file #
POST /v1/file/{id} Replace a file #
GET /v1/file/{id}/meta Get file metadata #
POST /v1/file/{id}/meta Update file metadata #
GET /v1/file/{id}/thumb/{size} Download a thumbnail #
GET /v1/file/preview Get a WPS preview link #
GET /v1/file/edit Get a WPS edit link #
PUT /v1/notification Send a notification #
GET /v1/notification/status Get notification status #
POST /v1/notification/status Mark notification status #
GET /v1/mails List mail #
GET /v1/mails/{state} List mail #
PUT /v1/mail Send mail #
POST /v1/mail/{mailId} Mark a mail's read state #
GET /v1/finance/appointments/{businessType}/{businessNo} Get one finance appointment #
PUT /v1/finance/appointments/{businessType}/{businessNo} Submit a new finance appointment #
DELETE /v1/finance/appointments/{businessType}/{businessNo} Cancel a finance appointment #
POST /v1/finance/appointments/{businessType}/{businessNo} Mark a finance appointment complete #
GET /v1/finance/appointments/{businessType} List completed, cancelled or returned finance appointments #
GET /v1/lesson/{code} Get a teaching-class (lesson) record #
GET /v1/me/lessons Get the signed-in student's timetable #
GET /v1/me/lessons/{term} Get the signed-in student's timetable #
GET /v1/me/examinations Get the signed-in student's examinations #
GET /v1/me/examinations/{term} Get the signed-in student's examinations #
GET /v1/gpa Get the signed-in student's GPA #
GET /v1/me/card Get my campus-card record #
PUT /v1/me/card Open a campus-card account #
POST /v1/me/card Set campus-card information and state #
GET /v1/me/card/user Get campus-card identity information #
GET /v1/me/card/transactions List campus-card transactions #
GET /v1/me/card/photo Get the campus-card photo #
POST /v1/me/card/photo Update the campus-card photo #
GET /v1/me/card/recharge/{id} Get a top-up request #
POST /v1/me/card/recharge Submit a top-up request #
POST /v1/card/foundLostCard Report a found lost card #
GET /v1/card Look up a card by staff/student number or physical card number #
POST /v1/card Freeze or unfreeze a campus card #
GET /v1/me/card/transfer Get a card balance-transfer order #
POST /v1/me/card/transfer Transfer a campus-card balance #
GET /v1/unicode Validate a Siyuan code #
POST /v1/unicode Activate a Siyuan code #
GET /v1/unicode/identity Get the identity code and Siyuan activation state #
GET /v1/unicode/identity/advertising Get promotional-slot content #
GET /v1/unicode/pay Get a payment code #
GET /v1/unicode/parameters Get payment-code integration parameters #
GET /v1/unicode/transactions List Siyuan-code transactions #
GET /v1/barcode/qr/{fileName}.{imageType} Render a QR code #
GET /v1/barcode/{type}/{value}.{imageType} Render a barcode #
POST /v1/calendar/event Create a calendar event #
DELETE /v1/calendar/event/{id} Delete a calendar event #
POST /v1/signature/{eSignCode} Apply a digital signature to a document #

Documentation

Specifications

Schemas & Data

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/open-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 email required.

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

OpenAPI Specification

shanghai-jiao-tong-university-open-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Shanghai Jiao Tong University Open API
  version: 1.0.0
  summary: The institution-operated REST API platform SJTU's Network & Information Center runs at api.sjtu.edu.cn.
  description: 'The SJTU Open API platform (开放API) is operated by the Shanghai Jiao Tong University Network
    and Information Center (上海交通大学网络信息中心) and documented on the university''s own developer portal at
    https://developer.sjtu.edu.cn/api/overview.html. It is a REST API over HTTPS at https://api.sjtu.edu.cn,
    protected end to end by OAuth 2.0 issued by the university''s own jAccount authorization server at
    https://jaccount.sjtu.edu.cn/oauth2/.


    Thirteen API families are documented: Profile, Task, Enterprise, File, Notification, Mail, Finance,
    Education, Card, Unicode (Siyuan code), Barcode, Calendar and Signature. Together they cover the campus
    identity directory, the campus card and its payment code, student timetables and grades, campus mail
    and notifications, file storage with WPS preview/edit, and the finance appointment workflow — the
    operational spine of a Chinese research university, published as a first-party API rather than bought
    from a vendor.


    Every response uses one common envelope: errno (0 on success), optional error, optional total and
    nextToken for paging, and entities[] carrying the payload. Field release is scope-controlled — the
    same Profile object returns more fields to a token holding privacy than to one holding basic.


    Access is not open: an application must be registered through my.sjtu.edu.cn or the 交我办 app (Service
    Hall -> Information Services -> jAccount interface application), which issues an appId and a 48-character
    appSecret, and each scope must be separately approved. This document is DERIVED from the university''s
    published documentation. It was not published by SJTU and no SJTU-authored OpenAPI was found.'
  termsOfService: https://developer.sjtu.edu.cn/api/overview.html
  contact:
    name: Shanghai Jiao Tong University Network and Information Center
    url: https://developer.sjtu.edu.cn/
  x-operator: institution
  x-provenance:
    method: derived
    source: https://developer.sjtu.edu.cn/api/list.html
    generated: '2026-08-30'
    note: Paths, methods, OAuth grants and per-operation scopes were read from the operation blocks the
      SJTU developer portal renders on developer.sjtu.edu.cn/api/*.html. Envelope, error and Profile schemas
      were read from developer.sjtu.edu.cn/api/overview.html and /api/profile.html. Liveness confirmed
      by an unauthenticated GET of https://api.sjtu.edu.cn/v1/me/profile, which returned 403 {"errno":10002,"error":"Authentication
      Failed.","total":0} on 2026-08-30.
servers:
- url: https://api.sjtu.edu.cn
  description: SJTU Open API production host, operated by the SJTU Network and Information Center.
tags:
- name: Profile
  description: User profile — identity, name, default identity type and organizational unit, with field-level
    scope control.
- name: Task
  description: InfoPlus task centre — push workflow task updates into the campus task centre.
- name: Enterprise
  description: Enterprise directory — posts, identities, rights, organizational units and the academic
    calendar.
- name: File
  description: Application file storage — upload, download, metadata, thumbnails and WPS preview/edit
    links.
- name: Notification
  description: Campus notification delivery and read-state tracking, including Jiao-Wo-Ban (交我办) app pushes.
- name: Mail
  description: Campus mail — read, send and mark messages on the user's behalf.
- name: Finance
  description: Finance appointment workflow — submit, cancel, complete and query financial business items.
- name: Education
  description: Teaching records — lessons, student timetables, examinations and GPA.
- name: Card
  description: Campus card (一卡通) — account opening, balance, transactions, photo, top-up, freeze and transfer.
- name: Unicode
  description: Siyuan code (思源码) — the campus identity and payment QR code, its activation, payment codes
    and transactions.
- name: Barcode
  description: Barcode and QR-code image rendering.
- name: Calendar
  description: Calendar event synchronisation into the campus calendar.
- name: Signature
  description: Digital document signing (e-signature).
paths:
  /v1/me/profile:
    get:
      summary: Get my user profile
      description: 'Get my user profile. Documented as “查询我的用户信息” on the SJTU developer platform. Supported
        OAuth 2.0 grants: authorizationCode. Covered by the SJTU Java API SDK.'
      operationId: get_v1_me_profile
      tags:
      - Profile
      security:
      - jAccountOAuth2:
        - basic
        - essential
        - profile
        - privacy
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/profile/{jaccount}:
    get:
      summary: Get a specified user's profile
      description: 'Get a specified user''s profile. Documented as “查询指定用户的信息” on the SJTU developer platform.
        Supported OAuth 2.0 grants: authorizationCode, clientCredentials. Documented URL template: https://api.sjtu.edu.cn/v1/profile/{jaccount|userId}'
      operationId: get_v1_profile_jaccount
      tags:
      - Profile
      parameters:
      - name: jaccount
        in: path
        required: true
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - basic
        - essential
        - profile
        - privacy
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v2/task/message:
    post:
      summary: Send a task update message
      description: 'Send a task update message. Documented as “发送任务更新消息” on the SJTU developer platform.
        Supported OAuth 2.0 grants: clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: post_v2_task_message
      tags:
      - Task
      security:
      - jAccountOAuth2:
        - tasks
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/user/positions:
    get:
      summary: List a user's posts and identities
      description: 'List a user''s posts and identities. Documented as “取用户的岗位、身份信息” on the SJTU developer
        platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_enterprise_user_positions
      tags:
      - Enterprise
      security:
      - jAccountOAuth2:
        - basic
        - essential
        - profile
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/user/rights:
    get:
      summary: Get a user's rights
      description: 'Get a user''s rights. Documented as “取用户的权限” on the SJTU developer platform. Supported
        OAuth 2.0 grants: authorizationCode, clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: get_v1_enterprise_user_rights
      tags:
      - Enterprise
      parameters:
      - name: account
        in: query
        required: false
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - basic
        - essential
        - privacy
        - profile
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/position/dept:post:biz/users:
    get:
      summary: List users holding a post
      description: 'List users holding a post. Documented as “查询岗位中的用户信息” on the SJTU developer platform.
        Supported OAuth 2.0 grants: clientCredentials.'
      operationId: get_v1_enterprise_position_dept_post_biz_users
      tags:
      - Enterprise
      security:
      - jAccountOAuth2:
        - basic
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/position/dept:post/users:
    put:
      summary: Assign a post to a user
      description: 'Assign a post to a user. Documented as “为用户配置岗位” on the SJTU developer platform. Supported
        OAuth 2.0 grants: authorizationCode.'
      operationId: put_v1_enterprise_position_dept_post_users
      tags:
      - Enterprise
      parameters:
      - name: code
        in: query
        required: false
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - profile
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
    delete:
      summary: Revoke a user's post assignment
      description: 'Revoke a user''s post assignment. Documented as “取消用户岗位授权” on the SJTU developer platform.
        Supported OAuth 2.0 grants: authorizationCode.'
      operationId: delete_v1_enterprise_position_dept_post_users
      tags:
      - Enterprise
      parameters:
      - name: code
        in: query
        required: false
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - profile
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/organizes:
    get:
      summary: List organizational units
      description: List organizational units. Documented as “查询部门” on the SJTU developer platform. Covered
        by the SJTU Java API SDK.
      operationId: get_v1_enterprise_organizes
      tags:
      - Enterprise
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/enterprise/calendar:
    get:
      summary: Get the academic calendar
      description: Get the academic calendar. Documented as “查询校历” on the SJTU developer platform.
      operationId: get_v1_enterprise_calendar
      tags:
      - Enterprise
      parameters:
      - name: from
        in: query
        required: false
        schema:
          type: string
      - name: to
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file:
    put:
      summary: Upload a file
      description: 'Upload a file. Documented as “上传文件” on the SJTU developer platform. Supported OAuth
        2.0 grants: clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: put_v1_file
      tags:
      - File
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file/{id}:
    get:
      summary: Download a file
      description: Download a file. Documented as “下载文件” on the SJTU developer platform.
      operationId: get_v1_file_id
      tags:
      - File
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
    post:
      summary: Replace a file
      description: 'Replace a file. Documented as “修改文件” on the SJTU developer platform. Supported OAuth
        2.0 grants: clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: post_v1_file_id
      tags:
      - File
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file/{id}/meta:
    get:
      summary: Get file metadata
      description: 'Get file metadata. Documented as “获取文件信息” on the SJTU developer platform. Supported
        OAuth 2.0 grants: clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: get_v1_file_id_meta
      tags:
      - File
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
    post:
      summary: Update file metadata
      description: 'Update file metadata. Documented as “修改文件信息” on the SJTU developer platform. Supported
        OAuth 2.0 grants: clientCredentials. Covered by the SJTU Java API SDK.'
      operationId: post_v1_file_id_meta
      tags:
      - File
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file/{id}/thumb/{size}:
    get:
      summary: Download a thumbnail
      description: Download a thumbnail. Documented as “下载缩略图” on the SJTU developer platform.
      operationId: get_v1_file_id_thumb_size
      tags:
      - File
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: size
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file/preview:
    get:
      summary: Get a WPS preview link
      description: 'Get a WPS preview link. Documented as “获取WPS预览链接” on the SJTU developer platform.
        Supported OAuth 2.0 grants: clientCredentials.'
      operationId: get_v1_file_preview
      tags:
      - File
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/file/edit:
    get:
      summary: Get a WPS edit link
      description: 'Get a WPS edit link. Documented as “获取WPS编辑链接” on the SJTU developer platform. Supported
        OAuth 2.0 grants: clientCredentials.'
      operationId: get_v1_file_edit
      tags:
      - File
      security:
      - jAccountOAuth2:
        - storage
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/notification:
    put:
      summary: Send a notification
      description: 'Send a notification. Documented as “发送通知” on the SJTU developer platform. Supported
        OAuth 2.0 grants: password. Covered by the SJTU Java API SDK.'
      operationId: put_v1_notification
      tags:
      - Notification
      security:
      - jAccountOAuth2:
        - send_notification
        - send_app_notification
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a parameter error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — authentication or scope check failed (errno 10002 / 10010).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found — the resource path is wrong.
        '405':
          description: Method Not Allowed.
        '500':
          description: Internal Server Error.
        '503':
          description: Service Unavailable — the API server is restarting or down for maintenance.
  /v1/notification/status:
    get:
      summary: Get notification status
      description: 'Get notification status. Documented as “获取通知状态” on the SJTU developer platform. Supported
        OAuth 2.0 grants: clientCredentials.'
      operationId: get_v1_notification_status
      tags:
      - Notification
      parameters:
      - name: id
        in: query
        required: false
        schema:
          type: string
      security:
      - jAccountOAuth2:
        - notifications
      responses:
        '200':
          description: Success. errno is 0 and the payload is carried in entities[].
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          description: Bad Request — usually a par

# --- truncated at 32 KB (106 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shanghai-jiao-tong-university/refs/heads/main/openapi/shanghai-jiao-tong-university-open-api-openapi.yml