Api

Ai

Overview:
Handles calling AI features, currently from the editor plugin.

APIDescription
POST restapi/personal/ai/v1

Runs the AI prompt for the given feature. It uses Daisy API.

ApplicationInitialisationCacheWarmUp

Overview:
Controller to help initialise the cache on start up. The cache is called from Web.config. It is triggered on application start-up /'iisreset' and application recycle. See tag 'applicationInitialization' in web.config.

APIDescription
GET restapi/warmup/cache/extensionmodule/v1

Load extension modules into memory cache on start-up.

GET restapi/warmup/cache/learningtool/v1

Load learning tools into memory cache on start-up.

GET restapi/warmup/cache/plugin/v1

Load plugins into memory cache on start-up.

AssessmentRecord

Overview:
End point for Assessmentrecord API

APIDescription
GET restapi/personal/course/{courseId}/assessmentrecord/assessmentrecordelements/v1?termId={termId}

Gets the elements for the gradebook

GET restapi/personal/course/{courseId}/assessmentrecord/assessmentrecordpersonitems/v1?termId={termId}&paging.PageIndex={paging.PageIndex}&paging.PageSize={paging.PageSize}&searchText={searchText}&groupIds[0]={groupIds[0]}&groupIds[1]={groupIds[1]}&includePersonsNotInAnyGroups={includePersonsNotInAnyGroups}

Gets the persons with details and assessment values

DELETE restapi/personal/course/{courseId}/assessmentrecord/personassessmentgrade/v1?gradebookItemId={gradebookItemId}&personId={personId}

Delete a person assessment for an assessment record item

PUT restapi/personal/course/{courseId}/assessmentrecord/personassessmentgrade/v1?gradebookItemId={gradebookItemId}&personId={personId}&assessmentId={assessmentId}&assessmentItemId={assessmentItemId}

Save a person assessment for an assessment record item

PUT restapi/personal/course/{courseId}/assessmentrecord/personassessmentoverwritten/v1?gradebookItemId={gradebookItemId}&personId={personId}

Clear a person assessment overwritten grade/score.

PUT restapi/personal/course/{courseId}/assessmentrecord/personassessmentoverwrittengrade/v1?gradebookItemId={gradebookItemId}&personId={personId}&oldAssessmentItemId={oldAssessmentItemId}&assessmentId={assessmentId}&overwrittenAssessmentItemId={overwrittenAssessmentItemId}

Save a person assessment overwritten grade.

PUT restapi/personal/course/{courseId}/assessmentrecord/personassessmentoverwrittenscore/v1?gradebookItemId={gradebookItemId}&personId={personId}&overwrittenScore={overwrittenScore}&oldScore={oldScore}

Save a person assessment overwritten score.

DELETE restapi/personal/course/{courseId}/assessmentrecord/personassessmentscore/v1?gradebookItemId={gradebookItemId}&personId={personId}

Delete a person assessment for an assessment record item

PUT restapi/personal/course/{courseId}/assessmentrecord/personassessmentscore/v1?gradebookItemId={gradebookItemId}&personId={personId}&score={score}

Save a person assessment for an assessment record item

GET restapi/personal/course/{courseId}/assessmentrecord/settings/v1

Setup for the assessment record page, language, settings, paths, and permissions

Assignment

Overview:
Endpoint for assignment for personal API. Requests will be forwarded to the assignment api. We want to abstract SharableObjectId (learningObjectId) and LearningObjectInstanceId from the client (e.g. mobile), therefore endpoints use ElementId.

Secured with Oauth2, and requires OAuth2 API scope .

APIDescription
POST restapi/personal/assignment/{elementId}/answer/v1

Submit answer for an assignment

Calendar

Overview:
Calendar endpoint for personal API.

Secured with Oauth2, and requires OAuth2 API scope Calendar.

APIDescription
GET restapi/personal/calendar/events/{eventId}/v1

Gets a single calendar event by the specified .

POST restapi/personal/calendar/events/areanyforgroups/v1

No documentation available.

GET restapi/personal/calendar/events/v1?fromDate={fromDate}&PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of calendar events.

Children

Overview:
Endpoint for retrieving children-related data.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/children/{childId}/courses/{courseId}/tasks/v1?PageIndex={PageIndex}&PageSize={PageSize}&status={status}&deadline={deadline}&isHomework={isHomework}&fromDate={fromDate}&toDate={toDate}

Gets a list of tasks assigned to the child in the requested course.

GET restapi/personal/children/{childId}/tasks/v1?PageIndex={PageIndex}&PageSize={PageSize}&status={status}&deadline={deadline}&isHomework={isHomework}&fromDate={fromDate}&toDate={toDate}

Gets a list of tasks assigned to the child.

GET restapi/personal/children/v1

Gets the related children details for a given person

ChildrenCalendar

Overview:
The controller is used to get information about children events.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/children/{childId}/courses/{courseId}/events/v1?fromDate={fromDate}&toDate={toDate}&PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of calendar events for the child in course.

GET restapi/personal/children/{childId}/events/{eventId}/v1

Gets a single course calendar event for the child by the specified .

ChildrenCourses

Overview:
The controller is used to get information about children courses and teachers.

APIDescription
GET restapi/personal/children/{childId}/courses/{courseId}/features/v1

Returns available feature and sub-features in a course where the child is a learner.

GET restapi/personal/children/{childId}/courses/v1?PageIndex={PageIndex}&PageSize={PageSize}

Returns list of courses where the child is a learner.

GET restapi/personal/children/{childId}/upcoming/v1?fromDate={fromDate}&toDate={toDate}

Returns list of courses upcoming plans, tasks and events in a dates range (one day only so far).

ChildrenOrganisation

Overview:
Endpoint for retrieving settings of the organization where a child is a member.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/children/{childId}/permissions/v1

Gets permissions of the parent in the child's organisation.

ChildrenPlans

Overview:
Endpoint for retrieving children-related data.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/children/{childId}/plans/{planId}/v1

Gets the child's single plan details.

Returns HTTP status 404 not found, if the plan does not exist for the user. It will only return plan the user has access to.

GET restapi/personal/children/{childId}/plans/v1?startDate={startDate}&stopDate={stopDate}&onlyWithoutDates={onlyWithoutDates}&PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of plans assigned to the child.

CourseCards

Overview:

Endpoint for CourseCards API

Course cards in itslearning is personal and gives a better overview in the homepage for the daily workflow.

Secured with Oauth2, and requires OAuth2 API scope Courses.

APIDescription
GET restapi/personal/courses/cards/{courseId}/settings/v1

Gets the course card settings

POST restapi/personal/courses/cards/{courseId}/settings/v1

Apply course card information to course.

POST restapi/personal/courses/cards/rank/v1

No documentation available.

GET restapi/personal/courses/cards/starred/v1?PageIndex={PageIndex}&PageSize={PageSize}&sortBy={sortBy}&searchText={searchText}&isShowMore={isShowMore}

Gets the list of cards for user's starred courses

GET restapi/personal/courses/cards/unstarred/v1?PageIndex={PageIndex}&PageSize={PageSize}&sortBy={sortBy}&searchText={searchText}&isShowMore={isShowMore}

