Interfolio Courses API
Retrieve details of Courses (Prefixes, Courses Taught, Attachments).
Retrieve details of Courses (Prefixes, Courses Taught, Attachments).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/interfolio:interfolio-courses-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Interfolio Courses API
version: 1.0.0
x-logo:
url: /images/logo_faculty180_intf.png
description: 'Operations tagged Courses across 2 of this provider''s published API definitions: faculty180-swagger.json, interfolio-faculty180-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://faculty180.interfolio.com
tags:
- name: Courses
description: Retrieve details of Courses (Prefixes, Courses Taught, Attachments).
paths:
/api.php/courseprefixes:
get:
tags:
- Courses
summary: Retrieves course prefixes
description: 'Description
Retrieves course prefixes. A count of prefixes will be returned if no parameters are specified.
Example URL(s)
https://faculty180.interfolio.com/api.php/courseprefixes
https://faculty180.interfolio.com/api.php/courseprefixes?data=detailed'
operationId: coursePrefix
parameters:
- name: unitid
in: query
description: "Multiple values can be sent as a comma separated list.,\n * When defined, filters for course with given course prefix.\n * When undefined, all prefixes are returned."
schema:
type: integer
- name: data
in: query
description: "Determines the extent of data that will be returned.\n * **Count:** Returns count of number of prefixes found. \n * **Summary:** Returns an array of strings containing a listing of all prefixes.\n * **Detailed:** Returns an array of values for all prefixes: prefix, prefix name, unit assigned to."
schema:
type: string
enum:
- count
- summary
- detailed
default: count
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: A list of course prefixes
content:
application/json:
example:
- prefix: BIS
name: Business Information Systems
unitassigned: 4
default:
description: an "unexpected" error
post:
tags:
- Courses
summary: Creates a course prefix
description: 'Description
Create a course prefix.
Example URL(s)
https://faculty180.interfolio.com/api.php/courseprefixes'
operationId: courseprefixesPost
responses:
'200':
description: Course Prefix inserted successfully.
'400':
description: "Possible errors include:\n * Unable to parse request data.\n * Required field <field> not provided.\n * Prefix <prefix> already exists.\n * Invalid <unit> provided."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/courseprefixesPost'
required: true
servers:
- url: https://faculty180.interfolio.com
/api.php/courses:
get:
tags:
- Courses
summary: Retrieves courses
description: 'Description
Retrieves courses. A count of courses will be returned if no parameters are specified.
Example URL(s)
https://faculty180.interfolio.com/api.php/courses
https://faculty180.interfolio.com/api.php/courses?data=detailed&extra=title,description'
operationId: coursesG
parameters:
- name: prefixes
in: query
description: "Multiple values can be sent as a comma separated list.\n * When defined, filters for course with given course prefix.\n * When undefined, all prefixes are returned."
style: form
explode: false
schema:
type: array
items:
type: string
- name: extra
in: query
description: "Multiple values can be sent as a comma separated list.\n * When included, additional details are indexed and included in the returned array."
schema:
type: array
items:
type: string
enum:
- title
- description
- credithours
- lecturehours
- labhours
- extrahours
- extrahourslabel
- courselevel
- cipcode
- name: data
in: query
description: "Determines the extent of data that will be returned.\n * **Count:** Returns count of number of courses found. \n * **Summary:** Returns an array of strings containing a subset of values for all courses.\n * **Detailed:** Returns an array of values for all courses: course prefix, course number, course designation, course title, description."
schema:
type: string
enum:
- count
- summary
- detailed
default: count
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: A list of courses
content:
application/json:
example:
- prefix: BIS
number: '330'
designation: A
title: Collaborative Technologies & Knowledge Management
description: Focusing on collaboration and group processes (cooperation, communication, coordination and coproduction).
default:
description: an "unexpected" error
post:
tags:
- Courses
summary: Creates courses
description: 'Description
Create a course.
Example URL(s)
https://faculty180.interfolio.com/api.php/courses'
operationId: coursesPost
responses:
'200':
description: Course inserted successfully.
'400':
description: "Possible errors include:\n * Unable to parse request data.\n * Required field <field> not provided.\n * Field <field> must be numeric.\n * Prefix <prefix> does not exist.\n * Course already exists for course <prefix> <coursenumber>.\n * Course level must be of: Undergraduate, Graduate, Professional."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/coursesPost'
required: true
servers:
- url: https://faculty180.interfolio.com
/api.php/coursestaught:
get:
tags:
- Courses
summary: Retrieves details regarding the course catalog
description: 'Description
Retrieves courses taught. A count of courses taught will be returned if no parameters are specified.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught
https://faculty180.interfolio.com/api.php/coursestaught?data=detailed&termid=2015/02'
operationId: coursesTaught
parameters:
- name: termid
in: query
description: "Value should match the termid of terms.\n * When defined, filter courses that were taught during the specified term.\n * When undefined, courses are not filtered by term."
schema:
type: string
- name: userlist
in: query
description: "Multiple values can be sent as a comma separated list.\n * Values should match the userid of users.\n * When defined, filter returned courses by the specified users.\n * When undefined, courses are not filtered by users"
style: form
explode: false
schema:
type: array
items:
type: string
- name: data
in: query
description: "Determines the extent of data that will be returned.\n * **Count:** Returns count of number of courses taught found. \n * **Summary:** Returns an array containing a subset of values for all courses taught.\n * **Detailed:** Returns an array of values for all courses taught."
schema:
type: string
enum:
- count
- summary
- detailed
default: count
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Retrieves details regarding the course catalog.
content:
application/json:
example:
- coursestaughtid: 150
userid: m123456
coursename: Bank Management
studentcredithours: '26'
enrollment: 13
teachingload: '2'
credithours: '2'
weight: '1'
instructionmode: Day Time Classes before 16:30
termid: 2015/02
coursenumber: '325'
courseprefix: AA
section: '1'
designation: A
default:
description: an "unexpected" error
post:
tags:
- Courses
summary: Creates courses taught
description: 'Description
Create a taught course.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught'
operationId: coursestaughtPost
responses:
'200':
description: Coursestaught inserted successfully.
'400':
description: "Possible errors include:\n * Unable to parse request data.\n * Required field <field> not provided.\n * Field <field> must be numeric.\n * Field <field> must be string.\n * Course <courseprefix> <coursenumber> <coursedesignation> does not exist.\n * TermID <termid> does not exist.\n * Course Taught already exists for userid: <userid> , courseprefix: <courseprefix>, coursenumber: <coursenumber>, coursedesignation: <coursedesignation>, section: <section>, termid: <termid>\n * Activity classification errors include:\n * Activity classification '<classificationid>' is not a valid classification.\n * Activity classification of '<classificationid>' does not accept the value of <values[n]>.\n * Activity classification cannot be locked by invalid faculty id of '<lockedby>'."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/coursestaughtPost'
required: true
delete:
tags:
- Courses
summary: Deletes courses taught in bulk by termid or userid
description: 'Description
Either termid, userlist, or both must be defined for this endpoint
* When deleting a course within a group
* If the course being deleted is the parent of the group
* And the number of courses grouped is > 2
* Then a new course is picked to become the parent of the group, and the activity classifications and file attachments associated with the course being deleted will be reassigned to the new parent course.
* And the number of courses grouped is Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught'
operationId: deletecoursestaught
parameters:
- name: termids
in: query
description: "Multiple values can be sent as a comma separated list.\n * Value should match the termid of terms.\n * When defined, courses taught are deleted by termid.\n * When undefined, courses are not filtered by term."
schema:
type: string
- name: userlist
in: query
description: "Multiple values can be sent as a comma separated list.\n * Value should match the termid of terms.\n * When defined, courses taught will be deleted for users in this list.\n * When undefined, courses taught deletions are not limited by users"
schema:
type: string
responses:
'200':
description: Success response is an empty response with an HTTP status of 204
default:
description: "If there are errors, nothing will be deleted. Possible errors with an HTTP status of 404 include:\n * TermID(s) do not exist: <termid1>, <termid2>, <termidn>\n * UserID(s) do not exist: <userid1>, <userid2>, <useridn>"
servers:
- url: https://faculty180.interfolio.com
/api.php/coursestaught/{coursestaughtid}:
get:
tags:
- Courses
summary: Retrieves details regarding a single item in the course catalog
description: 'Description
Retrieves a single course taught. A count of the course taught will be returned if no parameters are specified.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught/150
https://faculty180.interfolio.com/api.php/coursestaught/150?data=detailed&termid=2015/02'
operationId: coursestaughtid
parameters:
- name: coursestaughtid
in: path
description: Specify a coursestaughtid to retrieve details.
required: true
schema:
type: string
- name: termid
in: query
description: "Value should match the termid of terms.\n * When defined, filter courses that were taught during the specified term.\n * When undefined, courses are not filtered by term."
schema:
type: string
- name: userlist
in: query
description: "Multiple values can be sent as a comma separated list.\n * Values should match the userid of users.\n * When defined, filter returned courses by the specified users. \n * When undefined, courses are not filtered by users."
schema:
type: string
- name: data
in: query
description: "Determines the extent of data that will be returned.\n * **Count:** Returns value of 1 if desired resource exists or 0 otherwise. \n * **Summary:** Returns an array containing a subset of values for all courses taught.\n * **Detailed:** Returns an array of values for all courses taught."
schema:
type: string
enum:
- count
- summary
- detailed
default: count
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: A specific course taught.
content:
application/json:
example:
- coursestaughtid: 150
userid: m123456
coursename: Bank Management
studentcredithours: '26'
enrollment: 13
teachingload: '2'
credithours: '2'
weight: '1'
instructionmode: Day Time Classes before 16:30
termid: 2015/02
coursenumber: '325'
courseprefix: AA
section: '1'
designation: A
default:
description: an "unexpected" error
put:
tags:
- Courses
summary: Updates an individual course taught by the unique coursestaughtid of the item
description: 'Description
Update a taught course.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught/150'
operationId: coursestaughtidPut
parameters:
- name: coursestaughtid
in: path
description: Specify a coursestaughtid to update
required: true
schema:
type: integer
responses:
'200':
description: Coursestaught successfully updated.
'400':
description: "Possible errors include:\n * Unable to parse request data.\n * Field <field> must be numeric.\n * Field <field> must be string.\n * Userid <userid> does not exist.\n * TermID <termid> does not exist.\n * Course Taught already exists for userid: <userid>, courseprefix: <courseprefix> , coursenumber: <coursenumber>, coursedesignation: <coursedesignation>, section: <section>, termid: <termid>.\n * Activity classification errors include:\n * Activity classification '<classificationid>' is not a valid classification. \n * Activity classification of '<classificationid>' does not accept the value of <values[n]>. \n * Activity classification cannot be locked by invalid faculty id of '<lockedby>'."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/coursestaughtPut'
required: true
delete:
tags:
- Courses
summary: Deletes an individual coursestaught by the unique coursestaughtid of the item
description: 'Description
Delete a taught course.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught/150'
operationId: deleteApiPhpCoursestaughtByCoursestaughtid
parameters:
- name: coursestaughtid
in: path
description: Specify a coursestaughtid to delete
required: true
schema:
type: integer
responses:
'200':
description: Success response is an empty response with an HTTP status of 204
default:
description: "Possible errors include:\n * Coursestaughtid <coursestaughtid> does not exist.\n * Coursestaughtid <coursestaughtid> must be an integer.\n * Error deleting coursestaughtid <coursestaughtid>."
x-operation-id-source: normalized
x-operation-id-original: deletecoursestaught
servers:
- url: https://faculty180.interfolio.com
/api.php/coursestaught/{coursestaughtid}/attachments:
get:
tags:
- Courses
summary: Retrieves details regarding the attachments of courses taught
description: 'Description
Retrieves a single course taught. A count of the attachments will be returned if no parameters are specified.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught/150/attachments
https://faculty180.interfolio.com/api.php/coursestaught/150/attachments'
operationId: coursestaughtidattachments
parameters:
- name: coursestaughtid
in: path
description: Specify a coursestaughtid to retrieve an attachment
required: true
schema:
type: integer
- name: data
in: query
description: "Determines the extent of data that will be returned.\n * **Count:** Returns count of number of attachments found. \n * **Summary:** Returns an array of attachmentids for the taught course.\n * **Detailed:** Returns an array of attachments for the taught course."
schema:
type: string
enum:
- count
- summary
- detailed
default: count
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Retrieves details regarding the course catalog
content:
application/json:
example:
- attachmentid: 125
mimetype: application/vnd.openxmlformats-officedocument.wordprocessingml.document
filename: Syllabus BIS 330
filesize: 1000
default:
description: an "unexpected" error
content:
application/json:
example:
- cheese: 111
post:
tags:
- Courses
summary: Add an attachment to courses taught activities
description: 'Description
Create an attachment for a taught course.
Add attachments to courses taught activities by either sending the file to be attached or the attachment id from an existing attachment. Only one attachment can be made in a single POST request. When sending a file, the file should be sent using form name ''file''. The form name ''body'' should represent the JSON request for the file. If uploading a file and an attachmentid is included in the body JSON data, the attachmentid is ignored.
Example URL(s)
https://faculty180.interfolio.com/api.php/coursestaught/150/attachments'
operationId: coursesidattachmentsPOST
responses:
'200':
description: Attachment Successfully uploaded
'400':
description: "Possible errors include:\n * Unable to parse request data.\n * File should be uploaded with the proper form name (file).\n * Courses taught record does not exist. \n * Attachment does not exist."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/coursestaughtattachmentsPost'
required: true
servers:
- url: https://faculty180.interfolio.com
components:
schemas:
coursesPost:
required:
- prefix
- coursenumber
- credithours
- coursetitle
- courselevel
properties:
prefix:
type: string
coursenumber:
type: string
coursedesignation:
type: string
coursetitle:
type: string
credithours:
type: integer
lecturehours:
type: integer
labhours:
type: integer
extrahours:
type: integer
extrahourslabel:
type: string
courselevel:
type: string
description:
type: string
weight:
type: integer
type: object
coursestaughtPut:
properties:
userid:
type: string
coursename:
type: string
section:
type: string
termid:
type: string
enrollment:
type: integer
teachingload:
type: number
format: float
weight:
type: number
format: float
activityclassifications:
type: array
items:
properties:
classificationid:
type: integer
values:
type: array
items:
type: integer
collectionFormat: csv
lockedby:
type: string
type: object
type: object
coursestaughtattachmentsPost:
required:
- attachmentid
properties:
attachmentid:
type: integer
locked:
type: integer
type:
type: string
type: object
courseprefixesPost:
required:
- prefixabbrv
- name
- unitid
properties:
prefixabbrv:
type: string
name:
type: string
unitid:
type: string
type: object
coursestaughtPost:
required:
- userid
- courseprefix
- coursename
- coursenumber
- coursedesignation
- section
- termid
- enrollment
properties:
userid:
type: string
courseprefix:
type: string
coursename:
type: string
coursenumber:
type: string
coursedesignation:
type: string
section:
type: string
termid:
type: string
enrollment:
type: integer
teachingload:
type: number
format: float
credithours:
type: number
format: float
weight:
type: number
format: float
activityclassifications:
type: array
items:
properties:
classificationid:
type: integer
values:
type: array
items:
type: integer
collectionFormat: csv
lockedby:
type: string
type: object
type: object
parameters:
q:
name: q
in: query
description: Search term. Use '*' as wildcard.
schema:
type: string
limit:
name: limit
in: query
description: Limit query to specified number of records.
schema:
type: integer
offset:
name: offset
in: query
description: Used to offset queries that are segmented into chunks with limit.
schema:
type: integer
x-refined-from:
- faculty180-swagger.json
- interfolio-faculty180-openapi.yml