Enrollment

Enrollments associate users to courses or groups.

Fields

FieldNameDescriptionTypeRequired
id Enrollment ID The Schoology assigned ID of the enrollment record. integer no
uid User ID The Schoology ID of the user. integer yes
admin Admin Whether this user is an administrator (e.g. teacher) as opposed to a regular member (e.g. student) {0,1} yes
status Status The current status of the enrollment.
  • 1: Active
  • 2: Expired (i.e. past course)
  • 3: Invite pending
  • 4: Request Pending
  • 5: Archived (Course specific status members can be placed in before being fully unenrolled)
{1-5} yes

Operations

The operations below are available for the following realms (replace [realm] with the appropriate realm and ID):

Realm Path
Course Sections sections/{id}
Groups groups/{id}

create

Create an enrollment

Path

POST https://api.schoology.com/v1/[realm]/enrollments

Content

An object containing enrollment fields

JSON
{
    "uid": "2461632",
    "admin": "0",
    "status": "1"
}
XML
<body>
  <uid>2461632</uid>
  <admin>0</admin>
  <status>1</status>
</body>
Return

An object containing enrollment fields

JSON
{
    "id": "44783136",
    "uid": "48289",
    "school_uid": "s1",
    "name_title": "",
    "name_title_show": "0",
    "name_first": "James",
    "name_first_preferred": "",
    "name_middle": "",
    "name_middle_show": "0",
    "name_last": "Howlett",
    "name_display": "James Howlett",
    "admin": 0,
    "status": 1,
    "picture_url": "http:\/\/..\/pictures\/default_user.gif",
    "links": {
        "self": "http:\/\/...\/enrollments\/44783136"
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <id>44783136</id>
  <uid>48289</uid>
  <school_uid>s1</school_uid>
  <name_title />
  <name_title_show>0</name_title_show>
  <name_first>James</name_first>
  <name_first_preferred />
  <name_middle />
  <name_middle_show>0</name_middle_show>
  <name_last>Howlett</name_last>
  <name_display>James Howlett</name_display>
  <admin>0</admin>
  <status>1</status>
  <picture_url>http://.../default_user.gif</picture_url>
  <links>
    <self>http://.../44783136</self>
  </links>
</result>

create

Create an enrollment with an access code

Path

POST https://api.schoology.com/v1/[realm]/accesscode

Content

An object containing an access code. The object will look like {"access_code" : "VCVKF-4MJG9"}.

JSON
{
    "access_code": "VCVKF-4MJG9"
}
XML
<body>
  <access_code>VCVKF-4MJG9</access_code>
</body>
Return

An object containing enrollment fields

JSON
{
    "id": "54179017",
    "uid": "45552",
    "school_uid": "",
    "name_title": "",
    "name_title_show": "0",
    "name_first": "Mr.",
    "name_first_preferred": "",
    "name_middle": "",
    "name_middle_show": "0",
    "name_last": "Strickland",
    "name_display": "Mr. Strickland",
    "admin": 0,
    "status": "1",
    "picture_url": "http:\/\/...\/default_user.gif"
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <id>54179017</id>
  <uid>45552</uid>
  <school_uid />
  <name_title />
  <name_title_show>0</name_title_show>
  <name_first>Mr.</name_first>
  <name_first_preferred />
  <name_middle />
  <name_middle_show>0</name_middle_show>
  <name_last>Strickland</name_last>
  <name_display>Mr. Strickland</name_display>
  <admin>0</admin>
  <status>1</status>
  <picture_url>http://.../default_user.gif</picture_url>
</result>

bulk create - single realm

Create multiple enrollments at a time in one realm

Path

POST https://api.schoology.com/v1/[realm]/enrollments

Content

Multiple enrollments can be created at a time (up to 50) by wrapping your response in 'enrollments', with enrollment fields wrapped in 'enrollment'.

JSON

{
    "enrollments": {
        "enrollment": [
            {
                "uid": "2461632",
                "admin": "0",
                "status": "1"
            },
            {
                "uid": "23453322",
                "admin": "0",
                "status": "1"
            }
        ]
    }
}
XML
<body>
  <enrollments>
    <enrollment>
      <uid>2461632</uid>
      <admin>0</admin>
      <status>1</status>
    </enrollment>
    <enrollment>
      <uid>23453322</uid>
      <admin>0</admin>
      <status>1</status>
    </enrollment>
  </enrollments>
</body>
Return

The API endpoint (location) of each enrollment created, or an error message if there was a problem creating the enrollment.

JSON
{
    "enrollments": {
        "enrollment": [
            {
                "response_code": 200,
                "id": "54302505",
                "uid": 248101,
                "location": "http:\/\/...\/54302505"
            },
            {
                "response_code": 200,
                "id": "54302521",
                "uid": 48489,
                "location": "http:\/\/...\/54302521"
            }
        ]
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <enrollments>
    <enrollment>
      <response_code>200</response_code>
      <id>54302505</id>
      <uid>248101</uid>
      <location>http://.../54302505</location>
    </enrollment>
    <enrollment>
      <response_code>200</response_code>
      <id>54302521</id>
      <uid>48489</uid>
      <location>http://.../54302521</location>
    </enrollment>
  </enrollments>
</result>

bulk create - multi realm

Create multiple enrollments across multiple realms at one time

Path

POST https://api.schoology.com/v1/enrollments

Content

Multiple enrollments can be created at a time (up to 50) by wrapping your response in 'enrollments', with enrollment fields wrapped in 'enrollment'. Along with the base enrollment fields include realm [group, section] and group_id or section_id in the enrollment objects. Each enrollment object would look something like The whole body will look something like:

JSON

{
  "enrollments":{
    "enrollment":[
      {
        "realm" : "section",
        "section_id" : 12345,
        "status" : 1,
        "admin" : 1,
        "uid" : 87942
      },
      {
        "realm" : "section",
        "section_id" : 98762,
        "status" : 1,
        "admin" : 0,
        "uid" : 87942
      },
      {
        "realm" : "group",
        "group_id" : 65371,
        "status" : 1,
        "admin" : 1,
        "uid" : 12873
      }
    ]
  }
}
XML
<body>
  <enrollments>
    <enrollment>
      <realm>section</realm>
      <section_id>12345</section_id>
      <status>1</status>
      <admin>1</admin>
      <uid>87942</uid>
    </enrollment>
    <enrollment>
      <realm>section</realm>
      <section_id>98762</section_id>
      <status>1</status>
      <admin>0</admin>
      <uid>87942</uid>
    </enrollment>
    <enrollment>
      <realm>group</realm>
      <group_id>65371</group_id>
      <status>1</status>
      <admin>1</admin>
      <uid>12873</uid>
    </enrollment>
  </enrollments>
</body>
This endpoint does support the update_existing flag.
Return

The API endpoint (location) of each enrollment created, or an error message if there was a problem creating the enrollment.

JSON
{
    "enrollments": {
        "enrollment": [
            {
                "response_code": 200,
                "location": "http:\/\/...\/54302505",
                "uid": 248101,
                "id": "54302505",
                "realm": "section",
                "realm_id": "3719526"
            },
            {
                "response_code": 200,
                "location": "http:\/\/...\/44783161",
                "uid": 48489,
                "id": "44783161",
                "realm": "section",
                "realm_id": "4318461"
            }
        ]
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <enrollments>
    <enrollment>
      <response_code>200</response_code>
      <location>http://.../54302505</location>
      <uid>248101</uid>
      <id>54302505</id>
      <realm>section</realm>
      <realm_id>3719526</realm_id>
    </enrollment>
    <enrollment>
      <response_code>200</response_code>
      <location>http://.../44783161</location>
      <uid>48489</uid>
      <id>44783161</id>
      <realm>section</realm>
      <realm_id>4318461</realm_id>
    </enrollment>
  </enrollments>
</result>

course enrollment import

Create and update many course enrollments at a time by grading_period_id, course_code, section_code, and user unique_id. This this endpoint does not require you to know the Schoology IDs for each course, section, or user, this can be used for easy synchronization. You are required, however, to pass a Schoology grading period ID (or multiple, comma-separated IDs). For example, if you pass 5,6,7 as a grading_period_id, you will be importing into sections that span all three grading periods for the given course_code/section_code combination. This endpoint is only available for courses (and not for groups).


Path

POST https://api.schoology.com/v1/enrollments/import/course/[grading_period_id]

Content

Multiple enrollments can be created at a time (up to 50), and require a course course_code, section section_code, and user school_uid. You can also pass admin to mark an enrollment as a teacher, or delete to remove an enrollment.

JSON

{
    "enrollments": {
        "enrollment": [
            {
                "course_code": "E200",
                "section_code": "34",
                "school_uid": "test1234",
                "admin": "1"
            },
            {
                "course_code": "E200",
                "section_code": "34",
                "school_uid": "test456",
                "admin": "0"
            }
        ]
    }
}
XML
<body>
  <enrollments>
    <enrollment>
      <course_code>E200</course_code>
      <section_code>34</section_code>
      <school_uid>test1234</school_uid>
      <admin>1</admin>
    </enrollment>
    <enrollment>
      <course_code>E200</course_code>
      <section_code>34</section_code>
      <school_uid>test456</school_uid>
      <admin>1</admin>
    </enrollment>
  </enrollments>
</body>
Return

The API endpoint (location) of each enrollment created, or an error message if there was a problem creating the enrollment.

JSON
{
    "enrollments": {
        "enrollment": [
            {
                "response_code": 200,
                "location": "http:\/\/...\/54302505",
                "school_uid": "s2",
                "course_code": "CC106",
                "section_code": "SC101"
            },
            {
                "response_code": 200,
                "location": "http:\/\/...\/54302521",
                "school_uid": "s3",
                "course_code": "CC106",
                "section_code": "SC101"
            }
        ]
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <enrollments>
    <enrollment>
      <response_code>200</response_code>
      <location>http://.../enrollments/54302505</location>
      <school_uid>s2</school_uid>
      <course_code>CC106</course_code>
      <section_code>SC101</section_code>
    </enrollment>
    <enrollment>
      <response_code>200</response_code>
      <location>http://.../enrollments/54302521</location>
      <school_uid>s3</school_uid>
      <course_code>CC106</course_code>
      <section_code>SC101</section_code>
    </enrollment>
  </enrollments>
</result>

course enrollment import alternative

Create and update multiple course enrollments using section_school_code and user unique_id. This is similar to the course enrollment import above with the exception of not having to provide the grading_period_id. Instead, unique section_school_code values are used to determine the sections for each enrollment.

Path

POST https://api.schoology.com/v1/enrollments/import/course

Content

Multiple enrollments can be created at a time (up to 50), and require a course section section_school_code and user school_uid. You can also pass admin to mark an enrollment as a teacher, or delete to remove an enrollment.

JSON

{
    "enrollments": {
        "enrollment": [
            {
                "section_school_code": "23",
                "school_uid": "test1234",
                "admin": "1"
            },
            {
                "section_school_code": "344",
                "school_uid": "test456",
                "delete": "1"
            }
        ]
    }
}
XML
<body>
  <enrollments>
    <enrollment>
      <section_school_code>23</section_school_code>
      <school_uid>test1234</school_uid>
      <admin>1</admin>
    </enrollment>
    <enrollment>
      <section_school_code>344</section_school_code>
      <school_uid>test456</school_uid>
      <delete>1</delete>
    </enrollment>
  </enrollments>
</body>
Return

The API endpoint (location) of each enrollment created, or an error message if there was a problem creating the enrollment.

JSON
{
    "enrollments": {
        "enrollment": [
            {
                "response_code": 200,
                "location": "http:\/\/...\/54302505",
                "school_uid": "s2",
                "section_school_code": "SC111",
                "course_code": "CC106",
                "section_code": ""
            },
            {
                "response_code": 200,
                "location": "http:\/\/...\/54302521",
                "school_uid": "s3",
                "section_school_code": "SC111",
                "course_code": "CC106",
                "section_code": ""
            }
        ]
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <enrollments>
    <enrollment>
      <response_code>200</response_code>
      <location>http://...//54302505</location>
      <school_uid>s2</school_uid>
      <section_school_code>SC111</section_school_code>
      <course_code>CC106</course_code>
      <section_code />
    </enrollment>
    <enrollment>
      <response_code>200</response_code>
      <location>http://.../54302521</location>
      <school_uid>s3</school_uid>
      <section_school_code>SC111</section_school_code>
      <course_code>CC106</course_code>
      <section_code />
    </enrollment>
  </enrollments>
</result>

list

View a list of enrollments (paged). The following query strings can (optionally) be appended to the path to filter results:

  • uid: filter enrollments for a given user
  • enrollment_status: filter enrollments for a given enrollment status (1-5)
  • picture_size: specify size of profile picture returned with this user. Possible values: ['big', 'reg', 'sm', 'tiny']

For each of the above query strings, you can specify a coma delimited list of values. Retrieving this list without specifying the above parameters will return a paged list of all enrollments in the given realm.

Path

GET https://api.schoology.com/v1/[realm]/enrollments

Content

none

Return

A collection of enrollment objects, each one containing enrollment fields

JSON
{
    "enrollment": [
        {
            "id": "43807916",
            "uid": "45552",
            "school_uid": "",
            "name_title": "",
            "name_title_show": "0",
            "name_first": "Mr.",
            "name_first_preferred": "",
            "name_middle": "",
            "name_middle_show": "0",
            "name_last": "Strickland",
            "name_display": "Mr. Strickland",
            "admin": 1,
            "status": "1",
            "picture_url": "http:\/\/..\/images\/avatar1.png",
            "links": {
                "self": "http:\/\/...enrollments\/43807916"
            }
        },
        {
            "id": "44783136",
            "uid": "48289",
            "school_uid": "s1",
            "name_title": "",
            "name_title_show": "0",
            "name_first": "James",
            "name_first_preferred": "",
            "name_middle": "",
            "name_middle_show": "0",
            "name_last": "Howlett",
            "name_display": "James Howlett",
            "admin": 0,
            "status": "1",
            "picture_url": "http:\/\/...\/default_user.gif",
            "links": {
                "self": "http:\/\/...\/enrollments\/44783136"
            }
        }
    ],
    "total": "2",
    "links": {
        "self": "http:\/\/...enrollment_status=1&start=0&limit=20"
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <enrollment>
    <id>43807916</id>
    <uid>45552</uid>
    <school_uid />
    <name_title />
    <name_title_show>0</name_title_show>
    <name_first>Mr.</name_first>
    <name_first_preferred />
    <name_middle />
    <name_middle_show>0</name_middle_show>
    <name_last>Strickland</name_last>
    <name_display>Mr. Strickland</name_display>
    <admin>1</admin>
    <status>1</status>
    <picture_url>http://...//images/avatar1.png</picture_url>
    <links>
      <self>http://.../enrollments/43807916</self>
    </links>
  </enrollment>
  <enrollment>
    <id>44783136</id>
    <uid>48289</uid>
    <school_uid>s1</school_uid>
    <name_title />
    <name_title_show>0</name_title_show>
    <name_first>James</name_first>
    <name_first_preferred />
    <name_middle />
    <name_middle_show>0</name_middle_show>
    <name_last>Howlett</name_last>
    <name_display>James Howlett</name_display>
    <admin>0</admin>
    <status>1</status>
    <picture_url>http://.../default_user.gif</picture_url>
    <links>
      <self>http://.../v1/sections/3719526/enrollments/44783136</self>
    </links>
  </enrollment>
  <total>2</total>
  <links>
    <self>http://...enrollment_status=1&amp;start=0&amp;limit=20</self>
  </links>
</result>

view

View a specified enrollment

Path

GET https://api.schoology.com/v1/[realm]/enrollments/{id}

Content

none

Return

An object containing enrollment fields

JSON
{
    "id": "44783136",
    "uid": "48289",
    "school_uid": "s1",
    "name_title": "",
    "name_title_show": "0",
    "name_first": "James",
    "name_first_preferred": "",
    "name_middle": "",
    "name_middle_show": "0",
    "name_last": "Howlett",
    "name_display": "James Howlett",
    "admin": 0,
    "status": "1",
    "picture_url": "http:\/\/..\/default_user.gif"
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <id>44783136</id>
  <uid>48289</uid>
  <school_uid>s1</school_uid>
  <name_title />
  <name_title_show>0</name_title_show>
  <name_first>James</name_first>
  <name_first_preferred />
  <name_middle />
  <name_middle_show>0</name_middle_show>
  <name_last>Howlett</name_last>
  <name_display>James Howlett</name_display>
  <admin>0</admin>
  <status>1</status>
  <picture_url>http://.../default_user.gif</picture_url>
</result>

update

Modify an enrollment

Path

PUT https://api.schoology.com/v1/[realm]/enrollments/{id}

Content

An object containing enrollment fields

JSON
{
    "uid": "2461632",
    "status": "2"
}
XML
<body>
  <uid>2461632</uid>
  <status>2</status>
</body>
Return

none

bulk update

Modify multiple enrollments

Path

PUT https://api.schoology.com/v1/[realm]/enrollments

Content

Up to 50 enrollments can be updated at a time by wrapping your response in 'enrollments', with enrollment fields wrapped in 'enrollment'.

JSON

{
    "enrollments": {
        "enrollment": [
            {
                "id": "2461632",
                "status": "2"
            },
            {
                "id": "23453322",
                "status": "2"
            }
        ]
    }
}
XML
<body>
  <enrollments>
    <enrollment>
      <uid>2461632</uid>
      <status>2</status>
    </enrollment>
    <enrollment>
      <uid>23453322</uid>
      <status>2</status>
    </enrollment>
  </enrollments>
</body>
Return

The schoology ID of each enrollment updated, or an error message if there was a problem creating the enrollment.

JSON
{
    "enrollments": {
        "enrollment": [
            {
                "response_code": 200,
                "id": "44783151"
            },
            {
                "response_code": 200,
                "id": "44783156"
            }
        ]
    }
}
XML
<?xml version="1.0" encoding="utf-8" ?>
<result>
    <enrollments>
        <enrollment>
            <response_code>200</response_code>
            <id>44783151</id>
        </enrollment>
        <enrollment>
            <response_code>200</response_code>
            <id>44783156</id>
        </enrollment>
    </enrollments>
</result>

delete

Delete an enrollment (cannot be undone)

Path

DELETE https://api.schoology.com/v1/[realm]/enrollments/{id}

Content

none

Return

none

bulk delete

Delete up to 50 enrollments. Comma-separated Schoology IDs are passed in the query string with the enrollment_ids parameter.

Path

DELETE https://api.schoology.com/v1/enrollments?enrollment_ids=[comma-separated-enrollment-ids]

Content

none

Return

none