Common API Tasks

  • Updated

Here are some common tasks you can do with the Skilljar API:

Add a user to a private domain

First, list your domains and get the Domain's name:

HTTP GET: /v1/domains

Result:
{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": "abcdefg123456",
            "name": "learn.example.com",
            "catalog_title": "All Courses",
            "private": true,
            "access_code_message_html": "Please have an admin add you to the domain, then log in.",
            "marketing_message": null
        }
    ]
}

In this example, we will use learn.example.com as our domain name.

Next, add the user to the domain via an HTTP POST to the DomainUser endpoint:

HTTP POST: /v1/domains/learn.example.com/users
Content-Type: application/json

Body:
{
    "user": {
        "email": "bob@test.com",
        "first_name": "Bob",
        "last_name": "User"
    }
}

Response:
HTTP 201 Created
{
    "user": {
        "id": "jklmnop987654",
        "email": "bob@test.com",
        "first_name": "Bob",
        "last_name": "User"
    },
    "active": true,
    "marketing_optin": null,
    "expires_at": null
}

Bob User now has an active membership in learn.example.com If you're not implementing SSO - then Bob User will need to set a password via the "Forgot Password" link if he hasn't already logged in previously.

Enroll a user in a course

Looking at the previous example, you can see that Bob User's user_id is jklmnop987654. Let's use that to enroll him in a course on learn.example.com.

First, we need to get the published_course_id of the course in which we wish to enroll the user:

HTTP GET: /v1/domains/learn.example.com/published-courses
Accept: application/json

Response:
{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": "abcdefg123456",
            "slug": "example-course",
            "live": true,
"course": {
"id": "cdefghi3456789",
"title": "Example Title"
} } ] }

The published_course_id in this example is abcdefg123456.

Now that we know Bob User's user_id and the published_course_id, let's create an enrollment for Bob in the Example Course:

HTTP POST: /v1/domains/learn.example.com/published-courses/abcdefg123456/enrollments

Content-Type: application/json Body: {
"user": {
"id": "jklmnop987654"
}, "expires_at": "2015-03-20T07:07:01+00:00", "active": true } Response: HTTP 201 Created { "id": "defghijk123456",
"user": {
"id": "jklmnop987654",
"email": "bob@test.com",
"first_name": "Bob",
"last_name": "User"
},
"enrolled_at": "2015-02-20T07:07:01+00:00",
"expires_at": "2015-03-20T07:07:01+00:00",
"active": true
}

We've now created an enrollment for Bob that expires one month after we created it. You may omit the expires_at parameter to create an enrollment that does not expire. You can also omit the active parameter as it defaults to true.

Revoke user access to a course

There are times when you may want to programmatically unenroll a user from a course. For example, if you are managing an external payment system, and the user requests a refund, or has created a subscription system, and the user's subscription expires.

First, let's list the users in our example course (using IDs from the previous examples):

HTTP GET: /v1/domains/learn.example.com/published-courses/abcdefg123456/enrollments

Response:
{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": "defghijk123456",
            "user": {
                "id": "jklmnop987654",
                "email": "bob@test.com",
                "first_name": "Bob",
                "last_name": "User"
            },
            "enrolled_at": "2015-02-20T07:07:01+00:00",
            "expires_at": "2015-03-20T07:07:01+00:00",
            "active": true
        },
        {
            "id": "lmnopqrs123456",
            "user": {
                "id": "cdefghi567890",
                "email": "jane@example.com",
                "first_name": "Jane",
                "last_name": "Doe"
            },
            "enrolled_at": "2014-11-18T05:32:27+00:00",
            "expires_at": null,
            "active": true
        }
    ]
}

I see that I have 2 users enrolled in this course; Bob, who we enrolled previously, and Jane Doe who was already enrolled. Let's deactivate Jane's enrollment.

Her enrollment_id is lmnopqrs123456. The easiest way to deactivate an enrollment is to set the active flag to false:

HTTP PUT: /v1/domains/learn.example.com/public-courses/abcdefg123456/enrollments/lmnopqrs123456

Body:
{
    "active": false
}

Response:
{
    "id": "lmnopqrs123456",
    "user": {
        "id": "cdefghi567890",
        "email": "jane@example.com",
        "first_name": "Jane",
        "last_name": "Doe"
    },
    "enrolled_at": "2014-11-18T05:32:27+00:00",
    "expires_at": null,
    "active": false
}

 

Was this article helpful?

0 out of 0 found this helpful