Gets the list of cards for user's unstarred courses

CourseFeatures

Overview:

Endpoint to Courses features API.

Courses in itslearning are personal, and are related to person.

Secured with Oauth2, and required OAuth2 API scope Courses.

APIDescription
GET restapi/personal/courses/{courseId}/features/v1

Gets features for the given course.

GET restapi/personal/courses/{courseId}/features/v2

Gets features for the given course.

Courses

Overview:

Endpoint to Courses API.

Courses in itslearning are personal, and are related to person.

Secured with Oauth2, and required OAuth2 API scope Courses.

APIDescription
GET restapi/personal/courses/{courseId}/addparticipants/search/v1?searchText={searchText}

Search for persons to add to a course.

POST restapi/personal/courses/{courseId}/addparticipants/v1

Add persons to add to a course.

The user needs access to add persons to a course. The user can not add persons with higher profiles than the user itself.

PUT restapi/personal/courses/{courseId}/aisettings/v1

Updates the course.

GET restapi/personal/courses/{courseId}/applicants/v1

No documentation available.

GET restapi/personal/courses/{courseId}/calendarevents/v1?PageIndex={PageIndex}&PageSize={PageSize}&fromDate={fromDate}&toDate={toDate}

Gets the calendar events for the given course.

POST restapi/personal/courses/{courseId}/changerole/bulk/v1?roleId={roleId}

No documentation available.

POST restapi/personal/courses/{courseId}/changerole/v1?participantId={participantId}&roleId={roleId}

No documentation available.

POST restapi/personal/courses/{courseId}/folders/{folderId}/file/cloud/v1?planId={planId}

Creates a file element in the course containing the cloud file.

Returns HTTP status 403 not found, if the user don't have access to the course or folder.

Returns HTTP status 404 not found, if the course does not exist.

POST restapi/personal/courses/{courseId}/folders/{folderId}/file/filerepo/v1?planId={planId}

Creates a file element in the course containing the file.

Returns HTTP status 403 not found, if the user don't have access to the course or folder.

Returns HTTP status 404 not found, if the course does not exist.

GET restapi/personal/courses/{courseId}/folders/{folderId}/resources/v1?PageIndex={PageIndex}&PageSize={PageSize}&elementType={elementType}&learningToolType={learningToolType}

Gets a list of resources for the given course and folder.

GET restapi/personal/courses/{courseId}/followuptasks/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the follow-up tasks for the given course.

The list shows activities for specified course that have new or updated submissions/student work, or if the teacher needs to assess a submission/attempt. This will give the teacher an easy overview to see if there are updates, and to decide which to follow up next.

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0.

PUT restapi/personal/courses/{courseId}/lastvisited/v1

Updates the timestamp for when the user has last visited the course.

GET restapi/personal/courses/{courseId}/participants/setup/v1

Setup for the course participant and add participant page. Language settings and permissions.

POST restapi/personal/courses/{courseId}/participants/temporaryaccess/v1

Give persons temporary access to a course.

GET restapi/personal/courses/{courseId}/participants/unenrolled/v1?PageIndex={PageIndex}&PageSize={PageSize}&searchText={searchText}&orderByField={orderByField}&orderAscending={orderAscending}&dropDateFrom={dropDateFrom}

Gets a list of the unenrolled course participants for a given course.

DELETE restapi/personal/courses/{courseId}/participants/v1

Removes one or more participants from the given courses

GET restapi/personal/courses/{courseId}/participants/v1?PageIndex={PageIndex}&PageSize={PageSize}&courseProfileId={courseProfileId}&searchText={searchText}&orderByField={orderByField}&orderAscending={orderAscending}

Gets a list of the course participants for a given course.

DELETE restapi/personal/courses/{courseId}/participants/v2

Removes one or more participants from the given courses

GET restapi/personal/courses/{courseId}/participants/v2?paging.PageIndex={paging.PageIndex}&paging.PageSize={paging.PageSize}&courseProfileIds[0]={courseProfileIds[0]}&courseProfileIds[1]={courseProfileIds[1]}&searchText={searchText}&orderByField={orderByField}&orderAscending={orderAscending}

Gets a list of the course participants for a given course.

GET restapi/personal/courses/{courseId}/participants/v3?paging.PageIndex={paging.PageIndex}&paging.PageSize={paging.PageSize}&courseProfileIds[0]={courseProfileIds[0]}&courseProfileIds[1]={courseProfileIds[1]}&groupIds[0]={groupIds[0]}&groupIds[1]={groupIds[1]}&hierarchyIds[0]={hierarchyIds[0]}&hierarchyIds[1]={hierarchyIds[1]}&notInGroup={notInGroup}&searchText={searchText}&orderByField={orderByField}&orderAscending={orderAscending}

Gets a list of the course participants for a given course.

GET restapi/personal/courses/{courseId}/profiles/v1

Information on available course profiles for this course

POST restapi/personal/courses/{courseId}/resources/extended/v1?PageIndex={PageIndex}&PageSize={PageSize}

Returns all resources in course.

GET restapi/personal/courses/{courseId}/resources/lastupdated/v1?elementType={elementType}&numberOfElements={numberOfElements}&excludeLearningPathSubElements={excludeLearningPathSubElements}

Gets the last three updated resources for a given element type in a given course for the current user

GET restapi/personal/courses/{courseId}/resources/v1?PageIndex={PageIndex}&PageSize={PageSize}&elementType={elementType}&learningToolType={learningToolType}

Gets a list of resources (in the root folder) for the given course.

GET restapi/personal/courses/{courseId}/searchhierarchies/v1?searchText={searchText}

Search syncable hierarchies for the course provided

GET restapi/personal/courses/{courseId}/stream/v1?showLightBulletins={showLightBulletins}&UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Gets user's stream feed, which is collected from the course.

If no parameters specified, 100 latest items will be returned.

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified NotificationId. Due to the fact that stream items are sorted by PublishedDate (not by ID), it's required to specify FromId parameter. Both should belong to a single StreamItem entity. By default, items older than specified are returned, but it's possible to override that behavior by setting UseNewerThan to true.

GET restapi/personal/courses/{courseId}/synchronisedhierarchies/v1

Get all hierarchies synchronised with the course provided

POST restapi/personal/courses/{courseId}/synchronisehierarchies/v1

Sync hierarchies to course.

GET restapi/personal/courses/{courseId}/tasks/count/v1

Retrieves followUp task count and task count for the given course for the current user.

GET restapi/personal/courses/{courseId}/tasks/v1?PageIndex={PageIndex}&PageSize={PageSize}&status={status}&deadline={deadline}&isHomework={isHomework}

Gets a list of tasks for the given course.

PUT RestApi/personal/courses/{courseId}/toggleFavorite/v1

Toggles whether the user has this course favorite

GET restapi/personal/courses/{courseId}/v1

Retrieves some basic information on the given course for the current user.

PUT restapi/personal/courses/{courseId}/v1

Updates the course.

GET restapi/personal/courses/{courseId}/yourstudents/v1?PageIndex={PageIndex}&PageSize={PageSize}&sort={sort}&sortDescending={sortDescending}&search={search}

