Development documentation Help

Course registrations

This API is designed to manage user registrations for courses. It makes it possible to get all existing registrations within the administrator roles, change their status, and create new ones. API does not provide such extensive registration administration capabilities as are available to administrators on the portal. Registrations can be:

  1. Created in “Not Started” status

  2. Transferred to “Completed” status.

  3. Transferred to “Approved” status.

  4. Transferred to “Withdrawn” status.

The API will not support any kind of event-based courses (online or in-person), because the conference format is replacing them and API already supports conferences. Also attempts to create registration for a course that does not require registration (like Article) will be rejected.

Permissions

Roles

Web service accounts must have “Course attendance manager” or “Batch registration manager” roles to have access to the API.

Course filtering logic

The courses that will be filtered to show registrations for them are determined by the groups for which the Webservice account has the necessary roles. Only registrations for courses from these groups and subgroups can be displayed.

User filtering logic

The users that will be filtered to show registrations for them are determined by the groups for which the Webservice account has the necessary roles. Only user registrations from these groups and subgroups can be displayed.

Identification flexibility

In order to simplify working with the API and enable external systems to create registrations based on the data stored in them, this API supports various ways to identify users and courses in KMI LMS through API calls.

To indicate for which course registration needs to be created one of the following parameters can be passed:

  • courseId (KMI LMS’s ID)

  • courseName (Name of the course in KMI LMS)

  • courseExternalId (Course provider number)

The operation will be successful if KMI LMS finds one and only one course that satisfies one of the parameters in order of priority as well as if the necessary access to such a course exists. To indicate for which user registration needs to be created one of the following parameters can be passed:

  • userId (KMI LMS’s ID)

  • userExternalId (ID previously provided by an external system through the User API call)

  • email (User email)

The operation will be successful if KMI LMS finds one and only one user that satisfies one of the parameters in order of priority as well as if the necessary access to such a user exists.

API Schema

Represents a course registration entity in the LMS.

CourseRegistration

/registrations/ GET

GET method/registrations/

Get course registrations. Returns a list of active registrations in any status for courses that satisfy the filtering criteria. Additionally, the 'course_id' or/and 'user_id' filters can be passed to limit responses for showing registrations for one specified course and/or user only.

Request parameters

Responses

[ { "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 } ]
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/ POST

POST method/registrations/

Register a user for a specified course. Only active users can be registered for active courses already published in LMS. The service account should have the proper permissions on the course and the user account.An email (PatternId=222) will be sent to the user in case of successful registration.

Request parameters

{ "courseId": 2000, "courseName": "Ford - Achieving Boardroom Excellence", "userId": 1000, "userExternalId": "123456", "userEmail": "breathtaking.lms_user@gmail.com", "externalId": "a123456" }

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/external/{registration_external_id}/ GET

GET method/registrations/external/{registration_external_id}/

Returns a single registration by External ID. The service account should have the proper permissions on the course and the user account.

Request parameters

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Not registered for this course." }
{ "detail": "Too many requests" }

/registrations/external/{registration_external_id}/approve/ POST

POST method/registrations/external/{registration_external_id}/approve/

Request parameters

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/external/{registration_external_id}/complete/ POST

POST method/registrations/external/{registration_external_id}/complete/

Request parameters

{ "score": 42, "success": "true" }

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/external/{registration_external_id}/withdraw/ POST

POST method/registrations/external/{registration_external_id}/withdraw/

Withdraws the specified registration by External ID. The service account should have the proper permissions on the course and the user account.

Request parameters

Responses

{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/{id}/ GET

GET method/registrations/{id}/

Returns a single registration by KMI LMS ID. The service account should have the proper permissions on the course and the user account.

Request parameters

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Not registered for this course." }
{ "detail": "Too many requests" }

/registrations/{id}/approve/ POST

POST method/registrations/{id}/approve/

Request parameters

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/{id}/complete/ POST

POST method/registrations/{id}/complete/

Request parameters

{ "score": 42, "success": "true" }

Responses

{ "id": 100500, "courseId": 58, "courseName": "Ford - Achieving Boardroom Excellence", "createdDate": "2024-05-24T14:58:41Z", "registrationDate": "2025-05-24T14:58:41Z", "completionDate": "2018-07-24T14:58:41Z", "statusName": "Completed", "externalId": "a123456", "userExternalId": "123456", "userId": 123456.0, "score": 100.0 }
{ "detail": "Invalid token." }
{ "detail": "Forbidden" }
{ "detail": "Too many requests" }

/registrations/{id}/withdraw/ POST

POST method/registrations/{id}/withdraw/

Request parameters

Responses

/users/ GET

GET method/users/

Request parameters

Responses

[ { "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" } ]

/users/ POST

POST method/users/

Request parameters

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Responses

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Read a specific user information by external identifier.

GET method/users/external_id/{external_id}/

Read a specific user information by external identifier.

Request parameters

Responses

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Update an existing user account by external identifier.

POST method/users/external_id/{external_id}/

Update an existing user account by external identifier.

Request parameters

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "lastName": "Smith", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Responses

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

This method marks the user account as deleted.

DELETE method/users/external_id/{external_id}/

This method marks the user account as deleted.

Request parameters

Responses

Read a specific user information by KMI LMSs identifier.

GET method/users/{id}/

Read a specific user information by KMI LMSs identifier.

Request parameters

Responses

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Update an existing user account by KMI LMSs identifier.

POST method/users/{id}/

Update an existing user account by KMI LMSs identifier.

Request parameters

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "lastName": "Smith", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

Responses

{ "address": "1600 Pennsylvania Ave NW", "address2": "app 17", "city": "Washington", "country": "US", "createdDate": "2018-07-24T14:58:41Z", "email": "email@address.com", "expirationDate": "2018-07-24T14:58:41Z", "externalId": "0B77D17A_9D14", "firstName": "John", "id": 58, "lastName": "Smith", "loginName": "miles_davis", "ovFormWithInput12": "Text value for "input" parameter", "state": "DC", "updatedDate": "2018-07-24T14:58:41Z", "workSettingsOtherSpecify": "Text value for "Other (specify)" parameter", "workSettingsPrivateIndustryExcept": "false", "zip": "20500" }

This method marks the user account as deleted.

DELETE method/users/{id}/

This method marks the user account as deleted.

Request parameters

Responses

Last modified: 06 January 2025