Georgia Tech SUMS REST API

The Shared User Management System (SUMS) REST API, operated by Georgia Tech at sums.gatech.edu to manage researcher access to shared lab instruments, training records, equipment-group queues and BuzzCard identity lookups. Georgia Tech publishes the Swagger 2.0 document itself at /SUMSAPI/rest/API/swagger.json (200, re-verified 2026-09-01); the OpenAPI here is converted from it and the pristine copy is kept in openapi/_original/. Built on the OutSystems low-code platform but hosted on Georgia Tech's own domain and describing Georgia Tech's own system. Most operations require an APIKey query parameter with no public issuance path.

Operations 14

POST /Add_User_By_Username #
GET /ContactForms #
POST /equipmentGroup_info #
POST /equipmentGroup_queueGroups #
POST /equipmentGroup_queueUsers #
POST /equipmentGroup_tools #
GET /GetToolStatus #
GET /GetTrainingReport #
GET /GetUserNameAndEmailByBuzzCardNumber #
GET /ToolCheckLoggedIn #
GET /TrainingInfo #
POST /UpdateUserTemplate #
GET /user_info #
GET /WhoLoggedIn #

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/sums"
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

georgia-institute-of-technology-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Georgia Tech SUMS REST API
  description: REST API published by Georgia Tech's SUMS system (Shared User Management System), built on the OutSystems low-code platform. Converted faithfully from the published Swagger 2.0 document at https://sums.gatech.edu/SUMSAPI/rest/API/swagger.json.
  version: '1'
  x-source: https://sums.gatech.edu/SUMSAPI/rest/API/swagger.json
  x-source-url: https://sums.gatech.edu/SUMSAPI/rest/API/swagger.json
  x-operator: institution
  x-method: searched