Get a list of your students for a given course.

GET restapi/personal/courses/{locationId}/resources/search/v1?locationType={locationType}&searchText={searchText}

Gets a list of resources in a given course, matching the search text provided

POST restapi/personal/courses/activeplans/v1?startDate={startDate}&endDate={endDate}

Gets information about the courses with the specified sync keys and having active lesson plans within the specified dates range.

GET restapi/personal/courses/addparticipants/search/v1?searchText={searchText}

Gets persons that the user is allowed to communicate with given the customer's eSafety rules configured in itslearning.

POST restapi/personal/courses/convertfileorlinktofile

Not in use will be removed in R108 (BMT-CONVERT)

POST restapi/personal/courses/convertfileorlinktogoogle

Not in use will be removed in R108 (BMT-CONVERT)

POST restapi/personal/courses/convertfileorlinktolink

Not in use will be removed in R108 (BMT-CONVERT)

POST restapi/personal/courses/convertfileorlinktoonedrive

Not in use will be removed in R108 (BMT-CONVERT)

POST restapi/personal/courses/convertonedrivetofile

Converts OneDriveResource to File

GET restapi/personal/courses/iteach/v1?PageIndex={PageIndex}&PageSize={PageSize}&onlyWithResources={onlyWithResources}

Retrieves a list with Courses for the given teacher.

POST restapi/personal/courses/measurefilelinkingkpi/v1

Endpoint for counting KPI's for files which are being linked when added to a course

POST restapi/personal/courses/measurefileuploadkpi/v1

Endpoint for counting KPI's for files which are uploaded when added to a course

GET restapi/personal/courses/notifications/{notificationId}/elements/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of elements related to given notification

GET restapi/personal/courses/resources/{resourceId}/v1

Gets the resource, the course where the resource is located and the current person's role in the course.

GET restapi/personal/courses/search/v1?courseSyncKey={courseSyncKey}

Gets the course by synchronization key.

GET restapi/personal/courses/students/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of my students.

POST restapi/personal/courses/v1

Creates a new course.

GET restapi/personal/courses/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of courses. BUG: This endpoint returns only favourite courses USE v2 instead

GET restapi/personal/courses/v2?PageIndex={PageIndex}&PageSize={PageSize}&filter={filter}

Gets the list of courses.

GET restapi/personal/courses/v3?PageIndex={PageIndex}&PageSize={PageSize}&filter={filter}

Gets the list of courses with additional information about follow-up task count, task count and list of teachers.

GET restapi/personal/courses/v4?PageIndex={PageIndex}&PageSize={PageSize}&filter={filter}

Gets the list of courses with additional information and list of teachers without followUp task count and task count.

GET restapi/personal/courses/withrole/{courseId}/v1

Retrieves basic information on the given course for the current user and their course role in this course.

GET restapi/personal/courses/yourstudents/courses/v1

Gets all courses of your students of the current user.

GET restapi/personal/courses/yourstudents/v1?PageIndex={PageIndex}&PageSize={PageSize}&sort={sort}&sortDescending={sortDescending}&search={search}

Get a list of the all students for teacher in all courses where teacher has teacher's role.

CoursesGroups

Overview:

Endpoint to Courses groups API.

Secured with Oauth2, and required OAuth2 API scope Courses.

APIDescription
DELETE restapi/personal/courses/{courseId}/groups/v1

Remove course groups with specified identifiers.

The user needs course-admin rights in the course to be authorized.

PUT restapi/personal/courses/{courseId}/groupsets/v1

Create or replace existing course groups sets in specified course.

If the course groups don't exist yet, new groups will be created and identifiers of the created groups will be returned in the response with the same ordering as was given in the request.

If course groups already exist, then the groups will be updated. Any existing participants of any existing course groups will be replaced by new participants from this request. Course group titles will also be updated.

The user needs course-admin rights in the course to be authorized.

CustomerSettings

Overview:
Endpoint to fetch customer setting values.

APIDescription
GET restapi/customersettings/{key}/v1

Gets course info by specified id.

Hierarchies

Overview:

Endpoint to Hierarchies API.

Hierarchies in itslearning are personal, and are related to person.

Secured with Oauth2, and required OAuth2 API scope Hierarchies.

APIDescription
GET restapi/personal/hierarchies/{hierarchyId}/children/v1

Get all children of a specific hierarchy. Returns only hierarchies to which person has access to.

Returns HTTP status 404 not found, if the hierarchyId does not exist for the user or user has no permission to read it.

GET restapi/personal/hierarchies/{hierarchyId}/childrenwithmembercountforcourse/v1?courseId={courseId}

Get all children of a specific hierarchy, with a count of how many members the hierarchy has.

Returns HTTP status 404 not found, if the hierarchyId does not exist for the user or user has no permission to read it.

GET restapi/personal/hierarchies/{hierarchyId}/childrenwithmembercountforperson/v1

Get all children of a specific hierarchy, with a count of how many members the hierarchy has.

Returns HTTP status 404 not found, if the hierarchyId does not exist for the user or user has no permission to read it.

GET restapi/personal/hierarchies/{hierarchyId}/members/v1?PageIndex={PageIndex}&PageSize={PageSize}

Get all members and their role in the specified hierarchy. Will only return members the calling user is allowed to see.

GET restapi/personal/hierarchies/{hierarchyId}/members/v2?PageIndex={PageIndex}&PageSize={PageSize}&courseContext={courseContext}

Get all members and their role in the specified hierarchy. Will only return members the calling user is allowed to see.

GET restapi/personal/hierarchies/{hierarchyId}/parents/v1?visibleInSearchOnly={visibleInSearchOnly}

Get all parents of a specific hierarchy.

Returns HTTP status 404 not found, if the hierarchyId does not exist for the user or user has no permission to read it.

GET restapi/personal/hierarchies/{hierarchyId}/v1?role={role}

Get all members of a specific hierarchy with the given role.

Returns HTTP status 404 not found, if the hierarchyId does not exist for the user or user has no permission to read it.

GET restapi/personal/hierarchies/default/v1

Get default hierarchy for the current person.

Could be School if person is a member of only one school or has home organization set, a whole Site otherwise.

GET restapi/personal/hierarchies/defaultforcourse/{courseId}

Get default hierarchy for the current course.

GET restapi/personal/hierarchies/defaultwithmembercount/v1

Get default hierarchy for the current person.

Could be School if person is a member of only one school or has home organization set, a whole Site otherwise.

GET restapi/personal/hierarchies/organisations/v1?role={role}

Get all organisations to which current person belongs to and has specific role.

GET restapi/personal/hierarchies/organizations/v1?role={role}

Get all organizations to which current person belongs to and has specific role. This method obsolete, use 'organisations/v1' instead.

ImmersiveReader

Overview:
API controller for Immersive Reader.

APIDescription
GET restapi/personal/immersivereader/v1?resourceId={resourceId}&resourceType={resourceType}

Gets the required info for use with Immersive Reader.

InstantMessage

Overview:
Endpoint for internal instant messages for personal API.

Secured with Oauth2, and requires OAuth2 API scope InstantMessage.

APIDescription
DELETE restapi/personal/instantmessages/{instantMessageId}/abusereport/v1

