Shanghai Jiao Tong University Unicode API

Siyuan code (思源码) — the campus identity and payment QR code, its activation, payment codes and transactions.

Operations 7

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 #

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/shanghai-jiao-tong-university-unicode-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

shanghai-jiao-tong-university-unicode-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Shanghai Jiao Tong University Open Unicode 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.
  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: Unicode
  description: Siyuan code (思源码) — the campus identity and payment QR code, its activation, payment codes and transactions.
paths:
  /v1/unicode:
    get:
      summary: Validate a Siyuan code
      description: 'Validate a Siyuan code. Documented as “思源码校验” on the SJTU developer platform. Supported OAuth 2.0 grants: clientCredentials.'
      operationId: get_v1_unicode
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
      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: Activate a Siyuan code
      description: 'Activate a Siyuan code. Documented as “开通思源码” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: post_v1_unicode
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
      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/unicode/identity:
    get:
      summary: Get the identity code and Siyuan activation state
      description: 'Get the identity code and Siyuan activation state. Documented as “获取身份码、获取思源码开通状态” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_unicode_identity
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
        - card_info
      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/unicode/identity/advertising:
    get:
      summary: Get promotional-slot content
      description: 'Get promotional-slot content. Documented as “获取运营位信息” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_unicode_identity_advertising
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
      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/unicode/pay:
    get:
      summary: Get a payment code
      description: 'Get a payment code. Documented as “获取支付码” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_unicode_pay
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
      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/unicode/parameters:
    get:
      summary: Get payment-code integration parameters
      description: 'Get payment-code integration parameters. Documented as “获取支付码对接参数” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_unicode_parameters
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - unicode
      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/unicode/transactions:
    get:
      summary: List Siyuan-code transactions
      description: 'List Siyuan-code transactions. Documented as “查询交易记录” on the SJTU developer platform. Supported OAuth 2.0 grants: authorizationCode.'
      operationId: get_v1_unicode_transactions
      tags:
      - Unicode
      security:
      - jAccountOAuth2:
        - card_transactions
      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.