servers:
- url: https://sums.gatech.edu/SUMSAPI/rest/API
tags:
- name: API
paths:
  /Add_User_By_Username:
    post:
      tags:
      - API
      operationId: Add_User_By_Username
      parameters:
      - name: icalID
        in: query
        required: false
        schema:
          type: string
          default: ''
      - name: CreatorUsername
        in: query
        required: true
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
                default: ''
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/TextRecord'
  /ContactForms:
    get:
      tags:
      - API
      operationId: ContactForms
      parameters:
      - name: TrainingTestId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      - name: APIKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: StartDate
        in: query
        required: true
        schema:
          type: string
          format: date
          example: '2014-12-31'
      - name: EndDate
        in: query
        required: true
        schema:
          type: string
          format: date
          example: '2014-12-31'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QuestionAnswersStructure'
  /equipmentGroup_info:
    post:
      tags:
      - API
      operationId: equipmentGroup_info
      parameters:
      - name: equipmentGroupId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextLongIntegerTextTextRecord'
  /equipmentGroup_queueGroups:
    post:
      tags:
      - API
      operationId: equipmentGroup_queueGroups
      parameters:
      - name: authorization
        in: header
        required: true
        schema:
          type: string
          default: ''
      - name: DepartmentID
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      - name: userName
        in: query
        required: true
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LongIntegerBooleanTextRecord'
  /equipmentGroup_queueUsers:
    post:
      tags:
      - API
      operationId: equipmentGroup_queueUsers
      parameters:
      - name: authorization
        in: header
        required: true
        schema:
          type: string
          default: ''
      - name: DepartmentID
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      - name: userName
        in: query
        required: true
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BooleanBooleanIntegerTextIntegerTextIntegerTextRecord'
  /equipmentGroup_tools:
    post:
      tags:
      - API
      operationId: equipmentGroup_tools
      parameters:
      - name: DepartmentID
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      - name: authorization
        in: header
        required: true
        schema:
          type: string
          default: ''
      - name: userName
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: Keywords
        in: query
        required: false
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TextTextDepartmentIdentifierTextTextRecordListTextTextLocationsIdentifierTextTextPhoneNumberTextTextTextToolIdentifierTextBooleanTextTextRecordListRecord'
  /GetToolStatus:
    get:
      tags:
      - API
      operationId: GetToolStatus
      parameters:
      - name: ToolId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
                default: ''
          headers:
            ContentType:
              schema:
                type: string
                default: ''
  /GetTrainingReport:
    get:
      tags:
      - API
      operationId: GetTrainingReport
      parameters:
      - name: EGId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      - name: StartDate
        in: query
        required: true
        schema:
          type: string
          format: date
          example: '2014-12-31'
      - name: EndDate
        in: query
        required: true
        schema:
          type: string
          format: date
          example: '2014-12-31'
      - name: EGKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
                default: ''
          headers:
            ContentType:
              schema:
                type: string
                default: ''
  /GetUserNameAndEmailByBuzzCardNumber:
    get:
      tags:
      - API
      operationId: GetUserNameAndEmailByBuzzCardNumber
      parameters:
      - name: BuzzCardNumber
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailTextRecord'
  /ToolCheckLoggedIn:
    get:
      tags:
      - API
      operationId: ToolCheckLoggedIn
      parameters:
      - name: ToolId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
                default: ''
  /TrainingInfo:
    get:
      tags:
      - API
      operationId: TrainingInfo
      parameters:
      - name: EGKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: ToolId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TrainingInfoAPIStructure'
  /UpdateUserTemplate:
    post:
      tags:
      - API
      operationId: UpdateUserTemplate
      parameters:
      - name: EGKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: GTUsername
        in: query
        required: false
        schema:
          type: string
          default: ''
      - name: TemplateName
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: RemoveFromTemplate
        in: query
        required: false
        description: Input for removing user from template based off of GTUsername and TemplateName
        schema:
          type: boolean
          example: false
      responses:
        '200':
          description: ErrorMessage Text
          content:
            text/plain:
              schema:
                type: string
                default: ''
                description: ErrorMessage Text
          headers:
            isSuccess:
              schema:
                type: boolean
                x-example: false
                description: Success True/False
  /user_info:
    get:
      tags:
      - API
      operationId: user_info
      parameters:
      - name: userName
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: EGKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: EGId
        in: query
        required: true
        schema:
          type: integer
          format: int32
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            text/plain:
              schema:
                type: string
                default: ''
          headers:
            ContentType:
              schema:
                type: string
                default: ''
  /WhoLoggedIn:
    get:
      tags:
      - API
      operationId: WhoLoggedIn
      parameters:
      - name: ToolId
        in: query
        required: false
        schema:
          type: integer
          format: int32
          example: 0
      - name: DateTime
        in: query
        required: false
        schema:
          type: string
          format: date-time
          example: '2014-12-31T23:59:59.938Z'
      - name: EGKey
        in: query
        required: true
        schema:
          type: string
          default: ''
      - name: GTUsername
        in: query
        required: false
        schema:
          type: string
          default: ''
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegerWhoLoggedInListListRecord'
components:
  schemas:
    QuestionAnswersStructure:
      description: ''
      type: object
      properties:
        Responder:
          type: string
          default: ''
        DateTime:
          type: string
          format: date-time
          example: '2014-12-31T23:59:59.938Z'
        Responses:
          type: array
          items:
            $ref: '#/components/schemas/ResponsesStructure'
    IntegerWhoLoggedInListListRecord:
      description: ''
      type: object
      properties:
        WhoLoggedInListList:
          type: array
          items:
            $ref: '#/components/schemas/WhoLoggedInList'
        Count:
          type: integer
          example: 0
          format: int32
    TrainingInfoAPIStructure:
      description: ''
      type: object
      properties:
        Training_Module_Status:
          type: string
          default: ''
        Training_Module_Type:
          type: string
          default: ''
        TrainingDateTime:
          type: string
          default: ''
          description: For training session/checkoff, date/time marked atttended. For all other training types when the training attempt was made.
        Researcher:
          type: string
          default: ''
        Tool:
          type: string
          default: ''
        Training_Module_Name:
          type: string
          default: ''
        isHasAccessToTool:
          type: boolean
          example: false
    ResponsesStructure:
      description: ''
      type: object
      properties:
        Question:
          type: string
          default: ''
        Response:
          type: string
          default: ''
    WhoLoggedInList:
      description: ''
      type: object
      properties:
        EndDateTime:
          type: string
          format: date-time
          example: '2014-12-31T23:59:59.938Z'
        ToolName:
          type: string
          default: ''
        StartDateTime:
          type: string
          format: date-time
          example: '2014-12-31T23:59:59.938Z'
        ResearcherName:
          type: string
          default: ''
        ToolId:
          type: integer
          example: 0
          format: int32
    TextRecord:
      description: ''
      type: object
      properties:
        Username:
          type: string
          default: ''
    EmailTextRecord:
      description: ''
      type: object
      properties:
        UserName:
          type: string
          default: ''
        UserEmail:
          type: string
          default: ''
    TextRecord2:
      description: ''
      type: object
      properties:
        Text:
          type: string
          default: ''
    BooleanBooleanIntegerTextIntegerTextIntegerTextRecord:
      description: ''
      type: object
      properties:
        memberName:
          type: string
          default: ''
        memberUserName:
          type: string
          default: ''
        queueName:
          type: string
          default: ''
        hasBeenNotified:
          type: boolean
          example: false
        isGroup:
          type: boolean
          example: false
        memberMinutesRemaining:
          type: integer
          example: 0
          format: int32
        memberQueueLocation:
          type: integer
          example: 0
          format: int32
        queueGroupId:
          type: integer
          example: 0
          format: int32
    ? TextTextDepartmentIdentifierTextTextRecordListTextTextLocationsIdentifierTextTextPhoneNumberTextTextTextToolIdentifierTextBooleanTextTextRecordListRecord
    : description: ''
      type: object
      properties:
        equipmentGroupId:
          type: integer
          example: 0
          format: int32
        locationId:
          type: integer
          example: 0
          format: int32
        toolId:
          type: integer
          example: 0
          format: int32
        currentUserUserName:
          type: string
          default: ''
        equipmentGroupDescription:
          type: string
          default: ''
        equipmentGroupName:
          type: string
          default: ''
        locationAddress:
          type: string
          default: ''
        locationDescription:
          type: string
          default: ''
        locationManager:
          type: string
          default: ''
        locationName:
          type: string
          default: ''
        locationUrl:
          type: string
          default: ''
        toolCurrentUser:
          type: string
          default: ''
        toolDescription:
          type: string
          default: ''
        toolInUseSince:
          type: string
          default: ''
        toolName:
          type: string
          default: ''
        locationPhone:
          type: string
          default: ''
        toolIsOperational:
          type: boolean
          example: false
        HeroImageURLs:
          type: array
          items:
            $ref: '#/components/schemas/TextRecord2'
        Trainers:
          type: array
          items:
            $ref: '#/components/schemas/TextRecord2'
    TextLongIntegerTextTextRecord:
      description: ''
      type: object
      properties:
        equipmentGroupDescriptionHtml:
          type: string
          default: ''
        equipmentGroupName:
          type: string
          default: ''
        equipmentGroupShortName:
          type: string
          default: ''
        equipmentGroupId:
          type: integer
          example: 1234567891234567
          format: int64
    LongIntegerBooleanTextRecord:
      description: ''
      type: object
      properties:
        name:
          type: string
          default: ''
        id:
          type: integer
          example: 1234567891234567
          format: int64
        isGroup:
          type: boolean
          example: false