Cancels abuse report.

PATCH restapi/personal/instantmessages/{instantMessageId}/restore/v1

Undo deletion for an instant message.

DELETE restapi/personal/instantmessages/{instantMessageId}/v1

Deletes an instant message.

POST restapi/personal/instantmessages/attachment/v1

Upload file attachment to temporary storage. The file should be included in the post call so we can extract it as HttpContext.Current.Request.Files

DELETE restapi/personal/instantmessages/attachment/v1?fileId={fileId}

Delete temporary files that were uploaded

PUT restapi/personal/instantmessages/cancelabusethreadreport/{threadId}/v1

Cancels abuse report for thread.

POST restapi/personal/instantmessages/communicationchannel/{channelId}/v1?unregister={unregister}

Register a (SignalR) communication channel

GET restapi/personal/instantmessages/messagethreads/{instantMessageThreadId}/unread/count/v1

Gets number of unread messages in a specific thread for the current user

GET restapi/personal/instantmessages/messagethreads/{threadId}/messages/search/v1?searchText={searchText}

Searches inside the given thread for messages matching the given search text.

GET restapi/personal/instantmessages/messagethreads/{threadId}/messages/v2?maxMessages={maxMessages}&upperBoundInstantMessageId={upperBoundInstantMessageId}&lowerBoundInstantMessageId={lowerBoundInstantMessageId}

Gets the messages in a specific thread. The impersonated user need to be a member of the thread. One cannot use both lowerBoundInstantMessageId and upperBoundInstantMessageId

GET restapi/personal/instantmessages/messagethreads/{threadId}/messages/v3?pageSize={pageSize}&fromId={fromId}

Gets a collection of instant messages extended with hasMore field.

PUT restapi/personal/instantmessages/messagethreads/{threadId}/moderators/v1

Adds moderator to an instant message thread.

GET restapi/personal/instantmessages/messagethreads/{threadId}/participants/messages-disabled/v1

Gets a collection of thread participants who cannot see messages.

PUT restapi/personal/instantmessages/messagethreads/{threadId}/participants/v1

Adds participants to an instant message thread.

DELETE restapi/personal/instantmessages/messagethreads/{threadId}/participants/v1

Remove participants from an instant message thread.

PATCH restapi/personal/instantmessages/messagethreads/{threadId}/restore/v1

Restores deletion for thread.

PUT restapi/personal/instantmessages/messagethreads/{threadId}/toggleEnableDisableReplies/v1

Toggle whether students can send replies to this thread or not

PUT restapi/personal/instantmessages/messagethreads/{threadId}/updatelastread/{lastReadInstantMessageId}/v1?sortIndex={sortIndex}&operation={operation}

Updates last read instant message id for a thread

DELETE restapi/personal/instantmessages/messagethreads/{threadId}/v1

Deletes a thread.

PUT restapi/personal/instantmessages/messagethreads/{threadId}/v1

Updates a instant message thread. Supports updating the name of the thread or the list of the participants. Will return HTTP status 404 if the InstantMessageThreadId is not found or the user does not have access to it.

GET restapi/personal/instantmessages/messagethreads/{threadId}/v1?maxMessages={maxMessages}&upperBoundInstantMessageId={upperBoundInstantMessageId}&lowerBoundInstantMessageId={lowerBoundInstantMessageId}

DEPRECATED use "messagethreads/{threadId}/messages/v2" instead.

Gets the messages in a specific thread if the user is a recipient in the thread. One cannot use both lowerBoundInstantMessageId and upperBoundInstantMessageId

GET restapi/personal/instantmessages/messagethreads/{threadId}/v2?maxMessages={maxMessages}&upperBoundInstantMessageId={upperBoundInstantMessageId}&lowerBoundInstantMessageId={lowerBoundInstantMessageId}

Gets the instant message thread and the messages in a specific thread. The impersonated user need to be a member of the thread. One cannot use both lowerBoundInstantMessageId and upperBoundInstantMessageId.

If you only need messages from the thread, consider using "messagethreads/{threadId}/messages/v2" instead.

GET restapi/personal/instantmessages/messagethreads/{threadId}/v3?maxMessages={maxMessages}&upperBoundInstantMessageId={upperBoundInstantMessageId}&lowerBoundInstantMessageId={lowerBoundInstantMessageId}

Gets the instant message thread and the messages in a specific thread. The impersonated user need to be a member of the thread. One cannot use both lowerBoundInstantMessageId and upperBoundInstantMessageId.

If you only need messages from the thread, consider using "messagethreads/{threadId}/messages/v2" instead. This version doesn't return thread participants for course threads for performance reasons.

GET restapi/personal/instantmessages/messagethreads/collaborations/{collaborationId}/v1

Gets the instant message thread id for group answer. Creates it if not there yet.

GET restapi/personal/instantmessages/messagethreads/onetoone/{personId}/v1

Gets the instant message thread id for a one to one conversation between the caller and a user.

POST restapi/personal/instantmessages/messagethreads/search/v1

Searches the logged in user's message threads. PersonId is gotten from the authorization (session or oauth)

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified messageId

GET restapi/personal/instantmessages/messagethreads/suggestions/v1?searchText={searchText}

Suggests conversations which names contain search string.

GET restapi/personal/instantmessages/messagethreads/unread/count/v1

Gets number of threads that contain unread messages

GET restapi/personal/instantmessages/messagethreads/v1?maxThreadCount={maxThreadCount}&threadPage={threadPage}&maxMessages={maxMessages}

Gets the logged in user's message threads. PersonId is gotten from the authorization (session or oauth)

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified messageId

GET restapi/personal/instantmessages/messagethreads/v2?maxThreadCount={maxThreadCount}&threadPage={threadPage}&maxMessages={maxMessages}

Gets the logged in user's message threads. PersonId is gotten from the authorization (session or oauth)

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified messageId

GET restapi/personal/instantmessages/messagethreads/v3?fromSortIndex={fromSortIndex}&pageSize={pageSize}

Gets a collection of threads for logged in user extended with hasMore field. Supports paging by sort index field. If parameter is not provided, threads with highest sort index will be returned. If is not provided, default page size will be used instead.

GET restapi/personal/instantmessages/messagethreads/v4?fromSortIndex={fromSortIndex}&pageSize={pageSize}

Gets a collection of threads for logged in user extended with hasMore field. Supports paging by sort index field. If parameter is not provided, threads with highest sort index will be returned. If is not provided, default page size will be used instead. This version doesn't return thread participants for course threads for performance reasons.

GET restapi/personal/instantmessages/permissions/v1

Gets permissions for the instant message system.

GET restapi/personal/instantmessages/privacy/{personId}/v1

Checks privacy rules to determine if user is allowed to initiate communication with a person.

POST restapi/personal/instantmessages/recipients/persons/v1

Gets recipient persons requested

GET restapi/personal/instantmessages/recipients/search/v1?searchText={searchText}&instantMessageThreadId={instantMessageThreadId}&recipientRoles[0]={recipientRoles[0]}&recipientRoles[1]={recipientRoles[1]}

Gets persons that the user is allowed to communicate with given the customer's esafety rules configured in itslearning.

