openapi: 3.0.0 info: title: Tovuti REST API version: 1.38.0 termsOfService: https://www.tovutilms.com/terms contact: name: Tovuti Support Page url: http://www.tovutilms.com/help email: support@tovutiteam.com license: name: Tovuti LMS End User License url: https://www.tovutilms.com/end-user-license servers: - url: https://api.tovuti.io/api/v1 security: - sanctumToken: - "tovuti:all" tags: - name: Assignments - name: Audit - name: Awards - name: Checklists - name: Community Groups - name: Courses - name: Course Categories - name: Course Progress - name: Custom Fields - name: Events - name: Learning Paths - name: Learning Path Categories - name: Learning Path Subcategories - name: Lessons - name: Media Categories - name: Media Items - name: Meetings - name: Objects - name: Object Types - name: Quizzes - name: Subscriptions - name: Surveys - name: Teams - name: Users - name: User Groups paths: /audit/admin: get: tags: - Audit summary: Read Admin Audit Log parameters: - in: query schema: type: integer name: cursor description: Retrieve all log entries after this ID - in: query schema: type: string format: date description: Limit results to log entries before this date example: 2023-01-12 name: before - in: query schema: type: string format: date description: Limit results to log entries after this date example: 2023-01-12 name: after - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Audit" /audit/auth: get: tags: - Audit summary: Read User Authentication log parameters: - in: query schema: type: integer name: cursor description: Retrieve all log entries after this ID - in: query schema: type: string format: date description: Limit results to log entries before this date example: 2023-01-12 name: before - in: query schema: type: string format: date description: Limit results to log entries after this date example: 2023-01-12 name: after - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/AuthAudit" /assignment: post: tags: - Assignments summary: Create Assignment requestBody: content: application/json: schema: $ref: "#/components/schemas/Assignment" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Assignment" /assignment/{id}/: get: tags: - Assignments summary: Read Assignment parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Assignment" patch: tags: - Assignments summary: Update Assignment parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Assignment" responses: "200": description: Successful Response. content: application/json: {} delete: tags: - Assignments summary: Delete Assignment parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /assignments: get: tags: - Assignments summary: Read Assignments parameters: - in: query schema: type: string description: Comma separated list of assignment ids. example: 1,2,3 name: assignmentIds - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Assignment" /award: post: tags: - Awards summary: Create Award requestBody: content: application/json: schema: $ref: "#/components/schemas/Award" responses: "200": description: Successful Response. content: application/json: {} /award/{id}/: get: tags: - Awards summary: Read Award parameters: - in: path name: id required: true schema: type: integer responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Award" patch: tags: - Awards summary: Update Award parameters: - in: path name: id required: true schema: type: integer requestBody: content: application/json: schema: $ref: "#/components/schemas/Award" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Award" delete: tags: - Awards summary: Delete Award parameters: - in: path name: id required: true schema: type: integer responses: "200": description: Successful Response. content: application/json: {} /award/{id}/deleteEarned: delete: tags: - Awards summary: Delete Earned Awards parameters: - in: path name: id required: true schema: type: integer responses: "200": description: Successful Response. content: application/json: {} /awards: get: tags: - Awards summary: Read Awards parameters: - in: query name: awardIds schema: type: string - in: query name: title schema: type: string - in: query name: type schema: type: string - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Award" /checklist: post: tags: - Checklists summary: Create Checklist requestBody: content: application/json: schema: $ref: "#/components/schemas/Checklist" responses: "200": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/Checklist" /checklist/{id}: get: tags: - Checklists summary: Read Checklist parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Checklist" patch: tags: - Checklists summary: Update Checklist description: 'Checklist items can be updated by passing the id of the checklist item in the patch, for example: { "id": "1689003604CWilGr", "title": "Updated Title" }. If a checklist item needs to be deleted, include the delete flag and set it to true, for example: { "id": "1689003604CWilGr", "delete": true }.' parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Checklist" responses: "200": description: Successful Response. content: application/json: {} delete: tags: - Checklists summary: Delete Checklist parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /checklists: get: tags: - Checklists summary: Read Checklists parameters: - in: query schema: type: string description: Comma separated list of quiz ids. example: 1,2,3 name: checklistIds - in: query schema: type: string example: ChecklistTitle name: title - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Checklist" /communityGroup: post: tags: - Community Groups summary: Create Community Group requestBody: content: application/json: schema: $ref: "#/components/schemas/CommunityGroup" responses: "201": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/CommunityGroup" /communityGroup/{id}/: get: tags: - Community Groups summary: Read Community Group parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/CommunityGroup" patch: tags: - Community Groups summary: Update Community Group parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/CommunityGroup" responses: "200": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/CommunityGroup" delete: tags: - Community Groups summary: Delete Community Group parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /communityGroups: get: tags: - Community Groups summary: Read Community Groups parameters: - name: id in: query schema: type: integer - name: name in: query schema: type: string - name: group_id in: query schema: type: integer description: A User group ID - name: published in: query schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/CommunityGroup" /course: post: tags: - Courses summary: Create Course requestBody: content: application/json: schema: $ref: "#/components/schemas/Course" responses: "200": description: Successful Response. content: application/json: {} /course/{id}/: get: tags: - Courses summary: Read Course parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: allOf: - $ref: "#/components/schemas/Course" - type: object properties: locked: type: integer description: 0 - Course is Unlocked, 1 - Course is Locked patch: tags: - Courses summary: Update Course parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Course" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Course" delete: tags: - Courses summary: Delete Course parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /courses: get: tags: - Courses summary: Read Courses parameters: - name: courseIds in: query schema: type: string - name: title in: query schema: type: string - name: courses_sub_categories_ids in: query schema: type: string description: List of sub categories to search for. example: "1,2,104" - name: finalCourseSurveyId in: query schema: type: integer description: Id of the final course survey for this course. - name: published in: query schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" - name: modifyDate in: query description: Options include lt, gt, le, and ge for <, >, <=, and >=. Leave blank for =. schema: type: string example: lt2022-16-15 responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Course" /courseCategory: post: tags: - Course Categories summary: Create Course Category requestBody: content: application/json: schema: $ref: "#/components/schemas/CourseCategory" responses: "200": description: Successful Response. content: application/json: {} /courseCategory/{id}/: get: tags: - Course Categories summary: Read Course Categories parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/CourseCategory" patch: tags: - Course Categories summary: Edit Course Category parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/CourseCategory" responses: "200": description: Successful Response. content: application/json: {} delete: tags: - Course Categories summary: Delete Course Category parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /courseCategories: get: tags: - Course Categories summary: Read Course Categories parameters: - name: courseCategoryIds in: query schema: type: string example: 1,2,3 - name: title in: query schema: type: string example: Course Title - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/CourseCategory" /courseProgress: post: tags: - Course Progress summary: Create Course Progress requestBody: content: application/json: schema: $ref: "#/components/schemas/CourseProgress" responses: "200": description: Successfully created users. content: application/json: {} /courseProgress/{id}/: get: tags: - Course Progress summary: Read Course Progress parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Course progress record. content: application/json: schema: type: array items: $ref: "#/components/schemas/CourseProgress" patch: tags: - Course Progress summary: Update Course Progress parameters: - in: path name: id schema: type: integer required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/CourseProgress" responses: "200": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/CourseProgress" delete: tags: - Course Progress summary: Delete Course Progress parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successfully deleted users. content: application/json: {} /courseProgresses: get: tags: - Course Progress summary: Read Course Progresses description: All parameters can be used in either the query or the request body. parameters: - in: query name: user_id schema: type: integer description: Search by user id. - in: query name: course_id schema: type: integer description: Search by course id. - in: query name: lesson_id schema: type: integer description: Search by lesson id. - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/CourseProgress" /customField/{id}/: get: tags: - Custom Fields summary: Read Custom Field parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/CustomField" /customFields: get: tags: - Custom Fields summary: Read Custom Fields parameters: - in: query name: customFieldIds schema: type: string - in: query name: name schema: type: string - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: '#/components/schemas/User' /event: post: tags: - Events summary: Create Event requestBody: content: application/json: schema: $ref: "#/components/schemas/Event" multipart/form-data: schema: $ref: "#/components/schemas/EventWithImage" responses: "200": description: Successful Response. content: application/json: {} /event/{id}/: get: tags: - Events summary: Read Event parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Event" post: tags: - Events summary: Update Event. parameters: - in: path name: id schema: type: string required: true requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/EventWithImage" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Event" patch: tags: - Events summary: Update Event. parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Event" responses: "200": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/CourseProgress" /event/{id}/register/: post: tags: - Events summary: Register for Event description: Only free events, with registration type = 0 or registration_type = 1 can be registered for at this time. Users are registered as individuals. Users must already exist in the system in order to be registered for an event. parameters: - in: path name: id schema: type: string required: true - in: query name: userIds required: true schema: type: array items: type: integer example: [1620265, 1620266, 1620265] responses: "200": description: Successful Response. content: application/json: {} /event/{id}/checkin/: post: tags: - Events summary: Check Users into Event parameters: - in: path name: id schema: type: string required: true - in: query name: userIds required: true schema: type: array items: type: integer example: [1620265, 1620266, 1620265] - in: query name: cancel schema: type: boolean description: if set to true, checked_in will be set to 0. responses: "200": description: Successful Response. content: application/json: {} /events: get: tags: - Events summary: Read - Events parameters: - in: query name: eventIds schema: type: string - in: query name: title schema: type: string - in: query name: languages schema: type: string description: Comma-separated list of languages. Event languages default to '*' which is all languages. - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Event" /locations: get: tags: - Events summary: Read - Locations parameters: - in: query name: eventIds schema: type: string - in: query name: locationIds schema: type: string - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Location" /learningPath: post: tags: - Learning Paths summary: Create a Learning Path requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPath" multipart/form-data: schema: $ref: "#/components/schemas/LearningPathWithImage" responses: "201": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPath" /learningPath/{id}: get: tags: - Learning Paths summary: Read Learning Path parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPath" patch: tags: - Learning Paths summary: Update Learning Path parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPath" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPath" post: tags: - Learning Paths summary: Update Learning Path parameters: - in: path name: id schema: type: string required: true requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/LearningPathWithImage" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPath" delete: tags: - Learning Paths summary: Delete Learning Path parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /learningPaths: get: tags: - Learning Paths summary: Read Learning Paths parameters: - name: title in: query schema: type: string example: All About Tovuti description: "" - name: id in: query schema: type: integer example: 1 - name: user in: query schema: type: integer example: 1 description: Show learning paths that include the given user id in the view permission - name: usergroup in: query schema: type: integer example: 1 description: Show learning paths that include the given user group id in the view permission - name: courses in: query schema: type: string example: 1,3 description: "Comma separated list of course IDs" - name: tags in: query schema: type: string example: 1,3 description: "Comma separated list of Tag IDs" - name: subcategories in: query schema: type: string example: 1,3 description: "Comma separated list of subcategory IDs" - in: query schema: type: string format: date description: Limit results to those created before this date example: 2023-01-12 name: createdBefore - in: query schema: type: string format: date description: Limit results to those created after this date example: 2023-01-12 name: createdAfter - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/LearningPath" /learningPathCategory: post: tags: - Learning Path Categories summary: Create a Learning Path Category requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPathCategory" responses: "201": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathCategory" /learningPathCategory/{id}: get: tags: - Learning Path Categories summary: Read Learning Path Category parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathCategory" patch: tags: - Learning Path Categories summary: Update Learning Path Category parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPathCategory" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathCategory" delete: tags: - Learning Path Categories summary: Delete Learning Path Category parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /learningPathCategories: get: tags: - Learning Path Categories summary: Read Learning Path Categories parameters: - name: title in: query schema: type: string example: All About Tovuti description: "" - name: id in: query schema: type: integer example: 1 - name: subcategories in: query schema: type: string example: 1,3 description: "Comma separated list of subcategory IDs" - in: query schema: type: string format: date description: Limit results to those created before this date example: 2023-01-12 name: createdBefore - in: query schema: type: string format: date description: Limit results to those created after this date example: 2023-01-12 name: createdAfter - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/LearningPathCategory" /learningPathSubcategory: post: tags: - Learning Path Subcategories summary: Create a Learning Path Subcategory requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" multipart/form-data: schema: $ref: "#/components/schemas/LearningPathSubcategoryWithImage" responses: "201": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" /learningPathSubcategory/{id}: get: tags: - Learning Path Subcategories summary: Read Learning Path Subcategory parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" patch: tags: - Learning Path Subcategories summary: Update Learning Path Subcategory parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" post: tags: - Learning Path Subcategories summary: Update Learning Path Subcategory parameters: - in: path name: id schema: type: string required: true requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/LearningPathSubcategoryWithImage" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/LearningPathSubcategory" delete: tags: - Learning Path Subcategories summary: Delete Learning Path Subcategory parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /learningPathSubcategories: get: tags: - Learning Path Subcategories summary: Read Learning Path Subcategories parameters: - name: title in: query schema: type: string example: All About Tovuti description: "" - name: id in: query schema: type: integer example: 1 - name: categories in: query schema: type: string example: 1,3 description: "Comma separated list of category IDs" - name: learning_paths in: query schema: type: string example: 1,3 description: "Comma separated list of learning path IDs" - in: query schema: type: string format: date description: Limit results to those created before this date example: 2023-01-12 name: createdBefore - in: query schema: type: string format: date description: Limit results to those created after this date example: 2023-01-12 name: createdAfter - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/LearningPathSubcategory" /lesson: post: tags: - Lessons summary: Create Lesson requestBody: content: application/json: schema: $ref: "#/components/schemas/LessonInsert" responses: "200": description: Successful Response. content: application/json: {} /lesson/{id}/: get: tags: - Lessons summary: Read Lesson parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Lesson" patch: tags: - Lessons summary: Update Lesson parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/LessonInsert" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Lesson" delete: tags: - Lessons summary: Delete Lesson parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /lessons: get: tags: - Lessons summary: Read Lessons parameters: - name: courseTitle in: query schema: type: string example: All About Tovuti description: "" - in: query $ref: "#/components/parameters/courseIdsParam" - name: language in: query schema: type: string example: en-GB description: "" - name: lessonIds in: query schema: type: string example: 1,3 description: "" - name: lessonTitle in: query schema: type: string example: About Tovuti description: "" - name: published in: query schema: type: string example: 0|1 description: "" - name: modifyDate in: query description: Options include lt, gt, le, and ge for <, >, <=, and >=. Leave blank for =. schema: type: string example: lt2022-16-15 - name: teacherName in: query schema: type: string example: Salomon Arthur description: "" - name: isFinalCourseSurvey in: query schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Lesson" /mediaCategory: post: tags: - Media Categories summary: Create Media Category requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/MediaCategory" responses: "200": description: Successful Response. content: application/json: {} /mediaCategory/{id}/: get: tags: - Media Categories summary: Read Media Category parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/MediaCategory" patch: tags: - Media Categories summary: Update Media Category parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/MediaCategory" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/MediaCategory" delete: tags: - Media Categories summary: Delete Media Category parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /mediaCategories: get: tags: - Media Categories summary: Read Media Categories parameters: - name: title in: query schema: type: string example: category name description: "" - name: mediaCategoryIds in: query schema: type: string example: 1,3 description: "" - name: published in: query schema: type: string example: 0|1 description: "" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/MediaCategory" /mediaItem: post: tags: - Media Items summary: Create Media Item requestBody: content: multipart/form-data: schema: $ref: "#/components/schemas/MediaItem" responses: "200": description: Successful Response. content: application/json: {} /mediaItem/{id}/: get: tags: - Media Items summary: Read Media Item parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/MediaItem" patch: tags: - Media Items summary: Update Media Item Without File Upload parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/MediaItemNoData" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/MediaItem" delete: tags: - Media Items summary: Delete Media Item parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /mediaItems: get: tags: - Media Items summary: Read Media Items parameters: - name: title in: query schema: type: string example: my video description: "" - name: mediaItemIds in: query schema: type: string example: 1,3 description: "" - name: published in: query schema: type: string example: 0|1 description: "" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/MediaItem" /meeting: post: tags: - Meetings summary: Create Meeting requestBody: content: application/json: schema: $ref: "#/components/schemas/Meeting" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Meeting" /meeting/{id}/: get: tags: - Meetings summary: Update Meeting parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Meeting" patch: tags: - Meetings summary: Update Meeting parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Meeting" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Meeting" delete: tags: - Meetings summary: Delete Meeting parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /meetings: get: tags: - Meetings summary: Read Meetings parameters: - in: query name: meetingIds schema: type: string - in: query name: meetingName schema: type: string - in: query name: meetingType schema: type: string example: tovuti|zoom|webex|gotomeeting|google|joinme|other - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Meeting" /object: post: tags: - Objects summary: Create Object requestBody: content: application/json: schema: $ref: "#/components/schemas/Object" responses: "200": description: Successful Response. content: application/json: {} /object/{id}/: get: tags: - Objects summary: Read Object parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Object" patch: tags: - Objects summary: Update Object parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Object" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Object" delete: tags: - Objects summary: Delete Object parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /objects: get: tags: - Objects summary: Read Objects parameters: - name: title in: query schema: type: string example: MyOrganization description: "" - in: query $ref: "#/components/parameters/customFieldsParam" - in: query name: objectIds required: true schema: type: string example: 1,2,3 - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Object" /objectType: post: tags: - Object Types summary: Create Object Type requestBody: content: application/json: schema: $ref: "#/components/schemas/ObjectType" responses: "200": description: Successful Response. content: application/json: {} /objectType/{id}/: get: tags: - Object Types summary: Read Object Type parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/ObjectType" patch: tags: - Object Types summary: Update Object Type parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/ObjectType" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/ObjectType" delete: tags: - Object Types summary: Delete Object Type parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /objectTypes: get: tags: - Object Types summary: Read Object Types parameters: - name: title in: query schema: type: string example: MyOrganization description: "" - in: query name: objectTypeIds required: true schema: type: string example: 3,4,5 - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/ObjectType" /quiz: post: tags: - Quizzes summary: Create Quiz requestBody: content: application/json: schema: $ref: "#/components/schemas/Quiz" responses: "200": description: Successful Response. content: application/json: {} /quiz/{id}/: get: tags: - Quizzes summary: Read Quiz parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Quiz" patch: tags: - Quizzes summary: Update Quiz parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Quiz" responses: "200": description: Successful Response. content: application/json: {} delete: tags: - Quizzes summary: Delete Quiz parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /quizzes: get: tags: - Quizzes summary: Read Quizzes parameters: - in: query schema: type: string description: Comma separated list of quiz ids. example: 1,2,3 name: quizIds - in: query schema: type: string description: Comma separated list of course ids. example: 1,2,3 name: courseIds - in: query schema: type: string description: Comma separated list of lesson ids. example: 1,2,3 name: lessonIds - in: query schema: type: string name: title - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" - in: query schema: type: string name: createdBefore - in: query schema: type: string name: createdAfter responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Quiz" /submitQuiz: post: tags: - Quizzes summary: Submit quiz answers requestBody: content: application/json: schema: type: object $ref: "#/components/schemas/QuizResponsePayload" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/QuizResult" /subscription: post: tags: - Subscriptions summary: Create Subscription requestBody: content: application/json: schema: $ref: "#/components/schemas/Subscription" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Subscription" /subscription/{id}/: get: tags: - Subscriptions summary: Read Subscription #TODO add parameters for updating user groups parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Subscription" patch: tags: - Subscriptions summary: Edit Subscription #TODO add parameters for updating user groups parameters: - in: path name: id schema: type: integer required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Subscription" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Subscription" delete: tags: - Subscriptions summary: Delete Subscription #TODO add parameters for updating user groups parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successful Response. content: application/json: {} /subscriptions: get: tags: - Subscriptions summary: Read Subscriptions parameters: - in: query name: subscriptionIds schema: type: string - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Subscription" /subscription/{id}/subscribe/: post: tags: - Subscriptions summary: Subscribe User(s) to a Subscription Plan description: Only free subscriptions are supported at this time. Users must already exist in the system in order to subscribe. parameters: - in: path name: id schema: type: string required: true - in: query name: userIds required: true schema: type: array items: type: integer example: [1620265, 1620266, 1620265] responses: "200": description: Successful Response. content: application/json: {} /subscription/{id}/unsubscribe/: post: tags: - Subscriptions summary: Unsubscribe User(s) from a Subscription Plan description: Only free subscriptions are supported at this time. parameters: - in: path name: id schema: type: string required: true - in: query name: userIds required: true schema: type: array items: type: integer example: [1620265, 1620266, 1620265] responses: "200": description: Successful Response. content: application/json: {} /survey/{id}: get: tags: - Surveys summary: Read Survey parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Survey" /surveyResponse: post: tags: - Surveys summary: Create Survey Response requestBody: content: application/json: schema: $ref: "#/components/schemas/SurveyResponse" responses: "200": description: Successful Response. content: application/json: {} /surveyResponses: get: tags: - Surveys summary: Read Survey Responses parameters: - in: query name: userId schema: type: integer - in: query name: surveyId schema: type: integer - in: query name: lessonId schema: type: integer - in: query name: activityId schema: type: string - in: query name: eventId schema: type: integer - in: query name: questionId schema: type: string - in: query name: archived schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/SurveyResponse" post: tags: - Surveys summary: Create Survey Responses requestBody: content: application/json: schema: type: object properties: responses: type: array items: $ref: "#/components/schemas/SurveyResponse" responses: "200": description: Successful Response. content: application/json: {} /team: post: tags: - Teams summary: Create User Team requestBody: content: application/json: schema: $ref: "#/components/schemas/Team" responses: "200": description: Successful Response. content: application/json: {} /team/{id}/: get: tags: - Teams summary: Read User Team parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: '#/components/schemas/Team' patch: tags: - Teams summary: Update User Team parameters: - in: path name: id schema: type: string required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/Team" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/Team" delete: tags: - Teams summary: Delete User Team parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /teams: get: tags: - Teams summary: Read User Teams parameters: - in: query $ref: "#/components/parameters/teamIdsParam" - in: query name: title schema: type: string - in: query name: member_type schema: type: string example: individuals, groups - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/Team" /user: post: tags: - Users summary: Create User description: userTeamIds can only be assigned for teams with member_type = 'individuals'. requestBody: content: application/json: schema: $ref: "#/components/schemas/UserPayload" responses: "200": description: Successfully created users. content: application/json: schema: type: array items: $ref: "#/components/schemas/User" /user/{id}/: get: tags: - Users summary: Read User parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successfully created user content: application/json: schema: type: array items: $ref: "#/components/schemas/User" patch: tags: - Users summary: Update User description: UserTeamIds can only be assigned for teams with member_type = 'individuals'. parameters: - in: path name: id schema: type: integer required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/UserPayload" responses: "200": description: Successful Response. content: application/json: schema: type: array items: $ref: "#/components/schemas/User" delete: tags: - Users summary: Delete User parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successfully deleted users. content: application/json: {} /user/{id}/communityGroups: get: tags: - Users summary: Read User Community Groups parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/CommunityGroupIds" patch: tags: - Users summary: Update User Community Groups parameters: - in: path name: id schema: type: integer required: true requestBody: content: application/json: schema: $ref: "#/components/schemas/CommunityGroupIds" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/CommunityGroupIds" /user/{id}/courseProgress: get: tags: - Users summary: Read User Course Progress parameters: - in: path name: id schema: type: integer required: true - in: query name: lessonId description: Filter by Lesson Id. schema: type: integer - in: query name: courseId description: Filter by Course Id. schema: type: integer - in: query name: archived description: If true, show only archived data. schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/UserCourseProgress" /users: get: tags: - Users summary: Read Users description: All parameters can be used in either the query or the request body. parameters: - in: query $ref: "#/components/parameters/userIdsParam" - in: query name: name schema: type: string description: Search by user name. - in: query name: email schema: type: string description: Search by user email. - in: query name: status schema: type: string description: Search by user status (active/disabled) status. - in: query $ref: "#/components/parameters/objectIdsParam" - in: query name: objectTitle schema: type: integer description: Search Object Title associated to user. - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" - in: query $ref: "#/components/parameters/customFieldsParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/User" /users/awards: get: tags: - Users summary: Read User Awards parameters: - in: query $ref: "#/components/parameters/userNameParam" - in: query $ref: "#/components/parameters/awardTitleParam" - in: query $ref: "#/components/parameters/badgeNameParam" - in: query $ref: "#/components/parameters/awardTypeParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/AwardEarned" /users/awards/{id}: delete: tags: - Users summary: Delete User Awards parameters: - in: path schema: type: integer name: id required: true responses: "200": description: Successful Response. content: application/json: schema: type: object example: {"success": "AwardEarned id = {$id} deleted"} /users/checklistProgress: get: tags: - Users summary: Read User Checklist Progress parameters: - in: query $ref: "#/components/parameters/userNameParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query name: archived description: If true, show only archived data. schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/ChecklistProgress" /users/courseProgress: get: tags: - Users summary: Read User Course Progress parameters: - in: query $ref: "#/components/parameters/courseTitleParam" - in: query $ref: "#/components/parameters/courseEnabledParam" - in: query $ref: "#/components/parameters/userNameParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query name: archived description: If true, show only archived data. schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" - in: query name: startedBefore schema: type: string - in: query name: startedAfter schema: type: string - in: query name: lastActivityBefore schema: type: string - in: query name: lastActivityAfter schema: type: string - in: query name: completedBefore schema: type: string - in: query name: completedAfter schema: type: string responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/CourseProgress" /users/events: get: tags: - Users summary: Read Events parameters: - in: query $ref: "#/components/parameters/userNameParam" - in: query $ref: "#/components/parameters/eventTitleParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query $ref: "#/components/parameters/eventIdsParam" - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/EventRegistration" /users/quizResults: get: tags: - Users summary: Read Quizzes / Surveys parameters: - in: query name: ids schema: type: string description: Comma separated list of ids for the quiz result. - in: query name: quizIds schema: type: string description: Comma separated list of quiz ids. - in: query $ref: "#/components/parameters/userNameParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/teamIdsParam" - in: query name: archived description: If true, show only archived data. schema: type: boolean - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" - in: query name: lessonId schema: type: integer - in: query name: submittedBefore schema: type: string - in: query name: submittedAfter schema: type: string responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/QuizResult" /users/sendWelcomeEmail: post: tags: - Users summary: Send Welcome Emails. When sending the Welcome Email, a new system-generated password will be sent and, upon logging in, the user will be prompted to reset their password. parameters: - in: query name: userIds required: true schema: type: array items: type: integer example: [1620265, 1620266, 1620265] responses: "200": description: Successful Response. content: application/json: {} /userGroup: post: tags: - User Groups summary: Create User Group requestBody: content: application/json: schema: $ref: "#/components/schemas/UserGroup" responses: "200": description: Successful Response. content: application/json: {} /userGroup/{id}/: get: tags: - User Groups summary: Read User Group parameters: - in: path name: id schema: type: integer required: true responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/UserGroup" patch: tags: - User Groups summary: Update User Group parameters: - in: path name: id schema: type: integer required: true requestBody: content: application/json: schema: type: object $ref: "#/components/schemas/UserGroup" responses: "200": description: Successful Response. content: application/json: schema: $ref: "#/components/schemas/UserGroup" delete: tags: - User Groups summary: Delete User Group description: Delete a User Group via API. parameters: - in: path name: id schema: type: string required: true responses: "200": description: Successful Response. content: application/json: {} /userGroups: get: tags: - User Groups summary: Read User Groups parameters: - in: query $ref: "#/components/parameters/groupIdsParam" - in: query $ref: "#/components/parameters/userIdsParam" - in: query name: title schema: type: string description: Search by title of the user group. - in: query name: lft schema: type: integer description: Start of range that contains descendant user groups. Required if lft is present. See https://en.wikipedia.org/wiki/Nested_set_model for more info. - in: query name: rgt schema: type: integer description: Start of range that contains descendant user groups. Required if lft is present. - in: query name: parentId schema: type: integer - in: query $ref: "#/components/parameters/pageParam" - in: query $ref: "#/components/parameters/pageSizeParam" responses: "200": description: Successful Response. content: application/json: schema: type: object allOf: - $ref: "#/components/schemas/PageData" properties: data: type: array items: $ref: "#/components/schemas/UserGroup" components: parameters: awardTitleParam: name: awardTitle in: query description: Award title. schema: type: string example: King of Sales awardTypeParam: name: awardType in: query description: Award type. schema: type: string example: certificate badgeNameParam: name: badgeName in: query description: Badge Name. schema: type: string example: Awesome Badge courseEnabledParam: name: courseEnabled in: query description: Course is enabled? (0 for false 1 for true). schema: type: integer example: 1 courseIdsParam: name: courseIds in: query description: Course Ids. schema: type: string example: 3,4,6 courseTitleParam: name: courseTitle in: query description: Course Title. schema: type: string example: Quantum gravity 101 customFieldsParam: name: customFields in: query description: When querying custom fields you can use either field_id or title to specify the field value you want to query. % wildcard can be used in value key. example: "https://api.tovuti.io/api/v1/users?customFields[0][field_id]=44&customFields[0][value]=73958" schema: type: array items: $ref: "#/components/schemas/CustomFieldValue" eventIdsParam: name: eventIds in: query description: Comma separated list of event ids schema: type: string example: 1,2,3 eventTitleParam: name: eventTitle in: query description: Event title. schema: type: string example: The concept of art groupIdsParam: name: groupIds in: query description: Comma separated list of group ids. schema: type: string example: 8,50,51 objectIdsParam: name: objectIds in: query description: Comma separated list of object ids. schema: type: string example: 8,50,51 pageParam: name: page in: query description: Page number. example: 1 schema: type: integer pageSizeParam: name: pageSize in: query description: Page size, allowed values are 25,50,100,250. example: 50 schema: type: integer teamIdsParam: name: teamIds in: query description: Comma separated list of team ids. schema: type: string example: 1,2,3 userIdsParam: name: userIds in: query description: Comma separated list of user ids. schema: type: string example: 1719918,1719907,1719901 userNameParam: name: userName in: query description: User name. schema: type: string example: Jack Sparrow responses: IllegalInput: description: Illegal input for operation. GeneralError: description: General Error. content: application/json: schema: $ref: "#/components/schemas/GeneralError" NotFound: description: Entity not found. securitySchemes: sanctumToken: type: http scheme: bearer schemas: ActivityProgress: type: object example: '{ "id": 85, "course_id": 14, "lesson_id": 14, "activity_id": "1634744941VX67MB", "user_id": 1620275, "activity_type": "textbox", "activity_request": "", "student_response": "STUDENT_RESPONSE", "teacher_comment": null, "grade": null, "request_resubmission": null, "completed": 0, "params": null, "date_submitted": "2021-10-20 11:49:25", "date_modified": "2023-03-28 14:03:26", "archive_date": null, "user_agent": "api", "event_id": null, "event_completion_type": null, "registration_id": null }' ActivityProgressParam: type: object required: - user_id - student_response - status properties: user_id: type: integer example: 1714926 student_response: type: string description: Student Response ( link / text / video_id ). example: Response from User|http://example.com|12432432 status: type: string description: Completion status for current activity. example: completed|started|not started Assignment: type: object required: - title - course_ids properties: id: type: integer readOnly: true example: 1 title: type: string type: type: string description: Set to 'recommended' for courses in this assignment to show up as recommended or 'assigned' for courses to show up as assigned. example: recommended|assigned course_ids: type: array items: type: integer usergroups: type: array items: type: integer user_ids: type: array items: type: integer users: readOnly: true type: array items: type: object properties: id: type: integer example: 1620265 username: type: string example: johndoe email: type: string example: john@doe.com name: type: string example: John Doe free: type: boolean description: If true, the assignment is free. start_date: type: string format: date end_date: type: string format: date due_date: type: string format: date days_to_complete: type: integer readOnly: true assignment_filter_type: type: string description: Filter type ( users or groups ). example: groups team_id: type: integer created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true Audit: type: object properties: id: readOnly: true type: integer action: readOnly: true type: string date: readOnly: true type: string format: date user: readOnly: true type: object properties: id: type: integer example: 1620265 username: type: string example: johndoe email: type: string example: john@doe.com name: type: string example: John Doe ip_address: readOnly: true type: string target_item_id: readOnly: true type: integer description: The ID of the record that was acted on, if there is one changes: readOnly: true type: array items: type: object properties: field_name: type: string before: type: string after: type: string supplemental_data: readOnly: true type: object description: Any additional info stored by the audit log for this action AuthAudit: type: object properties: id: readOnly: true type: integer action: readOnly: true type: string date: readOnly: true type: string format: date user: readOnly: true type: object properties: id: type: integer example: 1620265 username: type: string example: johndoe email: type: string example: john@doe.com name: type: string example: John Doe Award: type: object required: - title - type properties: id: type: integer readOnly: true example: 1 title: type: string example: Badge of Awesomeness type: type: string description: Can be badge, certificate, or milestone. example: badge|certificate|milestone description: type: string example: This badge is awesome! enabled: type: boolean example: Set to 0|1 for false|true. status: type: string description: Either 'active' or 'disabled'. example: active|disabled expiration_type: type: string description: Type of time period after which the certificate will expire. Possible values are "year", "month", "week", "day". example: year|month|week|day expiration_classification: type: string description: Type of award expiration. Possible values are "static", "dynamic", "none". example: static|dynamic|none expiration_date: type: string format: date description: Date of static award expiration example: '2024-01-01 16:08:08' expiration_amount: type: integer description: The number of [expiration_type]s that will need to pass before this award expires. requirement_type: type: string description: Set this to "assigned" to assign the certificate to a specific user or set of users, or set to "conditional" to only award the certificate after a specific set of requirements are met. example: conditional|assigned user_can_lose_badge: type: boolean description: If true if the user will be able to lose their award. certificate_id: type: integer description: The certificate template this award is associated with. Only used if type = 'certificate'. requirements_all: type: boolean description: Only needed when requirement_type is set to "conditional". Set this to true if all requirements must be met, or false if any subset of them can be met to award the certificate. user_list: type: array items: type: integer description: Array of user ids to assign the award to, only used when award type = "assigned". usergroup_actions: type: boolean description: If set to true, add the users who were awarded the certificate to usergroups. add_usergroups: type: array items: type: integer description: Array of user group ids to add award recipients to. remove_usergroups: type: array items: type: integer description: Array of user group ids to remove award recipients from. points_actions: type: boolean description: If set to true, points are awarded upon attainment of the award. points_category: type: integer description: Id of points category that points should be assigned under. points: type: integer description: The number of points to be awarded on certificate attainment. requirements: type: array items: $ref: "#/components/schemas/AwardRequirement" AwardEarned: type: object properties: award_id: type: integer description: The primary key of the award_earned record. Important, this is NOT the ID of the award itself user_id: type: integer badge_id: type: integer description: The ID of the award. Can be used on the /award/{id} endpoint to pull more info. Works for badges, certificates, and milestones date_earned: type: string format: date date_expires: type: string format: date award_title: type: string award_type: type: string user_name: type: string AwardRequirement: type: object properties: requirement_active: type: boolean description: Set this to true to enable the requirement, false to disable it. requirement_type: type: string description: Set this to "category", "course", "lesson", "usergroup", "accesslevel" or "event". example: category|course|lesson|usergroup|accesslevel|event requirement_completion: type: string description: Defines whether any or all [requirement_type]s are required to be completed in order for this award to be assigned. example: any|all required_category: type: array items: type: integer description: An array of course category ids used when requirement_type = "category". required_course: type: array items: type: integer description: An array of course ids used when requirement_type = "course". required_lesson: type: array items: type: integer description: An array of lesson ids used when requirement_type = "lesson". usergroup: type: array items: type: integer description: An array of user group ids used when requirement_type = "usergroup". accesslevel: type: array items: type: integer description: An array of access level ids used when requirement_type = "accesslevel". required_event: type: array items: type: integer description: An array of event ids sed when requirement_type = "event". required_event_action: type: string description: Set this to "registered" or "checkin" when using the "event" requirement type. This will require the user to be either registered or checked in to whichever events are given as part of the requirement. example: registered|checkin Checklist: type: object properties: id: type: integer readOnly: true example: 1 title: type: string description: type: string enabled: type: boolean due_date: type: string format: date access_type: type: string example: none|access|user|list userlist: type: array items: type: integer usergroup: type: array items: type: integer accesslevel: type: array items: type: integer items: type: array items: $ref: "#/components/schemas/ChecklistItem" show_tooltip: type: boolean due_date_type: type: string example: dynamic|fixed|none description: dynamic - Due date is Dynamically Based from the date that they first received any of the assigned user groups. (requires Access Restriction Type to be set as User Group), fixed - Set scheduled Due Date. none - No due date. checklist_due_dynamic_number: type: integer description: Number of [checklist_due_dynamic_unit]s until this checklist is due. example: 5 checklist_due_dynamic_unit: type: string example: day|week|month|year description: Unit of time used for 'dynamic' due date type. ChecklistItem: type: object properties: id: type: string example: 1634694593n29Uo7 readOnly: true type: type: string description: Describes on which event this checklist item will be considered completed. example: course_completion|lesson_completion|certificate_awarded|badge_awarded|event_registration|event_checkin|watched_video|custom icon: type: string example: lizicon-1-TEP-Connect-Icon-15 title: type: string instructions: type: string due_date_type: type: string example: dynamic|fixed|none description: Dynamic due date type is based on time passed since the user was assigned to the usergroup this checklist is assigned to. Fixed is an exact date. item_due_dynamic_number: type: string description: The number of [item_due_dynamic_unit] that describe the due date of this checklist item. Only used when due_date_type = dynamic. item_due_dynamic_unit: type: string example: day|week|month|year description: The unit of time used for [item_due_dynamic_number] Only used when due_date_type = dynamic. due_date: type: string format: date description: Only used when due_date_type = fixed. course_id: type: integer example: The id of the course for the course_completion item type. lesson_id: type: integer example: The id of the lesson for the lesson_completion item type. certificate_id: type: integer example: The id of the certificate for the certificate_awarded item type badge_id: type: integer example: The id of the badge for the badge_awarded item type event_id: type: integer example: The id of the event for the event_registration or event_checkin item types media_id: type: integer example: The id of the watched_video for the watched_video item type link: type: string completion_type: type: string example: auto|admin|user description: If set to 'auto', the checklist will complete when the course/lesson/certificate/badge/event/media is completed. If set to 'admin' only an admin user can mark this item complete. If set to 'user' any user can mark this item complete. points_category: type: integer example: 1 description: The id of the points category that points will be assigned to. points: type: integer description: The number of points awarded when this item is completed. ChecklistProgress: type: object properties: user_id: type: integer readOnly: true checklist_id: type: integer readOnly: true item_id: type: integer readOnly: true item_type: type: string readOnly: true completed: type: boolean readOnly: true date: type: string format: date readOnly: true due_date: type: string format: date readOnly: true archive_date: type: string format: date readOnly: true title: type: string readOnly: true type: type: string readOnly: true due_date_type: type: string readOnly: true completion_type: type: boolean readOnly: true CommunityGroup: type: object required: - name - published - enable_user_groups properties: id: type: integer readOnly: true name: type: string published: type: boolean enable_user_groups: type: boolean owner_id: type: integer readOnly: true description: type: string users: type: array items: type: integer user_groups: type: array items: type: integer CommunityGroupIds: type: object properties: community_groups: type: array items: type: integer Course: type: object required: - title - slug - coursescategory_id properties: id: type: integer readOnly: true title: type: string example: MyCourse slug: type: string description: Unique URI for use in Search Engine Friendly urls. pattern: "[a-z-]+" coursescategory_id: type: integer format: int64 description: Id of the course category this course belongs to. courses_sub_categories_ids: type: array items: type: integer description: Comma-separated list of course category ids that this course belongs to. description: type: string short_description: type: string image: type: string video_url: type: string featured_course: type: boolean price: type: number format: float available_to_purchase: type: boolean enabled: type: boolean registrants: readOnly: true type: array items: type: integer external_link: type: string format: url final_course_survey: type: object properties: id: type: integer survey_title: type: string survey_instructions: type: string content_expires: type: boolean expiration_date: type: string format: date custom_id: type: string required_for_completion: type: boolean customFields: type: array description: When assigning customFields either a field_id or title can be provided. It is recommended to use the field_id in case there is a field name with a duplicate title. items: $ref: "#/components/schemas/CustomFieldValue" lessons: type: number format: int readOnly: true description: The number of lessons in the course. ordering: type: number format: int readOnly: true description: Used when displaying multiple courses. view_access_type: type: string example: none|list|user|access description: Visibility Permission Type. register_access_type: type: string example: none|list|user|access description: Registration Permission Type. view_access_groups: type: array items: type: integer description: array of group ids. Required if view_access_type is user. view_access_users: type: array items: type: integer description: array of user ids. Required if view_access_type is list. view_access_levels: type: array items: type: integer description: array of access level ids. Required if view_access_type is access. register_access_groups: type: array items: type: integer description: array of group ids. Required if register_access_type is user. register_access_users: type: array items: type: integer description: array of user ids. Required if register_access_type is list. register_access_levels: type: array items: type: integer description: array of access level ids. Required if register_access_type is access. multilingual_overrides: type: object items: type: object description: 'An object with multilingual override data in the form { "fr": { "use": 1, "title": "French Title", ...} }. Overrides are only included if enabled (use = 1).' use_library_content: type: boolean description: Specifies if a SCORM (or bizlibrary) package is used for this course library_content_type: type: string description: Either 'bizlibrary' or 'scorm' bizlibrary_content_title: type: string bizlibrary_content_id: type: string scorm_id: type: integer scorm_title: type: string locked: type: integer use_due_date: type: boolean readOnly: true hard_due_date: type: boolean readOnly: true due_date_type: type: string readOnly: true description: static|dynamic example: static|dynamic due_static_date: type: string format: date readOnly: true due_dynamic_number: type: integer readOnly: true due_dynamic_unit: type: string readOnly: true description: minute|hour|day|week|month|year example: minute|hour|day|week|month|year open_date: type: string format: date readOnly: true close_date: type: string format: date readOnly: true visible_before_open: type: boolean readOnly: true visible_after_close: type: boolean readOnly: true CourseCategory: type: object required: - title - slug properties: id: type: integer readOnly: true title: type: string parent_id: type: integer description: The id of the parent course category. 0 for no parent. slug: type: string description: Unique URI for use in Search Engine Friendly urls. pattern: "[a-z-]+" enabled: type: boolean view_access_type: type: string example: none|list|user|access description: Visibility Permission Type. view_access_groups: type: array items: type: integer description: array of group ids. Required if view_access_type is user. view_access_users: type: array items: type: integer description: array of user ids. Required if view_access_type is list. view_access_levels: type: array items: type: integer description: array of access level ids. Required if view_access_type is access. multilingual_overrides: type: object items: type: object description: 'An object with multilingual override data in the form { "fr": { "use": 1, "title": "French Title", ...} } . Overrides are only included if enabled (use = 1).' CourseProgress: type: object properties: user_id: type: integer course_id: type: integer language: type: string example: en-GB lessons_completed_list: type: array items: type: integer lessons_total_list: type: array items: type: integer score: type: number progress: type: number format: float date_started: type: string format: date date_last_activity: type: string format: date date_completed: type: string format: date date_due: type: string format: date archive_date: type: string format: date CustomField: type: object description: Custom fields are user defined fields that can be used in the user registration forms and/or subscription registration forms. properties: id: type: integer readOnly: true type: type: string example: "group|gender|birthdate|textarea|text|url|date|list|radio|checkbox|email|time" ordering: type: integer description: This column is used to define which group a custom field is in. For example a group with ordering = 1 would have fields in it with ordering = 2 or 3. Then another group could start at 4 with child fields with ordering id = 5 or 6. published: type: integer description: If a custom field is not published, it will not be available to be used in any registration or subscription forms. min: type: integer max: type: integer name: type: string tips: type: string visible: type: integer required: type: integer searchable: type: integer registration: type: integer options: type: string description: List of options separated by newlines. Used for list, radio, and checkbox types. example: option_one\noption_two\noption_three fieldcode: type: string description: Unique key used for field. params: type: object description: Params contains type-specific configuration for custom fields. Some options are alternate registration_text to use as the field label in the registration form, date range and format etc. example: { "registration_text": "", "display": "date", "readonly": "0", "maxrange": "1", "minrange": "1", "date_format": "1", } CustomFieldValue: type: object properties: field_id: type: integer readOnly: true title: type: string readOnly: true type: type: string readOnly: true value: type: string readOnly: true Event: type: object required: - title - event_date - alias properties: id: type: integer readOnly: true example: 1 parent_id: description: When creating a recurring event several 'child' events are created, each with a date and title based on the recurring settings and the title of the parent event. If an event has parent_id = 0 then it is a parent and may or may not have children. type: integer category_id: type: integer location_id: type: integer title: type: string example: My Event registration_type: type: integer example: 0 description: 0 - Both Individual and Group Registration, 1 - Only Individual Registration, 2 - Only Group Registration, 3 - Disable Registration. view_access: type: array items: type: integer description: ids of the groups that can view this course. example: [1] registration_access: type: array items: type: integer description: ids of the groups that can register for this course. example: [1] event_date: type: string format: date event_end_date: type: string format: date short_description: type: string description: type: string individual_price: type: number format: float event_capacity: type: integer created_by: type: integer description: User id. example: 1620265 readOnly: true cut_off_date: type: string format: date description: Registration end date. published: type: boolean featured: type: boolean registration_start_date: type: string format: date description: Registration start date. alias: type: string description: Unique URI for use in Search Engine Friendly urls pattern: '[a-z-]+' example: my-event language: type: string enable_auto_reminder: type: boolean description: If set to 'true' registrants will get auto reminder emails for this event. image: type: string timezone: type: string virtual_classroom_id: type: string example: B0C4D939-AF12-43D8-82B3-0A68D423F894 readOnly: true virtual_classroom_uri: type: string description: uri of virtual classroom that can be used for linking directly to virtual classroom readOnly: true EventWithImage: type: object required: - title - event_date - alias properties: id: type: integer readOnly: true example: 1 parent_id: description: When creating a recurring event several 'child' events are created, each with a date and title based on the recurring settings and the title of the parent event. If an event has parent_id = 0 then it is a parent and may or may not have children. type: integer category_id: type: integer location_id: type: integer title: type: string example: My Event registration_type: type: integer example: 0 description: 0 - Both Individual and Group Registration, 1 - Only Individual Registration, 2 - Only Group Registration, 3 - Disable Registration. view_access: type: array items: type: integer description: ids of the groups that can view this course. registration_access: type: array items: type: integer description: ids of the groups that can register for this course. event_date: type: string format: date event_end_date: type: string format: date short_description: type: string description: type: string individual_price: type: number format: float event_capacity: type: integer created_by: type: integer description: User id. example: 1620265 readOnly: true cut_off_date: type: string format: date description: Registration end date. published: type: boolean featured: type: boolean registration_start_date: type: string format: date description: Registration start date. alias: type: string description: Unique URI for use in Search Engine Friendly urls. pattern: "[a-z-]+" language: type: string enable_auto_reminder: type: boolean description: If set to 'true' registrants will get auto reminder emails for this event. image: type: string format: binary description: Supported file types - jpg,png,jpeg,gif. Maximum size 10MB. EventRegistration: type: object properties: event_id: type: integer user_id: type: integer group_id: type: integer first_name: type: string last_name: type: string organization: type: string address: type: string address2: type: string city: type: string state: type: string country: type: string zip: type: string phone: type: string fax: type: string email: type: string number_registrants: type: integer total_amount: type: number discount_amount: type: number amount: type: number register_date: type: string format: date payment_date: type: string format: date payment_method: type: string transaction_id: type: string axs_trxn_id: type: integer comment: type: string published: type: boolean cart_id: type: integer payment_processing_fee: type: number late_fee: type: number notified: type: boolean checked_in: type: boolean coupon_usage_calculated: type: boolean checked_in_count: type: integer deposit_amount: type: number payment_status: type: integer coupon_id: type: integer check_coupon: type: boolean tax_amount: type: number registration_code: type: string params: type: object is_reminder_sent: type: boolean is_deposit_payment_reminder_sent: type: boolean process_deposit_payment: type: boolean deposit_payment_transaction_id: type: integer deposit_payment_axs_trxn_id: type: integer user_ip: type: string deposit_payment_method: type: integer is_group_billing: type: boolean language: type: string invoice_number: type: integer cancel_date: type: string format: date original_event_id: type: integer GeneralError: type: object properties: code: type: integer format: int32 message: type: string LearningPath: type: object required: - title properties: id: type: integer readOnly: true title: type: string slug: type: string readOnly: true published: type: boolean description: type: string courses: type: array items: type: integer subcategories: type: array items: type: integer tags: type: array items: type: integer view_access_type: type: string example: none|list|user description: Visibility Permission Type. register_access_type: type: string example: none|list|user description: Registration Permission Type. view_access_groups: type: array items: type: integer description: array of group ids. Required if view_access_type is user. view_access_users: type: array items: type: integer description: array of user ids. Required if view_access_type is list. register_access_groups: type: array items: type: integer description: array of group ids. Required if register_access_type is user. register_access_users: type: array items: type: integer description: array of user ids. Required if register_access_type is list. created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true LearningPathWithImage: type: object required: - title properties: id: type: integer readOnly: true title: type: string slug: type: string readOnly: true published: type: boolean description: type: string courses: type: array items: type: integer subcategories: type: array items: type: integer tags: type: array items: type: integer image: type: string format: binary description: Supported file types - jpg,png,jpeg,gif. Maximum size 10MB. view_access_type: type: string example: none|list|user|access description: Visibility Permission Type. register_access_type: type: string example: none|list|user|access description: Registration Permission Type. view_access_groups: type: array items: type: integer description: array of group ids. Required if view_access_type is user. view_access_users: type: array items: type: integer description: array of user ids. Required if view_access_type is list. view_access_levels: type: array items: type: integer description: array of access level ids. Required if view_access_type is access. register_access_groups: type: array items: type: integer description: array of group ids. Required if register_access_type is user. register_access_users: type: array items: type: integer description: array of user ids. Required if register_access_type is list. register_access_levels: type: array items: type: integer description: array of access level ids. Required if register_access_type is access. created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true LearningPathCategory: type: object required: - title properties: id: type: integer readOnly: true title: type: string slug: type: string readOnly: true published: type: boolean subcategories: type: array items: type: integer created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true LearningPathSubcategory: type: object required: - title properties: id: type: integer readOnly: true title: type: string slug: type: string readOnly: true published: type: boolean description: type: string categories: type: array items: type: integer learning_paths: type: array items: type: integer created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true LearningPathSubcategoryWithImage: type: object required: - title properties: id: type: integer readOnly: true title: type: string slug: type: string readOnly: true published: type: boolean description: type: string categories: type: array items: type: integer image: type: string format: binary description: Supported file types - jpg,png,jpeg,gif. Maximum size 10MB. learning_paths: type: array items: type: integer created_by: type: integer readOnly: true created_on: type: string format: date readOnly: true modified_by: type: integer readOnly: true modified_on: type: string format: date readOnly: true Lesson: type: object properties: lesson_id: type: integer title: type: string description: Title of Lesson. example: Introduction to Quantum Physics image: type: string description: Image URL. example: http://example.com/image.jpg description: type: string description: Lesson description. example: Lesson description text lesson_type: type: integer description: Lesson Type. example: 0 - Public, 1 - Access Only language: type: string description: Language code. example: en-GB|pt-BR lesson_gating: type: integer description: Lesson Gating Status, read only, 1 if enabled, 0 if disabled. published: type: boolean description: Lesson publish status. example: true|false quiz_prerequisite_setting: type: string description: Unlock after quiz. example: true|false award_points: type: string description: Number of Award points. example: 10000 prerequisite_quizzes: type: array items: type: object example: [{ "quiz_id": 1, "lesson_quiz": 10 }] teacher: type: object description: Simplified teacher object. course: type: object properties: course_id: type: integer title: type: string ordering: type: integer activities: type: object items: type: object created_on: type: string format: style ordering: type: integer is_final_course_survey: type: boolean use_library_content: type: boolean description: Specifies if a SCORM (or bizlibrary) package is used for this course library_content_type: type: string description: Either 'bizlibrary' or 'scorm' bizlibrary_content_title: type: string bizlibrary_content_id: type: string scorm_required: type: boolean scorm_id: type: integer scorm_title: type: string LessonInsert: type: object required: - title properties: title: type: string description: Title of Lesson. example: Introduction to Quantum Physics image: type: string description: Image URL. example: http://example.com/image.jpg description: type: string description: Lesson description. example: Lesson description text lesson_type: type: integer description: Lesson Type. example: 0 - Public, 1 - Access Only language: type: string description: Language code. example: en-GB|pt-BR published: type: boolean description: Lesson publish status. example: true|false quiz_prerequisite_setting: type: string description: Unlock after quiz. example: true|false award_points: type: string description: Number of Award points. example: 10000 prerequisite_quizzes: type: object example: [1, 2, 4] teacher_id: type: integer description: Teacher ID. course_id: type: integer description: Course ID. Location: type: object properties: id: type: integer name: type: string example: Tovuti Headquarters address: type: string example: 775 S Rivershore Ln \#120, Eagle, ID 83616, USA city: type: string example: Eagle state: type: string example: Idaho zip: type: integer example: 83616 country: type: string example: United States lat: type: number format: float example: 43.687440 description: Latitude. long: type: number format: float example: -116.354894 description: Longitude. published: type: boolean example: true user_id: type: integer description: User that created the location. language: type: string example: en-GB layout: type: string description: Possible values are '', table, timeline. MediaCategory: type: object required: - title - published - access_type properties: id: type: integer readOnly: true example: 2 parent_id: type: integer example: 5 description: id of the parent media category. title: type: string maxLength: 255 example: My Category page_title: type: string maxLength: 255 example: text description: type: string maxLength: 4000 example: This is descriptive text published: type: boolean example: true access_type: type: string example: none|list|user|access usergroup: type: array items: type: integer description: array of group ids. userlist: type: array items: type: integer description: array of user ids. accesslevel: type: array items: type: integer description: array of access level ids. MediaItem: type: object required: - title - published - media_type - access_type properties: id: type: integer readOnly: true example: 2 title: type: string maxLength: 255 example: My Video speaker: type: string maxLength: 255 example: Jim Bob description: type: string maxLength: 4000 example: This is descriptive text published: type: boolean example: true go_live_date: type: string format: date example: YYYY-mm-dd archive_date: type: string format: date example: YYYY-mm-dd use_expiration: type: boolean example: false custom_id: type: string example: ABC123 expiration_date: type: string format: date example: YYYY-mm-dd category: type: integer example: 5 subcategory: type: integer example: 6 media_type: type: string example: video|audio|pdf|link video_type: type: string example: mp4|youtube|screencast|facebook|vimeo description: Required if media_type is video. source: type: string format: binary description: audio file, video file, or pdf. Required if media_type is video, audio, or PDF. thumbnail_image: type: string format: binary description: Supported file types - jpg,png,jpeg,gif. cover_image: type: string format: binary description: Supported file types - jpg,png,jpeg,gif. youtube_id: type: string example: DOWDNBu9DkU description: ID of youtube video or full url. Required if video_type is youtube. screencast_id: type: string example: DOWDNBu9DkU description: Required if video_type is screencast. facebook_url: type: string example: DOWDNBu9DkU description: Required if video_type is facebook. vimeo_id: type: string example: DOWDNBu9DkU description: ID of vimeo video or full url. Required if video_type is vimeo. interactive_source: type: string example: http://something.com description: must be a full URL. Required if media_type is link. access_type: type: string example: none|list|user|access description: Visibility Permission Type. access_purchase_type: type: string example: none|list|user|access description: Access Permission Type. usergroup: type: array items: type: integer description: array of group ids. Required if access_type is user. userlist: type: array items: type: integer description: array of user ids. Required if access_type is list. accesslevel: type: array items: type: integer description: array of access level ids. Required if access_type is access. usergroup_purchase_register: type: array items: type: integer description: array of group ids. Required if access_purchase_type is user. userlist_purchase_register: type: array items: type: integer description: array of user ids. Required if access_purchase_type is list. accesslevel_purchase_register: type: array items: type: integer description: array of access level ids. Required if access_purchase_type is access. tags: type: array items: type: string MediaItemNoData: type: object required: - title - published - media_type - access_type properties: id: type: integer readOnly: true example: 2 title: type: string maxLength: 255 example: My Video speaker: type: string maxLength: 255 example: Jim Bob description: type: string maxLength: 4000 example: This is descriptive text published: type: boolean example: true go_live_date: type: string format: date example: YYYY-mm-dd archive_date: type: string format: date example: YYYY-mm-dd use_expiration: type: boolean example: false custom_id: type: string example: ABC123 expiration_date: type: string format: date example: YYYY-mm-dd category: type: integer example: 5 subcategory: type: integer example: 6 media_type: type: string example: video|audio|pdf|link video_type: type: string example: mp4|youtube|screencast|facebook|vimeo description: Required if media_type is video. youtube_id: type: string example: DOWDNBu9DkU description: ID of youtube video or full url. Required if video_type is youtube. screencast_id: type: string example: JnD7uBZDI0Z description: Required if video_type is screencast. facebook_url: type: string example: https://facebook.com/johnd description: Required if video_type is facebook. vimeo_id: type: string example: https://vimeo.com/johndoe description: ID of vimeo video or full url. Required if video_type is vimeo. interactive_source: type: string example: http://interactivesource.com description: must be a full URL. Required if media_type is link. access_type: type: string example: none|list|user|access description: Visibility Permission Type. access_purchase_type: type: string example: none|list|user|access description: Access Permission Type. usergroup: type: array items: type: integer description: array of group ids. Required if access_type is user. userlist: type: array items: type: integer description: array of user ids. Required if access_type is list. accesslevel: type: array items: type: integer description: array of access level ids. Required if access_type is access. usergroup_purchase_register: type: array items: type: integer description: array of group ids. Required if access_purchase_type is user. userlist_purchase_register: type: array items: type: integer description: array of user ids. Required if access_purchase_type is list. accesslevel_purchase_register: type: array items: type: integer description: array of access level ids. Required if access_purchase_type is access. tags: type: array items: type: string Meeting: type: object required: - meetingName - meetingType - date - timezone properties: id: type: integer readOnly: true meetingId: type: string example: 2391AFB0-0893-4850-9208-D7505685BE1F readOnly: true meetingName: type: string meetingType: type: string example: tovuti|zoom|webex|gotomeeting|google|joinme|other creator: type: integer readOnly: true maxParticipants: type: integer description: Max participants. -1 is unlimited. description: type: string date: type: string format: datetime timezone: type: string example: "America/New_York" access_type: type: string example: none|access|user|list hosts: type: array items: type: integer externalUrl: type: string format: url readOnly: true moderatorPW: type: string readOnly: true attendeePW: type: string readOnly: true record: type: boolean description: If set to true, the meeting will be recorded. duration: type: integer enabled: type: boolean userlist: type: array items: type: integer description: An array of user ids with access. Required access_type = 'users'. accesslevel: type: array items: type: integer description: An array of access level ids with access. Required access_type = 'accesslevel'. usergroup: type: array items: type: integer description: An array of usergroup ids with access. Required access_type = 'groups'. attendees: type: array items: type: integer description: User ids of attendees for this meeting. readOnly: true Object: type: object properties: id: type: integer readOnly: true example: 2 title: type: string example: MyOrganization type_id: type: integer example: id of ObjectType user_portal: type: integer description: id of user portal for user portal override setting. description: type: string enabled: type: boolean image: type: string customFields: type: array description: When assigning customFields either a field_id or title can be provided. It is recommended to use the field_id in case there is a field name with a duplicate title. items: $ref: "#/components/schemas/CustomFieldValue" ObjectType: type: object properties: id: type: integer readOnly: true example: 2 title: type: string example: Organization enabled: type: boolean example: true ObjectsValue: type: object properties: id: type: integer title: type: string PageData: type: object properties: current_page: type: integer description: The current page. example: 1 from: type: integer description: The start of the range for the page. example: 1 to: type: integer description: The end of the range for the page. example: 25 per_page: type: integer description: The number of items per page. example: 10 first_page_url: type: string description: A URI to the first page. format: url example: http://{domain}/api/{endpoint}?page=1 next_page_url: type: string description: A URI to the next page. format: url example: http://{domain}/api/{endpoint}?page=1 prev_page_url: type: string description: A URI to the previous page. format: url example: http://{domain}/api/endpoint}?page=1 Quiz: type: object required: - title - slug - required_score properties: id: type: integer readOnly: true example: 1 title: type: string example: MyQuiz slug: type: string description: Unique URI for use in Search Engine Friendly urls. pattern: "[a-z-]+" image: type: string format: uri tries: type: integer description: Number of attempts users have to complete the quiz. remaining_retries: type: integer description: Remaining tries. description: type: string example: This is my quiz course_id: type: integer description: Course id of the course this quiz is assigned to. lesson_id: type: integer description: Lesson id of the lesson this quiz is assigned to. created_by: type: integer description: User id of the user who created this quiz. readOnly: true created_on: type: string format: date readOnly: true required_score: type: number description: Required score in percentage. example: 75 type: type: string example: quiz|survey created_before: type: string format: date readOnly: true created_after: type: string format: date readOnly: true completion_message: type: string example: Quiz Completed! pass_message: type: string example: Congratulations, you passed! fail_message: type: string example: Quiz Failed, minimum score is 75% questions: type: array items: $ref: "#/components/schemas/QuizQuestion" allow_retries: type: boolean duration: type: integer description: Time limit for the quiz in minutes. Must be in the range 0-100. show_overlay: type: boolean show_answers: type: boolean missed_question_only: type: boolean description: Maps to Allow to Retake Only Incorrect Answers toggle in LMS. quiz_result: type: array items: type: object properties: quizresult_id: type: integer point: type: integer total_marks: type: integer user_id: type: integer example: 1625627 quizquestion_id: type: integer course_id: type: integer lesson_id: type: integer enabled: type: integer ordering: type: integer date: type: string format: datetime answers: type: string archive_date: type: string format: date QuizQuestion: type: object required: - title - answer1 - answer2 - correctAnswer properties: title: type: string example: "Why did foo bar?" media: type: string format: uri answer1: type: string example: "Because baz" answer2: type: string example: "Because couldn't solve fizzbuzz" answer3: type: string example: "Because bar foo" answer4: type: string example: "All of the above" correctAnswer: type: integer description: Index of the correct answer. 0 - answer1 , 1 - answer2, etc. QuizResponsePayload: type: object required: - user_id - quiz_id - course_id - answers properties: user_id: type: integer example: 1714926 quiz_id: type: integer example: 1234 lesson_id: type: integer example: 1234 course_id: type: integer example: 1234 answers: type: array items: type: integer example: [0, 2, 1] QuizResult: type: object properties: id: type: integer readOnly: true user_id: type: integer readOnly: true quiz_id: type: integer format: int64 readOnly: true answers: type: array items: type: integer readOnly: true submitted_date: type: string format: date readOnly: true submitted_before: type: string format: date readOnly: true submitted_after: type: string format: date readOnly: true elapsed: type: integer readOnly: true total_questions: type: integer readOnly: true number_correct: type: integer readOnly: true score: type: number readOnly: true passed: type: boolean readOnly: true quiz: readOnly: true type: object $ref: "#/components/schemas/Quiz" Subscription: type: object required: - title properties: id: type: integer readOnly: true example: 1 title: type: string published: type: boolean private: type: boolean featured: type: boolean default_sub_length: type: string description: Default length of the subscription period in the format N{D,W,M,Y}, where N is an integer between 0-999 and D,W,M,Y stand for Day, Week, Month and Year, respectively. pattern: \d{1,3}[DWMY]{1} default_initial_amount: type: number description: Amount of money (in USD) that the subscription will cost on signup. format: float default_amount: type: number description: Amount of money (in USD) that the subscription will cost when the subscription period length has elapsed and the subscription is renewed. format: float usergroups: type: array items: type: integer description: Array of user groups for which this subscription will be available. description_html: type: string description: Plain text or HTML-formatted description that describes the subscription. description_type: type: string description: Description type. Survey: type: object required: - title properties: id: type: integer readOnly: true example: 1 title: type: string example: MySurvey description: type: string example: This is my survey questions: type: array items: type: object properties: id: type: string readOnly: true example: 1624487827DHmcGo question_type: type: string description: Possible values are textbox, textarea, multiplechoice, multiplechoice_multiselect, and likert. example: multiplechoice question: type: string example: What is love? multiple_choice_options: type: string description: Newline separated list of options for multiplechoice and multiplechoice_multiselect question types. example: Baby\r\ndon't\r\nhurt\r\nme params: type: object properties: likert_labels: type: string description: Possible values are 'custom' or 'default'. label_1: type: string example: Strongly Disagree label_2: type: string example: Disagree label_3: type: string example: Undecided label_4: type: string example: Agree label_5: type: string example: Strongly Agree label_6: type: string label_7: type: string label_8: type: string label_9: type: string label_10: type: string label_11: type: string rating_number: type: string description: Likert scale number, possible values are 5, 7, or 11. example: 0 rating_direction: type: string description: Controls the display of likert labels in quiz. Possible values are 'vertical' or 'horizontal'. custom_completed_message: type: string description: Toggle for using either the default or user provided completion message. Possible values are 'custom' or 'default'. completed_message: type: string description: If custom_completed_message = custom then this message is used. enabled: type: boolean description: Defines the published (also called enabled) status of the survey. modified_date: type: string example: "2022-12-06 12:54:43" SurveyResponse: type: object required: - survey_id - user_id - question_id - question_type - question - answer properties: id: type: integer readOnly: true example: 1 survey_id: type: integer user_id: type: integer description: id of the user that submitted the response. example: 1623570 lesson_id: type: integer description: id of the lesson that this survey was submitted in. activity_id: type: string description: id of the corresponding lesson student activity used to complete the survey, it should be one of the activities inside lesson with id = lesson_id. example: 1656638001Xehtvk event_id: type: integer description: id of the event that this survey was completed as a part of. Surveys are either completed inside lessons or events. question_id: type: integer example: 1659494905ZHLhxu question_type: type: string description: the question type can be likert, multiplechoice, multiplechoice_multiselect, textbox or textarea. question: type: string example: Rate your learning experience on a scale from 1-5 answer: type: string example: 5 score: type: integer description: Used for question_type = likert, the corresponding likert score for the selected response. Team: type: object required: - title - member_type properties: id: type: integer readOnly: true example: 1 title: type: string example: MyUserTeam member_type: type: string description: Possible values are 'individuals' or 'groups'. example: groups description: type: string example: Team description enabled: type: boolean example: true description: Same as 'published' team_lead: type: array items: type: integer description: Set of user ids. Users with ids in this set are team leads. user_ids: type: array items: type: integer description: Set of user ids. Users with these ids will be added as team members. Only used when member_type = 'individuals'. user_groups: type: array items: type: integer description: Set of user group ids. Users in these groups will be added as team members. Only used when member_type = 'groups'. date_created: type: string format: date readOnly: true allow_adding_users: type: boolean description: If set to 'true' team leads will be able to add users to teams they are leaders of. allow_removing_users_from_team: type: boolean description: If set to 'true' team leads will be able to remove users from teams they are leaders of. allow_removing_users_from_system: type: boolean description: If set to 'true' team leads will be able to delete users in their team completely. allow_managing_users_groups: type: boolean description: If set to 'true' team leads will be able to add or remove usergroups that are a part of the teams they are leaders of. assignable_user_groups: type: array items: type: integer description: Set of user group ids that team leads can assign members to. allow_assigning_courses: type: boolean description: If set to 'true' team leads will be able to assign team members to course in assignable_course_ids. assignable_course_ids: type: array items: type: integer description: Set of course ids that team leads can enroll team members in. allow_assigning_events: type: boolean description: If set to 'true' team leads will be able to register team members for events. User: type: object required: - name - username - email - password properties: id: type: integer format: int64 readOnly: true example: 1714926 name: type: string example: John Doe username: type: string example: johndoe email: type: string example: johndoe@gmail.com password: type: string example: password100 writeOnly: true userGroupIds: type: array items: type: integer description: Ids of usergroups this user belongs to. userTeamIds: type: array items: type: integer description: Ids of userteams this user belongs to. userTeamIds can only be assigned for teams with member_type = 'individuals'. enrolledCourseIds: type: array items: type: integer requireReset: type: boolean description: If 'true' the user will be required to reset their password on their next login. registerDate: readOnly: true type: string format: date lastvisitDate: readOnly: true type: string format: date customFields: type: array description: When assigning customFields either a field_id or title can be provided. It is recommended to use the field_id in case there is a field name with a duplicate title. items: $ref: "#/components/schemas/CustomFieldValue" objects: type: array description: Array of Objects associated to user. items: $ref: "#/components/schemas/ObjectsValue" accessLevels: readOnly: true type: array items: type: integer status: type: string description: The current enabled/disabled status of the user. Possible values are active or disabled. example: active UserCourseProgress: type: object properties: user_id: type: integer readOnly: true course_id: type: integer language: type: string lessons_completed_list: type: array items: type: integer lessons_total_list: type: array items: type: integer score: type: number progress: type: number format: float date_started: type: string format: date date_last_activity: type: string format: date date_completed: type: string format: date date_due: type: string format: date started_before: type: string format: date started_after: type: string format: date last_activity_before: type: string format: date last_activity_after: type: string format: date completed_before: type: string format: date completed_after: type: string format: date archive_date: type: string format: date lessons: type: object description: Lessons list. example: { "activities": [ { "activity_id": "1619209659BqkVD2", "user_id": "User ID", "activity_name": "Name", "activity_type": "interactive", "student_response": "Recorded student response for activity", "activity_status": "in progress", }, ], } UserGroup: type: object properties: id: type: integer readOnly: true example: 2 title: type: string example: MyUserGroup parent_id: type: integer description: User group id of the parent group. example: 1 userIds: type: array items: type: integer description: User ids of users that are in this group. links: type: object readOnly: true properties: parent_url: type: string children_url: type: string descendants_url: type: string lft: type: integer description: Start of range that contains descendant user groups. See https://en.wikipedia.org/wiki/Nested_set_model for more info. readOnly: true rgt: type: integer description: End of range that contains descendant user groups. See https://en.wikipedia.org/wiki/Nested_set_model for more info. readOnly: true UserPayload: type: object required: - name - username - email - password properties: id: type: integer format: int64 readOnly: true example: 1714926 name: type: string example: John Doe username: type: string example: johndoe email: type: string example: johndoe@gmail.com password: type: string example: password100 writeOnly: true userGroupIds: type: array items: type: integer description: Ids of usergroups this user belongs to. userTeamIds: type: array items: type: integer description: Ids of userteams this user belongs to. userTeamIds can only be assigned for teams with member_type = 'individuals'. enrolledCourseIds: type: array items: type: integer requireReset: type: boolean description: If 'true' the user will be required to reset their password on their next login. registerDate: readOnly: true type: string format: date lastvisitDate: readOnly: true type: string format: date customFields: type: array description: When assigning customFields either a field_id or title can be provided. It is recommended to use the field_id in case there is a field name with a duplicate title. items: $ref: "#/components/schemas/CustomFieldValue" objectIds: type: array description: Array of Objects Ids. items: type: integer accessLevels: readOnly: true type: array items: type: integer