API - Syllabus Content

API - Syllabus Content


FYI: All lines within code blocks are numbered, regardless of whether there is more than one line of code provided.

An API is available to retrieve the content, permissions, and metadata related to syllabi. This is helpful for integrating Concourse with other systems to support applications like outcomes analysis, compliance reporting, and schedule notifications.

This article covers documentation related to the initial version (v0) of the syllabus content API.

Request

To retrieve syllabus JSON for a course syllabus, first see Retrieval under the API - General Usage article.

For the course_info operation, you can provide any course or external ID. You must be a system administrator to access any course JSON. For example:

  1. /api?version=0&operation=course_info&external_id=ACCT_101_SPR_2025

or

  1. /api?version=0&operation=course_info&course_id=3707

Requests can also be made programmatically by supplying your API key in the X-AUTH-KEY request header, providing your root domain, and appending either of the aforementioned paths.

Response

This API produces output in a JSON format. The nested structure of syllabus items lends itself nicely to this particular output. Below is a formatted excerpt of what you might find when retrieving JSON for a course.

  1. {  
  2.    "id":"307",
  3.    "title":"Managerial Accounting Template",
  4.    "subject":"ACCT",
  5.    "number":"221",
  6.    "instructor":null,
  7.    "delivery_method":"Online",
  8.    "session":null,
  9.    "year":null,
  10.    "credits":"3.0",
  11.    "start_date":1530417600,
  12.    "end_date":1561928400,
  13.    "timezone":"America/Chicago",
  14.    "last_modified_date":1564693200,
  15.    "is_template":true,
  16.    "is_structured":true,
  17.    "is_marked_for_deletion":false,
  18.    "external_id":"ACCT221_MASTER",
  19.    "department":{  
  20.       "name":"Accounting and Economics",
  21.       "external_id":"ACEC"
  22.    },
  23.    "campus":{  
  24.       "name":"Upper Springfield",
  25.       "external_id":"MAIN"
  26.    },
  27.    "sections":[ 
  28.    ],
  29.    "syllabus":{  
  30.       "id":"307",
  31.       "pretty_name":"Syllabus",
  32.       "fields":{  
  33.          "notes":null,
  34.          "comments":null
  35.       },
  36.       "is_locked":false,
  37.       "is_linked":false,
  38.       "children":[ 
  39.         {  
  40.           "id":"193",
  41.           "pretty_name":"Course Description",
  42.          "fields":{  
  43.             "description":"<p>A study of the fundamentals of managerial accounting with an emphasis on financial statement analysis, cost accounting measurement systems, cost-volume-profit analysis, managerial decision-making concepts, operational budgeting, standard cost systems and capital budgeting.</p>",
  44.             "requisites":"<p>ACCT 123</p>",
  45.             "notes":null,
  46.             "comments":null
  47.          },
  48.          "is_locked":false,
  49.          "is_linked":false,
  50.          "children":[ 
  51.          ],
  52.          "permissions":{  
  53.             "Assistants":"Edit",
  54.             "Developers":"Edit",
  55.             "Guests":"View",
  56.             "Instructors":"View",
  57.             "Managers":"Edit",
  58.             "Public":"View",
  59.             "Students":"View"
  60.          }
  61.       },
  62.       "permissions":{  
  63.          "Assistants":"Edit",
  64.          "Developers":"Edit",
  65.          "Guests":"View",
  66.          "Instructors":"Edit",
  67.          "Managers":"Edit",
  68.          "Public":"View",
  69.          "Students":"View"
  70.       }
  71.    }
  72. }

Syllabus Content

All syllabus content will be represented within a series of objects with name-value pairs that conform to the JavaScript Object Notation (JSON) standard. The pretty_name within the object is what is named in the system (e.g. Course Description), though not necessarily on the syllabus itself (e.g. Course Policy Entry).

All fields associated with the item will be represented, regardless of whether they have content entered. Further, since much of the entry on a syllabus is HTML, you will want to pay particular attention to the need for JSON escaping. For example <td colspan="1"> will be represented as <td colspan=\"1\"> since double quotes are replaced with \".

Additional attributes denote whether the item is locked or linked, and last whether the item has any children, which if so, will then start the object notation all over again.

Dates and times adhere to the Unix format.

Ordering

There is not a separate attribute denoting the sequencing of items on a syllabus. This is implicit to the order of the objects within the children array. Therefore, if you saw the following, you would expect that the Late Assignment policy is shown before the Add/Drop policy on the syllabus.

  1. ...
  2. "children":[ 
  3.       {
  4.          "id":2942,
  5.          "pretty_name":"Institutional Policy Entry",
  6.          "fields":{  
  7.             "type":"Late Assignment",
  8.             "details":"<p>Course Assignments, including discussion boards...</p>",
  9.             "notes":null,
  10.             "comments":null,
  11.          },
  12.          "is_locked":false,
  13.          "is_linked":true,
  14.          "children":[ ]
  15.       },
  16.       {
  17.          "id":3031,
  18.          "pretty_name":"Institutional Policy Entry",
  19.          "fields":{  
  20.             "type":"Add/Drop",
  21.             "details":"<p>The add/drop policy is such that...</p>",
  22.             "notes":null,
  23.             "comments":null,
  24.          },
  25.          "is_locked":false,
  26.          "is_linked":true,
  27.          "children":[ ]
  28.       }
  29.    ],
  30. ...

Permissions

Group permissions for the syllabus and all item categories are included with each item object. Please note that the JSON file itself will include all item content regardless of group permissions. Therefore, if applicable to your use case, you must interpret whether the group for the given item (or its parent or grandparent in the case of sub-items and sub-sub-items) would have access to the item and at what level.

Comments will also be included for each item. In the Concourse interface these are only visible to those editing a syllabus, so be sure to not include this information in applications for Groups where the Syllabus permission is set to View or None.

Metadata

Select course metadata name-value pairs are included in each JSON file. These are technically not part of the syllabus content itself, but are often helpful in understanding details about the course, such as the title, subject code and number, and in what part of the organization the course falls.


    • Related Articles

    • API - Syllabus Changes

      FYI: All lines within code blocks are numbered, regardless of whether there is more than one line of code provided. An API is available to retrieve statistics related to edits made to syllabi. This is helpful for integrating Concourse with other ...
    • Copy Syllabus Content

      Overview Copy, formerly known as "Import", allows you to copy content from one Concourse syllabus into one or many other syllabi. While the "Import" allowed you to copy information into your syllabus from another syllabus, Copy now gives you three ...
    • API - Syllabus Access

      FYI: All lines within code blocks are numbered, regardless of whether there is more than one line of code provided. An API is available to retrieve statistics related to views of syllabi. This is helpful for integrating Concourse with other systems ...
    • Using Feeds to Populate Syllabus Item Content

      Item-based feeds with syllabus content can be created and run to populate syllabus content in Concourse. Clients typically do this on an infrequent (e.g. once a year) basis to migrate from an existing syllabus or related solution, to populate a large ...
    • API - General Usage

      FYI: All lines within code blocks are numbered, regardless of whether there is more than one line of code provided. An API is available to retrieve certain data stored by Concourse. This article covers documentation related to the initial version ...