GET restapi/personal/instantmessages/recipients/v1?personIds[0]={personIds[0]}&personIds[1]={personIds[1]}&courseId={courseId}&projectId={projectId}

Gets recipients(persons, course or project) requested

GET restapi/personal/instantmessages/recipients/v2?personIds[0]={personIds[0]}&personIds[1]={personIds[1]}&courseIds[0]={courseIds[0]}&courseIds[1]={courseIds[1]}&projectIds[0]={projectIds[0]}&projectIds[1]={projectIds[1]}

Gets recipients(persons, course or project) requested

GET restapi/personal/instantmessages/settings/v1

Gets the settings for the instant message system. Boundaries for attachment size, max participants in a group thread etc.

GET restapi/personal/instantmessages/settings/v2

Gets the settings for the instant message system. Boundaries for attachment size, max participants in a group thread etc.

GET restapi/personal/instantmessages/starred/count/v1

Gets the number of starred messages for the current user

GET restapi/personal/instantmessages/suggestions/v1?searchText={searchText}&maxSuggestions={maxSuggestions}

Searches for suggestions of person names or thread names that match the input search query for the current user

PUT restapi/personal/instantmessages/togglemessagestar/{instantMessageId}/v1

Toggle whether the given message is starred or not

PUT restapi/personal/instantmessages/togglepersonblock/{personId}/v1

Toggles block for specific .

POST restapi/personal/instantmessages/v1

DEPRECATED use v2 instead

Send an instant message.

Creates a new thread or reuse an old. The thread the message was sent to will be returned.

PATCH restapi/personal/instantmessages/v1

Updates the text for an instant message.

POST restapi/personal/instantmessages/v2

Send an instant message.

Creates a new thread or reuse an old. The thread the message was sent to will be returned.

InstantMessageBroadcast

Overview:
Endpoint for internal instant messages broadcasting for personal API.

Secured with Oauth2, and requires OAuth2 API scope InstantMessage.

APIDescription
POST restapi/personal/instantmessages/broadcast/v1

Send a broadcast instant message. Creates a new thread for a new broadcast message.

DELETE restapi/personal/instantmessages/broadcast/v1

Marks broadcast threads as deleted and created the async task to delete permanently them and all associated data.

GET restapi/personal/instantmessages/broadcastStatistics/{threadId}/v1

Gets statistics how many recipients read messages of specified threads

LearningObjectiveRepository

Overview:
Endpoint for learning objectives for the personal api.

Secured with Oauth2, and requires OAuth2 API scope LearningObjectiveRepository.

APIDescription
GET restapi/learningobjectiverepository/subjects/{countryCode}/v1

Retrieves the Subjects that have been defined for the given Country code.

LearningObjectivesReports

Overview:
Endpoint to get users' learning objectives aggregated progress reports and / or corresponding information.

Secured with Oauth2, and requires OAuth2 API scope Reports.

APIDescription
GET restapi/personal/progressreport/{personId}/v1?subjectId={subjectId}&fromDateTime={fromDateTime}&toDateTime={toDateTime}&statuses={statuses}

Gets the person learning objectives aggregated progress report.

The client of this API may supply additional parameters to get a more detailed report. For instance supplying a time period parameters (fromDateTime and toDateTime) one can get a report only in this particular time period.

GET restapi/personal/progressreport/courses/v1?learningObjectiveId={learningObjectiveId}&onlyWithCriteria={onlyWithCriteria}

Gets the favourite courses where current user is a teacher and where the learning objective used.

GET restapi/personal/progressreport/criteria/{personId}/v1?courseId={courseId}&criteriaIds={criteriaIds}&fromDateTime={fromDateTime}&toDateTime={toDateTime}

Gets the person criteria assessment report.

The client of this API may supply additional parameters to get a more detailed report. For instance supplying a time period parameters (fromDateTime and toDateTime) one can get a report only in this particular time period.

GET restapi/personal/progressreport/criteria/v1?courseId={courseId}&learningObjectiveId={learningObjectiveId}

Gets the criteria list for learning objective at specified course.

GET restapi/personal/progressreport/reportsubjects/{personId}/v1?fromDateTime={fromDateTime}&toDateTime={toDateTime}&subjectIds={subjectIds}

Gets list of subjects the person learning objectives aggregated progress report is based on.

GET restapi/personal/progressreport/reportsubjects/v1?personSyncKey={personSyncKey}&fromDateTime={fromDateTime}&toDateTime={toDateTime}&subjectIds={subjectIds}

Gets list of subjects the person learning objectives aggregated progress report is based on.

GET restapi/personal/progressreport/statuses/{personId}/v1

Gets list of available learning objective statuses.

GET restapi/personal/progressreport/statuses/v1?personSyncKey={personSyncKey}

Gets list of available learning objective statuses.

GET restapi/personal/progressreport/v1?subjectId={subjectId}&personSyncKey={personSyncKey}&fromDateTime={fromDateTime}&toDateTime={toDateTime}&statuses={statuses}

Gets the person learning objectives aggregated progress report.

The client of this API may supply additional parameters to get a more detailed report. For instance supplying a time period parameters (fromDateTime and toDateTime) one can get a report only in this particular time period.

LightBulletin

Overview:
Endpoint for light bulletins for personal api.

Secured with Oauth2, and requires OAuth2 API scope light bulletin.

APIDescription
PUT restapi/personal/lightbulletins/{lightBulletinId}/comments/subscription/v1

Turn on/off notifications for new comments for the light bulletin.

POST restapi/personal/lightbulletins/{lightBulletinId}/comments/v1

Adds a new comment for light bulletin.

GET restapi/personal/lightbulletins/{lightBulletinId}/comments/v1?UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of all comments added for given light bulletin sorted in chronological order (by date creation) from newest to oldest.

POST restapi/personal/lightbulletins/{lightBulletinId}/comments/v2

Adds a new comment for light bulletin.

PUT restapi/personal/lightbulletins/comments/{commentId}/v1

Updates comment's text.

DELETE restapi/personal/lightbulletins/comments/{commentId}/v1

Deletes comment.

PUT restapi/personal/lightbulletins/comments/{commentId}/v2

Updates comment's text.

PUT restapi/personal/lightbulletins/v1

Marks light bulletins as seen.

LightBulletinCourse

Overview:

Endpoint for light bulletins in course scope.

Secured with Oauth2, and required OAuth2 API scope Courses.

APIDescription
GET restapi/personal/courses/{courseId}/bulletins/v1?timePeriod={timePeriod}&UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Gets light bulletins by course identifier.

PUT restapi/personal/courses/bulletins/{bulletinId}/comments/v1?allowComments={allowComments}

Enables or disables comments for the bulletin

GET restapi/personal/courses/bulletins/{bulletinId}/elements/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of resources attached to given bulletin

PUT restapi/personal/courses/bulletins/{bulletinId}/pinned/v1?pinned={pinned}

Toggles announcement Pinned status.

POST restapi/personal/courses/bulletins/{bulletinId}/uploadimage/v1

Upload file attachment to temporary storage. The file should be included in the post call so we can extract it as HttpContext.Current.Request.Files.