components:
  schemas:
    Envelope:
      type: object
      description: The common response envelope every SJTU open API returns.
      properties:
        errno:
          type: integer
          description: Error code. 0 means the call succeeded.
          example: 0
        error:
          type: string
          description: Optional error message.
          example: success
        total:
          type: integer
          description: Optional; present when paging. Total number of matching records, so total >= entities.length.
        nextToken:
          type: string
          description: Optional; present when paging. Pass back as pageToken to fetch the next page. Absent on the last page.
        entities:
          type: array
          description: Returned objects. Length 0 when there is no object; a single object is at entities[0].
          items:
            type: object
      required:
      - errno
    Error:
      type: object
      description: Error payload. errno carries the SJTU API error code; see errors/shanghai-jiao-tong-university-errors.yml.
      properties:
        errno:
          type: integer
          example: 10002
        error:
          type: string
          example: Authentication Failed.
        total:
          type: integer
          example: 0
      required:
      - errno
  securitySchemes:
    jAccountOAuth2:
      type: oauth2
      description: 'OAuth 2.0 issued by SJTU''s own jAccount authorization server. The issuer publishes OpenID Connect discovery at https://jaccount.sjtu.edu.cn/oauth2/.well-known/openid-configuration. Tokens may be sent as the access_token query/body parameter or as an Authorization: Bearer header (RFC 6750). Which grant an operation accepts is stated in its description.'
      flows:
        authorizationCode:
          authorizationUrl: https://jaccount.sjtu.edu.cn/oauth2/authorize
          tokenUrl: https://jaccount.sjtu.edu.cn/oauth2/token
          scopes:
            basic: Read the user's identifier (system id and jAccount name) and real name.
            essential: Read basic identifier and name plus the bound identity (identity id, identity type, and owning department/school).
            profile: Read fuller user detail — basic identifier, name, account information, mobile number, usual email address.
            unicode: Activate, retrieve or validate the Siyuan code (思源码).
            tasks: Read actionable/pending/in-progress/completed task lists; read or aggregate manageable workflows, instances and tasks.
            messages: Read the user's messages.
            notifications: Read the user's system notifications.
            privacy: Read the user's detailed information, including personal ID-document details and date of birth.
            introspect: Introspect an OAuth token. API-development use only.
            read_apps: Read application registration information.
            write_apps: Create and modify application registration information.
            exchange_data: Data exchange — the scope the Data Resources APIs on graphql.sjtu.edu.cn require.
            signature: Obtain a digital signature.
            manage_card: Campus-card management, such as account opening.
            send_app_notification: Send a Jiao-Wo-Ban (交我办) app notification to a user.
            send_notification: Send a notification to a user.
            read_mails: Read the user's mail.
            send_mail: Send mail on the user's behalf, or change a message's read state.
            storage: Full control of the application's own unstructured storage.
            modify_notification: Modify the state of the application's own notifications.
            lessons: Read the user's lesson information.
            classes: Read the user's timetable (including courses).
            exams: Read the user's examination information.
            scores: Read the user's examination results.
            students_list: Read the enrolled-student roster for a class (teacher).
            card_info: Read the user's campus-card information.
            card_transactions: Read the user's campus-card transaction records.
            write_card_info: Campus-card write operations — change the query password, report a card lost, top up from a bound bank card.
            income: Query the user's income information.
            create_jaccount: Create a jAccount account.
            edit_jaccount: Modify a jAccount account.
            net_service_info: Read all personal network-service information for a specified user.
            connect_wechat: Bind a jAccount to a WeChat account.
            connect_shmec: Bind a jAccount to a Shanghai Municipal Education Commission account.
            print: Self-service printing.
            connect_finance: Integrate with the finance appointment system.
            student_affairs: Retrieve student-affairs information.
            bus: Read campus-bus and inter-campus shuttle timetables and real-time information.
            calendar: Synchronise calendar information.
        clientCredentials:
          tokenUrl: https://jaccount.sjtu.edu.cn/oauth2/token
          scopes:
            basic: Read the user's identifier (system id and jAccount name) and real name.
            essential: Read basic identifier and name plus the bound identity (identity id, identity type, and owning department/school).
            profile: Read fuller user detail — basic identifier, name, account information, mobile number, usual email address.
            unicode: Activate, retrieve or validate the Siyuan code (思源码).
            tasks: Read actionable/pending/in-progress/completed task lists; read or aggregate manageable workflows, instances and tasks.
            messages: Read the user's messages.
            notifications: Read the user's system notifications.
            privacy: Read the user's detailed information, including personal ID-document details and date of birth.
            introspect: Introspect an OAuth token. API-development use only.
            read_apps: Read application registration information.
            write_apps: Create and modify application registration information.
            exchange_data: Data exchange — the scope the Data Resources APIs on graphql.sjtu.edu.cn require.
            signature: Obtain a digital signature.
            manage_card: Campus-card management, such as account opening.
            send_app_notification: Send a Jiao-Wo-Ban (交我办) app notification to a user.
            send_notification: Send a notification to a user.
            read_mails: Read the user's mail.
            send_mail: Send mail on the user's behalf, or change a message's read state.
            storage: Full control of the application's own unstructured storage.
            modify_notification: Modify the state of the application's own notifications.
            lessons: Read the user's lesson information.
            classes: Read the user's timetable (including courses).
            exams: Read the user's examination information.
            scores: Read the user's examination results.
            students_list: Read the enrolled-student roster for a class (teacher).
            card_info: Read the user's campus-card information.
            card_transactions: Read the user's campus-card transaction records.
            write_card_info: Campus-card write operations — change the query password, report a card lost, top up from a bound bank card.
            income: Query the user's income information.
            create_jaccount: Create a jAccount account.
            edit_jaccount: Modify a jAccount account.
            net_service_info: Read all personal network-service information for a specified user.
            connect_wechat: Bind a jAccount to a WeChat account.
            connect_shmec: Bind a jAccount to a Shanghai Municipal Education Commission account.
            print: Self-service printing.
            connect_finance: Integrate with the finance appointment system.
            student_affairs: Retrieve student-affairs information.
            bus: Read campus-bus and inter-campus shuttle timetables and real-time information.
            calendar: Synchronise calendar information.
        password:
          tokenUrl: https://jaccount.sjtu.edu.cn/oauth2/token
          scopes:
            basic: Read the user's identifier (system id and jAccount name) and real name.
            essential: Read basic identifier and name plus the bound identity (identity id, identity type, and owning department/school).
            profile: Read fuller user detail — basic identifier, name, account information, mobile number, usual email address.
            unicode: Activate, retrieve or validate the Siyuan code (思源码).
            tasks: Read actionable/pending/in-progress/completed task lists; read or aggregate manageable workflows, instances and tasks.
            messages: Read the user's messages.
            notifications: Read the user's system notifications.
            privacy: Read the user's detailed information, including personal ID-document details and date of birth.
            introspect: Introspect an OAuth token. API-development use only.
            read_apps: Read application registration information.
            write_apps: Create and modify application registration information.
            exchange_data: Data exchange — the scope the Data Resources APIs on graphql.sjtu.edu.cn require.
            signature: Obtain a digital signature.
            manage_card: Campus-card management, such as account opening.
            send_app_notification: Send a Jiao-Wo-Ban (交我办) app notification to a user.
            send_notification: Send a notification to a user.
            read_mails: Read the user's mail.
            send_mail: Send mail on the user's behalf, or change a message's read state.
            storage: Full control of the application's own unstructured storage.
            modify_notification: Modify the state of the application's own notifications.
            lessons: Read the user's lesson information.
            classes: Read the user's timetable (including courses).
            exams: Read the user's examination information.
            scores: Read the user's examination results.
            students_list: Read the enrolled-student roster for a class (teacher).
            card_info: Read the user's campus-card information.
            card_transactions: Read the user's campus-card transaction records.
            write_card_info: Campus-card write operations — change the query password, report a card lost, top up from a bound bank card.
            income: Query the user's income information.
            create_jaccount: Create a jAccount account.
            edit_jaccount: Modify a jAccount account.
            net_service_info: Read all personal network-service information for a specified user.
            connect_wechat: Bind a jAccount to a WeChat account.
            connect_shmec: Bind a jAccount to a Shanghai Municipal Education Commission account.
            print: Self-service printing.
            connect_finance: Integrate with the finance appointment system.
            student_affairs: Retrieve student-affairs information.
            bus: Read campus-bus and inter-campus shuttle timetables and real-time information.
            calendar: Synchronise calendar information.
externalDocs:
  description: SJTU Developer Platform — Open API documentation
  url: https://developer.sjtu.edu.cn/api/overview.html