{"note":"OpenAPI conversion -- returning structured metadata","name":"iqualify-com","description":"iQualify Management API","version":"v1","base_url":"https://api.iqualify.com/v1","endpoints":84,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api iQualify Management API\n@base https://api.iqualify.com/v1\n@version v1\n@auth ApiKey Authorization in header\n@endpoints 84\n@hint download_for_search\n@toc root(1), offerings(55), course-mappings(5), courses(9), org(1), users(13)\n\n@group root\n@endpoint GET /\n@desc List supported endpoints URLs\n@returns(200) Supported endpoints\n\n@endgroup\n\n@group offerings\n@endpoint GET /offerings/{offeringId}/analytics/pulses\n@desc Find all pulse IDs in the specified offering\n@required {offeringId: str # offering's id}\n@returns(200) Pulses' ids\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/pulses/responses\n@desc Find pulses by offeringId\n@required {offeringId: str # offering's id}\n@optional {pulseType: str(submit_text/MCQ/spatial_triangular/spatial_planar/spatial_linear) # Filter pulse responses by type., responseTime: any # Filter pulse responses by responseTime. Lower then (`lt`), lower then or equal (`lte`), greater then (`gt`) and greater then or equal (`gte`) operators are available. Example of filtering by time range __gte__2017-03-14T07:30:00Z__}\n@returns(200) All pulses' responses\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/pulses/{pulseId}/responses\n@desc Find pulses by offeringId and pulseId\n@required {offeringId: str # offering's id, pulseId: str # pulse's base id}\n@returns(200) Pulse data matching pulseId\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/marks/assignments\n@desc Find assessment marks\n@required {offeringId: str # offering's id}\n@returns(200) Assignments marks\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/marks/quizzes\n@desc Find quiz marks\n@required {offeringId: str # offering's id}\n@returns(200) Quizzes marks\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/learners-progress\n@desc Find learner progress in a specified offering\n@required {offeringId: str # offering's id}\n@returns(200) Learners progress\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/unit-reactions\n@desc Find unit reactions\n@required {offeringId: str # offering's id}\n@returns(200) Unit Reactions\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/submissions/assignments\n@desc Find submissions to assessments, including marks if any\n@required {offeringId: str # offering's id}\n@returns(200) Assignments submissions\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/social-notes\n@desc Find shared social notes in an offering\n@required {offeringId: str # offering's id}\n@returns(200) Offering social notes\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/activities/responses\n@desc Find open response activity attempts\n@required {offeringId: str # offering's id}\n@returns(200) Offering activity attempt open responses\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/submissions/open-response/{assessmentId}\n@desc Find submissions to a specified open response assessment, including marks if any\n@required {offeringId: str # offering's id, assessmentId: str # assessment's id}\n@returns(200) Responds with assignment submissions for the specified assignment.\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/submissions/{userEmail}/assignments/{assessmentId}\n@desc Find a learner's submission to a specified assessment, including marks if any\n@required {offeringId: str # offering's id, userEmail: str(email) # user's email, assessmentId: str # assessment's id}\n@returns(200) Responds with the learner's assessment submission and any marks for the submission.\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/groups\n@desc Find assessment groups\n@required {offeringId: str # offering's id}\n@returns(200) Succesful response\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/groups\n@desc Add an assessment group\n@required {offeringId: str # offering's id, title: str}\n@returns(201) {id: str, title: str, createdAt: str} # assessment group successfully added\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/groups/{groupId}/learners\n@desc Find learners in an assessment group\n@required {offeringId: str # offering's id, groupId: str # Assessment group id}\n@returns(200) Succesful response\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/groups/{groupId}/learners\n@desc Add a learner to an assessment group\n@required {offeringId: str # offering's id, groupId: str # Assessment group id}\n@optional {email: str}\n@returns(201) {id: str, avatarUrl: str, profile: map{displayName: str, mobile: str}, email: str(email), firstName: str, lastName: str, personId: str, lastAccessAt: str(date-time), firstAccessAt: str(date-time), metadata: map{tags: [str]}, invite: map{url: str}} # Succesful response\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/groups/{groupId}/learners/{userEmail}\n@desc Remove a learner from an assessment group\n@required {offeringId: str # offering's id, groupId: str # Assessment group id, userEmail: str(email) # user's email}\n@returns(204) user successfully removed from the assessment group\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/channels/{channelId}/posts\n@desc Find posts\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@returns(200) Successful response\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/channels/{channelId}/comments\n@desc Find comments\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@returns(200) Successful response\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/analytics/channels/{channelId}/replies\n@desc Find replies\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@returns(200) Successful response\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/channels\n@desc Find channels\n@required {offeringId: str # offering's id}\n@returns(200) Succesful response\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/channels\n@desc Add channel\n@required {offeringId: str # offering's id, title: str}\n@optional {isBroadcastOnly: bool=false}\n@returns(201) {id: str, title: str, isBroadcastOnly: bool} # channel successfully added\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /offerings/{offeringId}/channels/{channelId}\n@desc Update channel\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@optional {title: str, isBroadcastOnly: bool, privateSupport: bool, groupDiscussion: bool, group: map{autoAssign: bool}}\n@returns(200) {id: str, title: str, isBroadcastOnly: bool} # channel successfully updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/channels/{channelId}/learners\n@desc Add learners to a group channel\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@optional {email: str}\n@returns(204) Learner successfully added to the channel.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/channels/{channelId}/learners\n@desc Remove learners from a group channel\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@optional {email: str}\n@returns(204) Learner successfully removed from the channel.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/channels/{channelId}/learners\n@desc Find learners in a group channel\n@required {offeringId: str # offering's id, channelId: str # channel's id}\n@returns(200) {id: str, title: str, isBroadcastOnly: bool} # channel data\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@group course-mappings\n@endpoint GET /course-mappings\n@desc Find course mappings\n@returns(200) Course Mappings\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /course-mappings/externalcourse/{externalCourseId}\n@desc Find course mappings by externalCourseId\n@required {externalCourseId: str # external course's id}\n@returns(200) Course Mapping\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /course-mappings/{offeringId}\n@desc Find course mappings by offeringId\n@required {offeringId: str # offering's id}\n@returns(200) Course Mapping\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /course-mappings/{offeringId}/{externalCourseId}\n@desc Add course mapping\n@required {offeringId: str # offering's id, externalCourseId: str # external course's id}\n@returns(200) Course Mapping\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /course-mappings/{offeringId}/{externalCourseId}\n@desc Remove course mapping\n@required {offeringId: str # offering's id, externalCourseId: str # external course's id}\n@returns(200) Course Mapping\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@group courses\n@endpoint GET /courses\n@desc Find courses\n@returns(200) All courses (draft and published) in the organisation.\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /courses/{contentId}\n@desc Find course by contentId\n@required {contentId: str # The content Id}\n@returns(200) {id: str, name: str, createdAt: str(date-time), coverImageUrl: str, tasksEnabled: bool, metadata: any} # Course detail\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /courses/{contentId}/activations\n@desc Find activations for a contentId\n@required {contentId: str # The content Id}\n@returns(200) {id: str, name: str, end: str, start: str, learnersCount: str, info: str, metadata: map{rootContentId: str}} # Activation list.\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /courses/{contentId}/metadata/tags\n@desc Update course tags\n@required {contentId: str # The content Id}\n@optional {tags: [str]}\n@returns(200) {id: str, name: str, createdAt: str(date-time), coverImageUrl: str, tasksEnabled: bool, metadata: any} # Course detail\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /courses/{contentId}/metadata/category\n@desc Update course category\n@required {contentId: str # The content Id}\n@optional {category: str}\n@returns(200) {id: str, name: str, createdAt: str(date-time), coverImageUrl: str, tasksEnabled: bool, metadata: any} # Course detail\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /courses/{contentId}/metadata/level\n@desc Update course level\n@required {contentId: str # The content Id}\n@optional {level: str}\n@returns(200) {id: str, name: str, createdAt: str(date-time), coverImageUrl: str, tasksEnabled: bool, metadata: any} # Course detail\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /courses/{contentId}/metadata/topic\n@desc Update course topic\n@required {contentId: str # The content Id}\n@optional {topic: str}\n@returns(200) {id: str, name: str, createdAt: str(date-time), coverImageUrl: str, tasksEnabled: bool, metadata: any} # Course detail\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /courses/{rootContentId}/permissions/{userEmail}\n@desc Update course access\n@required {rootContentId: str # The content Id, userEmail: str # The user email}\n@optional {isBuilder: bool=true, isReviewer: bool=false}\n@returns(201) {contentId: str} # user successfully added to the course with the specified permission.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /courses/{contentId}/permissions\n@desc Find users who have access to the contentId provided\n@required {contentId: str # The content Id}\n@returns(200) {email: str, name: str, isBuilder: bool, isReviewer: bool} # List of users who have access to the content ID provided.\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@group offerings\n@endpoint GET /offerings\n@desc Find current, past and future offerings\n@returns(200) all offerings (current, past and future ones)\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint POST /offerings\n@desc Create offering\n@required {start: str(date-time)}\n@optional {identifier: str, name: str, description: str, contentId: str # The identifier for a specific version of a course, rootContentId: str # Every time a course is republished it's assigned a new contentId. rootContentId is the first original contentId associated with a course., end: str(date-time), useRelativeDates: bool=false, trailerVideoUrl: str, isReadonly: bool, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), createDefaultChannels: bool=false, badge: map{title: str, description: str, requiresApproval: bool, badgeExpiry: map}, hiddenPageIds: [str] # An array of strings representing hidden page ids., metadata: map{category: str, topic: str, level: str, tags: [str]}, settings: map{allowSocialFeatures: bool, enablePrivateSupportChannel: bool}}\n@returns(201) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering created\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/summary\n@desc Offerings summary\n@optional {$top: str=50 # Returns only the first n results., $orderby: str # Sorts the results., $filter: str # Filters the results, based on a Boolean condition.}\n@returns(200) all offerings.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /offerings/current\n@desc Find active offerings\n@returns(200) current offerings\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /offerings/past\n@desc Find past offerings\n@returns(200) past offerings\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /offerings/future\n@desc Find scheduled offerings\n@returns(200) future offerings\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /offerings/info/{textPattern}\n@desc Find offerings where info field matches the specified textPattern\n@required {textPattern: str # Text pattern to search for (minimum of 3 characters length).}\n@returns(200) Offerings\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}\n@desc Find offering by ID\n@required {offeringId: str # offering's id}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /offerings/{offeringId}\n@desc Update offering\n@required {offeringId: str # offering's id}\n@optional {identifier: str, name: str, overview: str, description: str, contentId: str # The identifier for a specific version of a course, rootContentId: str # Every time a course is republished it is assigned a new contentId. rootContentId is the first original contentId associated with a course., start: str(date-time), end: str(date-time), useRelativeDates: bool, trailerVideoUrl: str, isReadonly: bool, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), badge: map{title: str, description: str, requiresApproval: bool, badgeExpiry: map}, metadata: map{category: str, topic: str, level: str, tags: [str]}}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/badges\n@desc Find offering badges\n@required {offeringId: str # offering's id}\n@returns(200) {title: str, description: str, criterias: any, badgeExpiry: map{expires: bool, expiryType: str, expirationDate: str(date-time), timeframeUnit: str, timeframeAmount: num}, badgeUrl: str, openBadge: any} # badges\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /offerings/{offeringId}/metadata/tags\n@desc Update offering tags metadata\n@required {offeringId: str # offering's id}\n@optional {tags: [str]}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /offerings/{offeringId}/metadata/category\n@desc Update offering category metadata\n@required {offeringId: str # offering's id}\n@optional {category: str}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /offerings/{offeringId}/metadata/topic\n@desc Update offering topic metadata\n@required {offeringId: str # offering's id}\n@optional {topic: str}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /offerings/{offeringId}/metadata/level\n@desc Update offering level metadata\n@required {offeringId: str # offering's id}\n@optional {level: str}\n@returns(200) {id: str, identifier: str, name: str, description: str, overview: str, contentId: str, useRelativeDates: bool, start: str(date-time), end: str(date-time), coverImageUrl: str, trailerVideoUrl: str, isReadonly: bool, studyPlan: map{filename: str, mimetype: str, size: num, url: str, createdAt: str(date-time)}, hasEarlyCloseOff: bool, earlyCloseOffDate: str(date-time), enrollmentLimit: num, price: num, currency: str, allowEnrollment: bool, settings: map{aggregateProgressScore: bool, allowSocialFeatures: bool, allowTasks: bool, enablePrivateSupportChannel: bool, strictStartDate: bool}, tasksEnabled: bool, metadata: map{rootContentId: str, category: str, topic: str, level: str, tags: [str]}} # offering updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/assessments\n@desc Find offering's assessments\n@required {offeringId: str # offering's id}\n@returns(200) offering's assessments\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /offerings/{offeringId}/assessments/{assessmentId}\n@desc Update assessment details\n@required {offeringId: str # offering's id, assessmentId: str # assessment's id}\n@optional {markType: str, markNumber: str, openDate: str(date-time), dueDate: str(date-time), content: str}\n@returns(200) {id: str, pid: str, title: str, type: str, content: str, points: str, hidden: bool, filename: str, maxAttempts: int(int32), durationMinutes: int(int32), totalQuestions: int(int32), totalThemes: int(int32), documents: [map], themes: [map], markType: str, markNumber: str, openDate: str(date-time), dueDate: str(date-time)} # assessment successfully updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /offerings/{offeringId}/assessments/{assessmentId}/{userEmail}\n@desc Update the due dates for a learner's quiz attempt\n@required {offeringId: str # offering's id, assessmentId: str # assessment's id, userEmail: str(email) # user's email}\n@optional {dueDate: str(date-time)}\n@returns(204) Successfully updated assessment due date.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/assessments/{assessmentId}/documents/{documentId}\n@desc Remove assessment document\n@required {offeringId: str # offering's id, assessmentId: str # assessment's id, documentId: str # documents's id}\n@returns(204) assessment document successfully removed\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/learners/pending-submission\n@desc Find learners with assessments pending x days before due date within the specified offeringId\n@required {offeringId: str # offering's id}\n@optional {days: str # days to assessment due date. Default is 3 days}\n@returns(200) offering's learners\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/activities/openresponse\n@desc Find offering's activities\n@required {offeringId: str # offering's id}\n@returns(200) offering's learners\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/users\n@desc Find offering's users\n@required {offeringId: str # offering's id}\n@optional {facilitators: str(true/false)=true # If true, facilitators are included in the results., learners: str(true/false)=true # If true, learners are included in the results., markers: str(true/false)=true # If true, markers are included in the results.}\n@returns(200) offering's users\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/users\n@desc Adds user to the offering\n@required {offeringId: str # offering's id}\n@returns(201) user successfully added to the offering\n@returns(207) Partially successful response\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/users/{userEmail}\n@desc Removes user from the offering\n@required {offeringId: str # offering's id, userEmail: str(email) # user's email}\n@returns(204) user successfully removed from the offering\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/users/{markerEmail}/marks\n@desc Find Learners marked by a coach\n@required {offeringId: str # offering's id, markerEmail: str # marker's email}\n@returns(200) learners marked by the marker\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/users/{markerEmail}/marks\n@desc Add learners to be marked by a coach\n@required {offeringId: str # offering's id, markerEmail: str # marker's email}\n@returns(200) learners marked by the marker\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/users/{markerEmail}/marks\n@desc Remove learners from coach's marking list\n@required {offeringId: str # offering's id, markerEmail: str # marker's email}\n@returns(200) learners marked by the marker\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /offerings/{offeringId}/users/{userEmail}/badges/award\n@desc Award badge\n@required {offeringId: str # offering's id, userEmail: str(email) # user's email}\n@returns(201) {awarded: bool, badgeId: str, badgeUrl: str} # Awarded badge response\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /offerings/{offeringId}/users/{userEmail}/submissions/open-response\n@desc Find learner's open response assessment submissions\n@required {offeringId: str # offering's id, userEmail: str(email) # user's email}\n@returns(200) user open response submission and mark details\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint DELETE /offerings/{offeringId}/users/{userEmail}/assessments/{assessmentId}\n@desc Reset user's assessment to draft state\n@required {offeringId: str # offering's id, userEmail: str(email) # user's email, assessmentId: str # assessment's id}\n@returns(204) User's assessment successfully moved to draft state.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@group org\n@endpoint GET /org\n@desc Gets the current organisation\n@returns(200) {id: str, name: str} # organisation summary data\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@group users\n@endpoint GET /users/{userEmail}\n@desc Find user by email\n@required {userEmail: str(email) # user's email}\n@returns(200) {id: str, avatarUrl: str, profile: map{displayName: str, mobile: str}, email: str(email), firstName: str, lastName: str, personId: str, lastAccessAt: str(date-time), firstAccessAt: str(date-time), metadata: map{tags: [str]}, invite: map{url: str}} # user data\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /users/{userEmail}\n@desc Update user\n@required {userEmail: str(email) # user's email}\n@optional {firstName: str, lastName: str, email: str(email), personId: str, profile: map{displayName: str}, metadata: map{tags: [str]}, sendInvite: bool=true}\n@returns(200) {id: str, avatarUrl: str, profile: map{displayName: str, mobile: str}, email: str(email), firstName: str, lastName: str, personId: str, lastAccessAt: str(date-time), firstAccessAt: str(date-time), metadata: map{tags: [str]}, invite: map{url: str}} # user updated\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PUT /users/{userEmail}/suspend\n@desc Suspend user\n@required {userEmail: str(email) # user's email}\n@optional {suspended: bool}\n@returns(204) User suspended.\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /users/{userEmail}/offerings\n@desc Find user's offerings\n@required {userEmail: str(email) # user's email}\n@returns(200) user's offerings\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /users/{userEmail}/offerings\n@desc Adds the user to the specified offerings as a learner\n@required {userEmail: str(email) # user's email}\n@returns(200) user's offerings\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /users/{userEmail}/offerings/{offeringId}/progress\n@desc Find learner's progress in a specified offering\n@required {userEmail: str(email) # user's email, offeringId: str # offering's id}\n@returns(200) {id: str, firstName: str, lastName: str, email: str, completion: str} # user's offerings\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /users/{userEmail}/permissions/{permissionName}\n@desc Add permission to user\n@required {userEmail: str(email) # user's email, permissionName: str(builder/manager/insights/userAdmin) # permission name}\n@returns(200) {id: str, avatarUrl: str, profile: map{displayName: str, mobile: str}, email: str(email), firstName: str, lastName: str, personId: str, lastAccessAt: str(date-time), firstAccessAt: str(date-time), metadata: map{tags: [str]}, invite: map{url: str}} # permission successfully added to user\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /users/all/progress\n@desc Find learner progress in all offerings\n@optional {$top: str=50 # Returns only the first n results., $orderby: str # Sorts the results., $filter: str # Filters the results, based on a Boolean condition.}\n@returns(200) {top: int, data: any} # Learners progress\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource.}\n\n@endpoint GET /users/{userEmail}/progress\n@desc Find learner's progress in offerings\n@required {userEmail: str(email) # user's email}\n@returns(200) {id: str, firstName: str, lastName: str, email: str, personId: str, offerings: [map]} # Learner Progress\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint GET /users/{userEmail}/badges\n@desc Find user's badges\n@required {userEmail: str(email) # user's email}\n@returns(200) user's badges\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint PATCH /users/{userEmail}/transfer\n@desc Transfer a user between offerings\n@required {userEmail: str(email) # user's email}\n@optional {fromOfferingId: str, toOfferingId: str, sendInvite: bool}\n@returns(200) Updated user information\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /users/{userEmail}/invite-email\n@desc Resend invitation email\n@required {userEmail: str(email) # user's email}\n@returns(204) successfully requested invitation e-mail sending\n@errors {401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endpoint POST /users\n@desc Add new user\n@optional {firstName: str, lastName: str, email: str(email), personId: str, profile: map{displayName: str}, metadata: map{tags: [str]}, sendInvite: bool=true}\n@returns(201) {id: str, avatarUrl: str, profile: map{displayName: str, mobile: str}, email: str(email), firstName: str, lastName: str, personId: str, lastAccessAt: str(date-time), firstAccessAt: str(date-time), metadata: map{tags: [str]}, invite: map{url: str}} # user added\n@errors {400: Bad Request, 401: No authorization token was found., 403: You are not allowed to access this resource., 404: Not Found}\n\n@endgroup\n\n@end\n"}