DELETE restapi/personal/courses/bulletins/{bulletinId}/v1

Deletes bulletin created in course and the bulletin's comments, embedded links, attached images and resources.

GET restapi/personal/courses/bulletins/{bulletinId}/v1

Gets light bulletin by identifier.

POST restapi/personal/courses/bulletins/v1

Create new light bulletin.

PUT restapi/personal/courses/bulletins/v1

Updates the light bulletin

LtiExtension

Overview:
API controller for Lti extensions.

APIDescription
GET restapi/personal/lti/{extensionId}/details/v1?courseId={courseId}

Gets the LTI details for user and for the given course (if defined).

GET restapi/personal/lti/{extensionId}/details/v2?courseId={courseId}

Gets the LTI customer setup for user and for the given course (if defined).

MediaRecorder

Overview:

Endpoint to Video Recording API.

Secured with Oauth2

APIDescription
POST RestApi/personal/mediarecorder/createplayer/v1

No documentation available.

POST RestApi/personal/mediarecorder/recordingcomplete/v1

Saves a Ziggeo redcorded video or audio clip to the server with the provided name

POST RestApi/personal/mediarecorder/saveziggeorecording/v1

Saves a Ziggeo redcorded video or audio clip to the server with the provided name

POST RestApi/personal/mediarecorder/uploadrecording/v1

No documentation available.

GET RestApi/personal/mediarecorder/video/{videoId}/streams/v1

No documentation available.

GET RestApi/personal/mediarecorder/ziggeo/{region}/video/{videoId}/streams/v1

Parameter is left only for backwards compatibility, it's not in use.

Messages

Overview:
Endpoint for internal messages for personal api.

Secured with Oauth2, and requires OAuth2 API scope Messages.

APIDescription
POST restapi/personal/messages/{messageId}/toggleFavorite/v1?isFavorite={isFavorite}&messageOrigin={messageOrigin}

Toggles a message's IsFavorite property.

Only supports toggling the current favorite value of the message. Will return HTTP status 401 if user does not have access.

GET restapi/personal/messages/{messageId}/v1

Get a single message by its messageId.

Returns HTTP status 404 not found, if the messageId does not exist for the user. It will only return messages the user has access to.

PUT restapi/personal/messages/{messageId}/v1?messageOrigin={messageOrigin}

Updates a message's properties.

Only supports updating the IsRead field of Message. Will return HTTP status 404 if the messageId is not found or the user does not have access to it.

DELETE restapi/personal/messages/{messageId}/v1?messageOrigin={messageOrigin}

Deletes a message by moving it to the deleted folder.

Will return HTTP status 401 if user does not have access.

GET restapi/personal/messages/attachments/{fileId}/v1

Gets an attachment from a message.

Returns HTTP status 404 not found, if the fileid does not exist for the user. It will only return attachment the user has access to.

POST restapi/personal/messages/push/v1

This method is obsolete, use restapi/personal/person/push/v1 instead.

Set push notifications in itslearning (on or off) for a device. This method will also register the device for push notifications with the push provider (if needed).

GET restapi/personal/messages/recipients/search/v1?searchText={searchText}

Search for message recipients.

Only returns persons that the user is allowed to communicate with given the customer's esafety rules configured in itslearning.

The searchText parameter is required and must contain at least 3 characters .

POST restapi/personal/messages/send/v1

Sends a MessageToSend to recipients.

The client should use the search endpoint to get personIds in order to fill the To and Bcc fields of a message.

ReplyToMessageId is optional and should be used when replying to another message.

GET restapi/personal/messages/unread/count/v1

Returns the number of unread messages for the user

GET restapi/personal/messages/unread/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the user's unread messages.

The method supports paging. When paging is not specified, it will use a default pageSize on pageIndex 0.

PUT restapi/personal/messages/v1

Updates messages.

Only supports updating the IsRead field of each Message.

Will return 404 if none of the messageIds are found, or the user does not have access to any.

GET restapi/personal/messages/v1?UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Gets the user's messages.

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0.

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified messageId.

NativeApp

Overview:
Some utility methods for native apps

APIDescription
GET restapi/nativeapp/versioncheck/{applicationKey}/v1?currentVersion={currentVersion}&operatingSystem={operatingSystem}

Check if the current version for the application is ok or not. This requires that the native app has registered minimum required version and latest version.

Notifications

Overview:

Endpoint for notifications and news feed for personal api.

The notifications you get access to are the same that are shown under the bell in itslearning.

Secured with Oauth2, and requires OAuth2 API scope Notifications.

APIDescription
GET restapi/personal/notifications/{notificationId}/elements/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of elements related to given notification

GET restapi/personal/notifications/bulletins/{bulletinId}/elements/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the list of resources attached to given bulletin

GET restapi/personal/notifications/newsfeed/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the user's news feed. New activities, resources and bulletins. The news feed is collected from all courses, all courses or projects, favorite courses or favorite courses or projects depending on the setting for "Latest changes" content block on the "My Page" dashboard.

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0.

PUT restapi/personal/notifications/seenmark/all/v1

Updates all the personal notifications to be seen.

GET restapi/personal/notifications/stream/v1?UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}&fromPublishedDate={fromPublishedDate}

Gets user's stream feed, which is collected from user's favorite courses or projects.

If no parameters specified, 100 latest items will be returned.

The client can specify paging with a combination of UseNewerThan, FromId and fromPublishedDate to be able to page directly from a specified NotificationId. Due to the fact that stream items are sorted by PublishedDate (not by ID), it's required to specify both FromId and fromPublishedDate parameters. Both should belong to a single StreamItem entity. By default items older than specified are returned, but it's possible to override that behavior by setting UseNewerThan to true.

GET restapi/personal/notifications/stream/v2?showLightBulletins={showLightBulletins}&UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Gets user's stream feed, which is collected from user's favorite courses or projects.

If no parameters specified, 100 latest items will be returned.

The client can specify paging with a combination of UseNewerThan and FromId to be able to page directly from a specified NotificationId. By default items older than specified are returned, but it's possible to override that behavior by setting UseNewerThan to true.

GET restapi/personal/notifications/unread/count/v1

Returns number of unread personal notifications for the user.

GET restapi/personal/notifications/unseen/count/v1

Returns number of unseen personal notifications for the user.

PUT restapi/personal/notifications/v1

Updates the personal notifications to be read. Obsolete. Use v2 instead.

Updated notifications will be returned.

Notifications where IsRead=false or the person does not have access to, will just be disregarded.

GET restapi/personal/notifications/v1?PageIndex={PageIndex}&PageSize={PageSize}

Get personal notifications (read and unread). Obsolete. Use v2 instead.

PUT restapi/personal/notifications/v2

Updates the personal notifications to be read.

Notifications where IsRead=false or the person does not have access to, will just be disregarded.

GET restapi/personal/notifications/v2?UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Get personal notifications (read and unread).

NotificationsPost

Overview:

Endpoint for posting a new notifications for personal api.

The notifications you get access to are the same that are shown under the bell in itslearning.

Secured with Oauth2, and requires OAuth2 API scope Notifications.

APIDescription
POST restapi/personal/notifications/deletetriggers/location/v1

Delete all personal notifications which related to a specific location.

POST restapi/personal/notifications/deletetriggers/object/v1

Delete all personal notifications which related to a specific object.

POST restapi/personal/notifications/posts/course/{courseId}/module/{moduleId}/exportCompleted/v1?section={section}&state={state}&fileName={fileName}&status={status}

Send Export completed notification. Current user will be set as an author and a recipient.

POST restapi/personal/notifications/posts/course/{courseId}/module/{moduleId}/importCompleted/v1?section={section}&state={state}&folders={folders}&resources={resources}

Send Import completed notification. Current user will be set as an author and a recipient.

POST restapi/personal/notifications/posts/v1

Send personal notifications. Current user will be set as an author of all notifications.

PageUrl

Overview:

Endpoint to get URLs from the itslearning.

This API does not require authentication.

APIDescription
GET restapi/pageurl/ckeditorconfigurls

Get the urls to configure the CkEditor.

GET restapi/pageurl/courseelement?courseId={courseId}&elementId={elementId}&elementType={elementType}

Get 'course element' page url.

GET restapi/pageurl/services/v1

Get the base Url for different customer specific services.

GET restapi/pageurl/treelink

Get the base Url to build a tree link navigation urls.

GET restapi/pageurl/viewLearningToolElement?elementId={elementId}

Get 'view learning tool element' page url.

Person

Overview:
Endpoint to get and modify a user's profile.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/person/{personId}/v1

Gets basic information about the requested person. The person should be allowed to search for by Esafety rules.

GET restapi/personal/person/extrauserinformation/{personId}/v1

Gets extra user information (if such exists) for a given person If no such field has been configured on the customer site, or if the current user does not have access to see it, a field with empty name and value will be returned. If such a field exists, but no value has been set for the given personId, then a field with the correct name, but empty value will be returned.

GET restapi/personal/person/features/v1

Gets available features for the current person.

GET restapi/personal/person/image/dimensions/v1

Get the dimensions that should be used for profile images that you upload through this API.

This method returns the maximum pixel height and width of the image.

This method may be used for e.g. determining dimensions of a cropping rectangle that the user can use before the client uploads an image.

POST restapi/personal/person/image/v1

Upload and update a person's profile image.

The maximum dimensions of the persons image can be retrieved using the resource URL [personal/person/image/dimensions]. If the image is bigger in size, then it will automatically be scaled to the correct size.

The image can be sent using the HTTP Content-Type set for the image. For example, for JPEG images set content type to 'image/jpeg' or for PNG images set content type to 'image/png'. Alternatively, the image can be uploaded as a multi-part content, using the content type 'multipart/form-data'.

PUT restapi/personal/person/online/v1

This method is used to mark the online status of a user.

In itslearning, being online means that other users can see that this user is logged on from a client (e.g. from the itslearning platform).

If a client calls this, the user will be marked as online until the timeout in the response has passed. To prevent a user reverting to offline, call this method again until timeout from response has passed.

PUT restapi/personal/person/PersonSetting/RemindConnectGoogleOnLogin/v1

Set the person setting "RemindConnectGoogleOnLogin".

When this setting is on the user will be reminded to connect his/her the Google account if a IsGoogleIntegrationEnabled and IsGlobalSsoFromGoogleEnabled on the site

POST restapi/personal/person/push/v1

Set push notifications in itslearning (on or off) for a device. This method will also register the device for push notifications with the push provider (if needed).

GET restapi/personal/person/relations/{personId}/v1

Get list of relations for the person.

GET restapi/personal/person/roles/v1

Get list of roles for person.

GET restapi/personal/person/serviceaccess/{serviceName}/v1

Gets access token to call service on behalf of the person.

GET restapi/personal/person/v1

Get the user's profile details.

The Language property of the returned type is a Language Code on the form "nb-NO" and "en-GB", where the language part is based on ISO-639-1.

The client of this API may use the user's language to automatically choose localisation for the user.

PersonRelation

Overview:
Endpoint to get the person relations.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/person/{personId}/relatedpersons/v1?relationType={relationType}

Gets the relation between persons with detailed info about related person and relation type.

Planner

Overview:
Endpoint to get planner information.

Secured with Oauth2, and requires OAuth2 API scope Planner.

APIDescription
GET restapi/personal/planner/plansinfo/v1?plansIds[0]={plansIds[0]}&plansIds[1]={plansIds[1]}

Gets list of plans with learning objective and elements attached.

POST restapi/personal/planner/targetCourse/{targetCourseId}/targetTopic/{targetTopicId}/targetPlan/{targetPlanId}/v1

Adds shared plan elements to the course plan.

GET restapi/personal/planner/v1?courseId={courseId}&startDate={startDate}&stopDate={stopDate}

Get previews of plans for the specified course.

By supplying a time period parameters ( and ) one can get plans only within this particular time period. Plan will be included into the result if it starts or ends within the period. If period is not supplied the list will contain all plans for the course.

Projects

Overview:

Endpoint to Projects API.

Secured with Oauth2, and required OAuth2 API scope Courses.

APIDescription
PUT RestApi/personal/projects/{projectId}/toggleFavorite/v1

Toggles the user's favorite for the specified project

SearchData

APIDescription
POST restapi/learningtool/searchdata/v1

No documentation available.

Overview:
Endpoint for retrieving the site links.

Secured with Oauth2, and requires OAuth2 API scope Person.

APIDescription
GET restapi/personal/person/sitelinks/v1

Gets the site links those are visible for the user.

Sites

Overview:

Endpoint to get information about all active itslearning sites.

This API does not require authentication

APIDescription
GET restapi/sites/{customerId}/logindetails/v1

Get login details for an itslearning site by customerId.

GET restapi/sites/{customerId}/v1

Get an itslearning site by customerId.

GET restapi/sites/all/organisations/search/v1?searchText={searchText}&PageIndex={PageIndex}&PageSize={PageSize}&sitesFilter={sitesFilter}

Get organisations (sites and schools).

Optional filtering by names containing words starting with specific phrases (separated by space).

This method does not have security checks - it is open.

Optional filtering by site type: Itslearning, Parents.

GET restapi/sites/all/organisations/v1?sitesFilter={sitesFilter}

Get all organisations (sites and schools).

This method does not have security checks - it is open.

Optional filtering by site type: Itslearning, Parents.

GET restapi/sites/all/v1?sitesFilter={sitesFilter}

Get all customer sites (used e.g. by welcome page)

This method does not have security checks - it is open.

Optional filtering by site type: Itslearning, Parents.

GET restapi/sites/shortnames/{shortname}/v1

Get an itslearning site by shortname. The site may be inactive. If a site with the given shortname does not exist, null will be returned.

GET restapi/sites/v1?startsWith={startsWith}&PageIndex={PageIndex}&PageSize={PageSize}&sitesFilter={sitesFilter}

Get sites that have itslearning ordered by title.

This method does not have security checks - it is open.

Optional filtering by titles containing words starting with specific phrases (separated by space).

Optional filtering by site type: Itslearning, Parents.

Sso

Overview:

Endpoint for SSO related functionality such as SSO Urls to itslearning.

Secured with Oauth2, and requires OAuth2 API scope Sso.

APIDescription
GET restapi/personal/sso/url/v1?url={url}

Creates a short-lived SSO Url to itslearning. Users will be not be prompted to log in when using this Url.

Statistics

Overview:
Endpoint for statistics API

Secured with Oauth2, and requires OAuth2 API scope Statistics.

APIDescription
POST RestApi/personal/statistics/events/v1

Endpoint for posting user events.

StudentPlan

Overview:
Endpoint for Student Plans in Personal API.

Secured with Oauth2, and requires OAuth2 API scope StudentPlan.

APIDescription
GET restapi/personal/studentplan/achievementgoals/active/v1?courseId={courseId}

Gets the active goals. The course identifier.

GET restapi/personal/studentplan/achievementgoals/archived/v1?courseId={courseId}

Gets the archived goals. The course identifier.

GET restapi/personal/studentplan/achievementgoals/coursewide/v1

No documentation available.

GET restapi/personal/studentplan/assessments/topics/v1?courseId={courseId}

Returns list of topic assessments for the course and student.

GET restapi/personal/studentplan/assessments/topics/v1?courseId={courseId}&fromId={fromId}

Returns list of topic assessments for the course and student.

GET restapi/personal/studentplan/comments/v1?courseId={courseId}&UseNewerThan={UseNewerThan}&FromId={FromId}&PageIndex={PageIndex}&PageSize={PageSize}

Retrieves a list of comments that relates to specific person student plan.

GET restapi/personal/studentplan/courses/v1?lastCommentReadDateTimesUtc={lastCommentReadDateTimesUtc}

Returns a list of courses for the Student Plan.

GET restapi/personal/studentplan/overview/v1?courseId={courseId}&lastCommentReadDateTimeUtc={lastCommentReadDateTimeUtc}

Returns an overview entity for the Student Plan.

Supervisor

Overview:
Endpoint for retrieving data for supervisors - mentors and headteachers.

Secured with Oauth2, and requires OAuth2 API scope Supervisor.

APIDescription
GET restapi/personal/supervisor/supervised/v1?supervisorType={supervisorType}&PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of all persons current user is a supervisor for - mentorees.

TaskListDailyWorkflow

Overview:

Endpoint for tasklistdailyworkflow API

Daily workflow tasklist in itslearning is personal with focus on task with deadline in near future. This API is used to display tasks in a chronological way (overdue, today, tomorrow, later).

Secured with Oauth2, and requires OAuth2 API scope TaskListDailyWorkflow.

APIDescription
GET restapi/personal/tasklistdailyworkflow/{courseId}/completed/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of completed tasks for a user in a course.

GET restapi/personal/tasklistdailyworkflow/{courseId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of tasks assigned to the user separated into sections.

GET restapi/personal/tasklistdailyworkflow/{courseId}/viewas/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of tasks assigned to a user in View As mode.

GET restapi/personal/tasklistdailyworkflow/child/{childId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

For a parent gets a list of tasks assigned to a child separated into sections.

GET restapi/personal/tasklistdailyworkflow/completed/child/{childId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

For a parent gets a list of tasks completed for a child.

GET restapi/personal/tasklistdailyworkflow/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of tasks assigned to the user separated into sections.

Tasks

Overview:

Endpoint for Tasks API.

Tasks in itslearning are personal, and are related to something a user should do in the future.

Secured with Oauth2, and requires OAuth2 API scope Tasks.

APIDescription
GET restapi/personal/tasks/followuptasks/{courseId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets follow up tasks for a course.

The list shows activities a given course that have new or updated submissions/student work, or if the teacher needs to assess a submission/attempt. Requires admin permissions for the course.

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0.

GET restapi/personal/tasks/followuptasks/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets the user's follow up tasks.

The list shows activities from favorite courses that have new or updated submissions/student work, or if the teacher needs to assess a submission/attempt. This will give the teacher an easy overview to see if there are updates, and to decide which to follow up next.

Supports paging. If paging is not used, it will use a default pageSize on pageIndex 0.

GET restapi/personal/tasks/v1?PageIndex={PageIndex}&PageSize={PageSize}&status={status}&deadline={deadline}&isHomework={isHomework}

Gets a list of tasks assigned to the user.

Token

Overview:

API that handles OAuth2 access control:

Grants accesstokens based on authorization code, refreshtoken or JWT bearer

APIDescription
POST restapi/oauth2/token

Get a new access token from either refresh_token, authorization_code or JWT bearer.

The request's Content-Type must be x-www-form-urlencoded.

The post should look like this on authorization request:

client_id=7abc00f3-32e6-4602-a784-c51b36d2798d&grant_type=authorization_code&code=1-53aa19e823514c1c936dc2a654ba30ec7cF3KUBGTq
When refreshing the token, the post should look like this:
client_id=7abc00f3-32e6-4602-a784-c51b36d2798d&grant_type=refresh_token&refresh_token=1-53aa19e823514c1c936dc2a654ba30ec7cF3KUBGTq
When requesting a server-to-server access token, the post should look like this:
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=...

Note that the grant_type should be "authorization_code" when doing the first request after getting authorization by the user. However, when refreshing the token, the grant_type should be "refresh_token". The token parameter is "code" on authorization, and "refresh_token" on refreshing access_token. In case of a server-to-server access token the grant_type should be "urn:ietf:params:oauth:grant-type:jwt-bearer".

DELETE restapi/oauth2/token/v1

Revoke refresh token and disable push notifications if it's last one.

Workload

Overview:

Endpoint for Workload API.

Secured with Oauth2, and requires OAuth2 API scope Workload.

APIDescription
GET restapi/personal/workload/assignments/{studentId}/{courseId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of assignments for a particular student in a particular course with corresponding workload

GET restapi/personal/workload/course/{courseId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of students in a specified course with corresponding workload.

GET restapi/personal/workload/courses/{studentId}/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of courses with corresponding workload for a student.

GET restapi/personal/workload/mentees/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of mentees with corresponding workload.

GET restapi/personal/workload/students/v1?PageIndex={PageIndex}&PageSize={PageSize}

Gets a list of all students with their corresponding workload.

YourFiles

APIDescription
GET restapi/personal/yourfiles/courses/v1?PageIndex={PageIndex}&PageSize={PageSize}&searchPhrase={searchPhrase}&sortField={sortField}&sortOrder={sortOrder}

Get courses for the current user

PUT restapi/personal/yourfiles/private/files/{fileId}/v1?newName={newName}

Renames a file in your private files

DELETE restapi/personal/yourfiles/private/files/v1

Delete files in your private files area

POST restapi/personal/yourfiles/private/files/v1?folderId={folderId}

Upload files to your private area

DELETE restapi/personal/yourfiles/private/folders/{folderId}/v1

Deletes a folder

POST restapi/personal/yourfiles/private/folders/{folderId}/v1?name={name}

Add new folder

PUT restapi/personal/yourfiles/private/folders/{folderId}/v1?newName={newName}

Renames a folder in your private files

GET restapi/personal/yourfiles/private/v1?path={path}&searchPhrase={searchPhrase}

Get courses for the current user