openapi: 3.0.3 info: title: Rokwire LMS Building Block API description: LMS Building Block API Documentation version: 1.15.1 servers: - url: 'https://api.rokwire.illinois.edu/lms' description: Production server - url: 'https://api-test.rokwire.illinois.edu/lms' description: Test server - url: 'https://api-dev.rokwire.illinois.edu/lms' description: Development server - url: 'http://localhost/lms' description: Local server tags: - name: Default description: Common APIs. - name: Client description: Clients APIs. - name: Admin description: Clients administration APIs. paths: /version: get: tags: - Default summary: Get version description: | Gets current version of this service responses: '200': description: Success content: text/plain: schema: type: string example: v1.0.0 '500': description: Internal error x-core-function: GetVersion x-data-type: string /api/courses: get: tags: - Client summary: Get courses description: | Get courses security: - bearerAuth: [] parameters: - name: course_type in: query description: course type required: false style: form explode: false schema: type: string - name: limit in: query description: maximum number of results to return required: false style: form explode: false schema: type: integer responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/ProviderCourse' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCourses x-data-type: model.ProviderCourse x-authentication-type: User '/api/courses/{id}': get: tags: - Client summary: Get course by ID description: | Gets course by ID security: - bearerAuth: [] parameters: - name: id in: path description: ID of the course required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/ProviderCourse' '400': description: Bad request '401': description: Unauthorized '404': description: Not Found '500': description: Internal error x-core-function: GetCourse x-data-type: model.ProviderCourse x-authentication-type: User '/api/courses/{id}/assignment-groups': get: tags: - Client summary: Get assignment-groups by ID description: | Gets assignment-groups by ID security: - bearerAuth: [] parameters: - name: id in: path description: ID of the course required: true style: simple explode: false schema: type: string - name: include in: query description: 'include = assignments,submission' required: false style: form explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/AssignmentGroup' '400': description: Bad request '401': description: Unauthorized '404': description: Not Found '500': description: Internal error x-core-function: GetAssignmentGroups x-data-type: model.AssignmentGroup x-authentication-type: User '/api/courses/{id}/users': get: tags: - Client summary: Get user by ID description: | Get user by ID security: - bearerAuth: [] parameters: - name: id in: path description: ID of the course required: true style: simple explode: false schema: type: string - name: include in: query description: 'include = enrollments,scores' required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/User' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCourseUser x-data-type: model.User x-authentication-type: User /api/users/self: get: tags: - Client summary: Get current user description: | Get current user security: - bearerAuth: [] responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/User' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCurrentUser x-data-type: model.User x-authentication-type: User /api/users/courses: get: tags: - Client summary: Get custom user courses description: | Get custom user courses by search parameters security: - bearerAuth: [] parameters: - name: id in: query description: userCourse ID required: false style: form explode: false schema: type: string - name: name in: query description: course name required: false style: form explode: false schema: type: string - name: key in: query description: course key required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/UserCourse' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetUserCourses x-data-type: model.UserCourse x-authentication-type: User '/api/users/courses/{key}': get: tags: - Client summary: Get user course description: | Get user course security: - bearerAuth: [] parameters: - name: key in: path description: course key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UserCourse' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetUserCourse x-data-type: model.UserCourse x-authentication-type: User post: tags: - Client summary: Create custom user course description: | Create custom user course security: - bearerAuth: [] parameters: - name: key in: path description: course key required: true style: simple explode: false schema: type: string requestBody: description: user timezone information content: application/json: schema: $ref: '#/components/schemas/Timezone' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UserCourse' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateUserCourse x-data-type: model.UserCourse x-authentication-type: User delete: tags: - Client summary: Delete custom user course description: | Delete custom user course security: - bearerAuth: [] parameters: - name: key in: path description: course key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteUserCourse x-data-type: model.UserCourse x-authentication-type: User put: tags: - Client summary: update a user course description: | update a user course by its course key security: - bearerAuth: [] parameters: - name: key in: path description: course key required: true style: simple explode: false schema: type: string - name: drop in: query description: whether to drop the course required: false style: form explode: false schema: type: boolean responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateUserCourse x-data-type: model.UserCourse x-authentication-type: User '/api/users/courses/{course_key}/modules/{module_key}': put: tags: - Client summary: Update module progress description: | Update module progress security: - bearerAuth: [] parameters: - name: course_key in: path description: key of course to update progress required: true style: simple explode: false schema: type: string - name: module_key in: path description: key of module to update progress required: true style: simple explode: false schema: type: string requestBody: description: updated user content with timezone info content: application/json: schema: $ref: '#/components/schemas/UserResponse' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UserUnit' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateUserCourseModuleProgress x-data-type: model.UserUnit x-authentication-type: User /api/users/contents: get: tags: - Client summary: Get user content history description: | Get all user content history for a list of user content IDs security: - bearerAuth: [] parameters: - name: ids in: query description: comma separated list of user content ids required: true style: form explode: false schema: type: string responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/UserContent' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetUserContents x-data-type: model.UserContent x-authentication-type: User '/api/users/units/{key}': get: tags: - Client summary: Get custom user units of a course description: | Get custom user units of a course by search parameters security: - bearerAuth: [] parameters: - name: key in: path description: course key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/UserUnit' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetUserCourseUnits x-data-type: model.UserUnit x-authentication-type: User /api/custom/courses: get: tags: - Client summary: Get custom courses description: | Get custom courses security: - bearerAuth: [] responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourses x-data-type: model.Course x-authentication-type: User '/api/custom/courses/{key}': get: tags: - Client summary: Get custom course by key description: | Get custom course by key security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Course' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourse x-data-type: model.Course x-authentication-type: User '/api/custom/course-configs/{key}': get: tags: - Client summary: Get custom course config description: | Get custom course config by key security: - bearerAuth: [] parameters: - name: key in: path description: Course key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/CourseConfig' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourseConfig x-data-type: model.CourseConfig x-authentication-type: User /api/user-data: get: tags: - Client summary: Get user data description: | Get user data security: - bearerAuth: [] responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/UserData' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error /admin/nudges-config: get: tags: - Admin summary: Get nudges config description: | Get nudges security: - bearerAuth: [] responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/NudgesConfig' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetNudgesConfig x-data-type: model.NudgesConfig x-authentication-type: Permissions put: tags: - Admin summary: Update the nudges config description: | Update the nudges config security: - bearerAuth: [] requestBody: description: update the nudges config content: application/json: schema: $ref: '#/components/schemas/NudgesConfig' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateNudgesConfig x-data-type: model.NudgesConfig x-authentication-type: Permissions x-conversion-function: nudgesConfigFromDef /admin/nudges: get: tags: - Admin summary: Get nudges description: | Get nudges security: - bearerAuth: [] responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Nudge' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetNudges x-data-type: model.Nudge x-authentication-type: Permissions post: tags: - Admin summary: Create Nudge description: | Creates Nudge security: - bearerAuth: [] requestBody: description: creates one nudge content: application/json: schema: $ref: '#/components/schemas/_admin_req_create_nudge' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateNudge x-data-type: model.Nudge x-authentication-type: Permissions x-conversion-function: nudgeFromDefAdminReqCreate '/admin/nudges/{id}': put: tags: - Admin summary: Update nudge by ID description: | Updates nudge by ID security: - bearerAuth: [] parameters: - name: id in: path description: ID of the nudge that needs to be updated required: true style: simple explode: false schema: type: string requestBody: description: update one nudge content: application/json: schema: $ref: '#/components/schemas/_admin_req_update_nudge' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateNudge x-data-type: model.Nudge x-authentication-type: Permissions x-conversion-function: nudgeFromDefAdminReqUpdate delete: tags: - Admin summary: Delete nudge description: | Delete nudge by ID security: - bearerAuth: [] parameters: - name: id in: path description: The nudge ID required: true schema: type: string responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteNudge x-data-type: model.Nudge x-authentication-type: Permissions /admin/sent-nudges: get: tags: - Admin summary: Find sent nudges description: | Find sent nudges security: - bearerAuth: [] parameters: - name: nudge-id in: query description: nudge_id style: form explode: false schema: type: string - name: user-id in: query description: user_id style: form explode: false schema: type: string - name: net-id in: query description: net_id style: form explode: false schema: type: string - name: mode in: query description: mode style: form explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: type: array items: required: - id - nudge_id - user_id - net_id - criteria_hash - mode type: object properties: id: readOnly: true type: string nudge_id: type: string user_id: type: string net_id: type: string criteria_hash: type: integer mode: type: string enum: - normal - test '400': description: Bad request '401': description: Unauthorized '404': description: Not Found '500': description: Internal error x-core-function: FindSentNudges x-data-type: model.SentNudge x-authentication-type: Permissions delete: tags: - Admin summary: Delete sent nudge description: | Delete sent nudge by ID security: - bearerAuth: [] parameters: - name: ids in: query description: A comma-separated list of sent_nudge IDs style: form explode: false schema: type: string responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteSentNudges x-data-type: model.SentNudge x-authentication-type: Permissions /admin/test-sent-nudges: delete: tags: - Admin summary: Clear test sent nudges description: | Clear all test sent nudges security: - bearerAuth: [] responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: ClearTestSentNudges x-data-type: model.SentNudge x-authentication-type: Permissions /admin/nudges-processes: get: tags: - Admin summary: Get nudges process description: | Get nudges process security: - bearerAuth: [] parameters: - name: limit in: query description: The maximum number to return required: false style: form explode: false schema: type: integer - name: offset in: query description: The index of the first nudges process to return required: false style: form explode: false schema: type: integer responses: '200': description: Successful operation content: application/json: schema: type: array items: required: - id - mode - created_at - completed_at - status - error type: object properties: id: readOnly: true type: string mode: type: string created_at: type: string completed_at: type: string status: type: string error: type: string blocks: type: object properties: number: type: integer items: type: object properties: net_id: type: string user_id: type: string '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: FindNudgesProcesses x-data-type: model.NudgesProcess x-authentication-type: Permissions /admin/courses: get: tags: - Admin summary: Get custom courses description: | Get custom courses by search parameters security: - bearerAuth: [] parameters: - name: id in: query description: course ID required: false style: form explode: false schema: type: string - name: name in: query description: course name required: false style: form explode: false schema: type: string - name: key in: query description: course key required: false style: form explode: false schema: type: string - name: module_key in: query description: comma separated list of module keys required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourses x-data-type: model.Course x-authentication-type: Permissions post: tags: - Admin summary: Create custom course description: | Create a custom course security: - bearerAuth: [] requestBody: description: custom course content: application/json: schema: $ref: '#/components/schemas/Course' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateCustomCourse x-data-type: model.Course x-authentication-type: Permissions '/admin/courses/{key}': get: tags: - Admin summary: Get custom course by key description: | Get custom course by key security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Course' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourse x-data-type: model.Course x-authentication-type: Permissions put: tags: - Admin summary: Update custom course description: | Update custom course security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string requestBody: description: updated course content: application/json: schema: $ref: '#/components/schemas/_admin_req_update_course' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateCustomCourse x-data-type: model.Course x-authentication-type: Permissions x-conversion-function: customCourseUpdateFromDef delete: tags: - Admin summary: Delete custom course description: | Delete custom course security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteCustomCourse x-data-type: model.Course x-authentication-type: Permissions /admin/modules: get: tags: - Admin summary: Get custom modules description: | Get custom modules by search parameters security: - bearerAuth: [] parameters: - name: id in: query description: module ID required: false style: form explode: false schema: type: string - name: name in: query description: module name required: false style: form explode: false schema: type: string - name: key in: query description: module key required: false style: form explode: false schema: type: string - name: unit_key in: query description: comma separated list of unit IDs required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Module' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomModules x-data-type: model.Module x-authentication-type: Permissions post: tags: - Admin summary: Create custom module description: | Create a custom module security: - bearerAuth: [] requestBody: description: custom module content: application/json: schema: $ref: '#/components/schemas/Module' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateCustomModule x-data-type: model.Module x-authentication-type: Permissions '/admin/modules/{key}': get: tags: - Admin summary: Get custom module by key description: | Get custom module by key security: - bearerAuth: [] parameters: - name: key in: path description: Module key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Module' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomModule x-data-type: model.Module x-authentication-type: Permissions put: tags: - Admin summary: Update custom module description: | Update custom module security: - bearerAuth: [] parameters: - name: key in: path description: Module key required: true style: simple explode: false schema: type: string requestBody: description: updated module content: application/json: schema: $ref: '#/components/schemas/_admin_req_update_module' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateCustomModule x-data-type: model.Module x-authentication-type: Permissions x-conversion-function: customModuleUpdateFromDef delete: tags: - Admin summary: Delete custom module description: | Delete custom module security: - bearerAuth: [] parameters: - name: key in: path description: Module key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteCustomModule x-data-type: model.Module x-authentication-type: Permissions /admin/units: get: tags: - Admin summary: Get custom units description: | Get custom units by search parameters security: - bearerAuth: [] parameters: - name: id in: query description: unit ID required: false style: form explode: false schema: type: string - name: name in: query description: unit name required: false style: form explode: false schema: type: string - name: key in: query description: unit key required: false style: form explode: false schema: type: string - name: content_key in: query description: comma separated list of content keys required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Unit' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomUnits x-data-type: model.Unit x-authentication-type: Permissions post: tags: - Admin summary: Create custom unit description: | Create a custom unit security: - bearerAuth: [] requestBody: description: custom unit content: application/json: schema: $ref: '#/components/schemas/Unit' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateCustomUnit x-data-type: model.Unit x-authentication-type: Permissions '/admin/units/{key}': get: tags: - Admin summary: Get custom unit by key description: | Get custom unit by key security: - bearerAuth: [] parameters: - name: key in: path description: Unit key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Unit' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomUnit x-data-type: model.Unit x-authentication-type: Permissions put: tags: - Admin summary: Update custom unit description: | Update custom unit security: - bearerAuth: [] parameters: - name: key in: path description: Unit key required: true style: simple explode: false schema: type: string requestBody: description: updated unit content: application/json: schema: $ref: '#/components/schemas/_admin_req_update_unit' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateCustomUnit x-data-type: model.Unit x-authentication-type: Permissions x-conversion-function: customUnitUpdateFromDef delete: tags: - Admin summary: Delete custom unit description: | Delete custom unit security: - bearerAuth: [] parameters: - name: key in: path description: Unit key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteCustomUnit x-data-type: model.Unit x-authentication-type: Permissions /admin/content: get: tags: - Admin summary: Get custom contents description: | Get custom contents by search parameters security: - bearerAuth: [] parameters: - name: id in: query description: content ID required: false style: form explode: false schema: type: string - name: name in: query description: content name required: false style: form explode: false schema: type: string - name: key in: query description: content key required: false style: form explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Content' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomContents x-data-type: model.Content x-authentication-type: Permissions post: tags: - Admin summary: Create custom content description: | Create a custom content security: - bearerAuth: [] requestBody: description: custom content content: application/json: schema: $ref: '#/components/schemas/Content' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateCustomContent x-data-type: model.Content x-authentication-type: Permissions '/admin/content/{key}': get: tags: - Admin summary: Get custom content by key description: | Get custom content by key security: - bearerAuth: [] parameters: - name: key in: path description: Content key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Content' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomContent x-data-type: model.Content x-authentication-type: Permissions put: tags: - Admin summary: Update custom content description: | Update custom content security: - bearerAuth: [] parameters: - name: key in: path description: Content key required: true style: simple explode: false schema: type: string requestBody: description: updated content content: application/json: schema: $ref: '#/components/schemas/Content' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateCustomContent x-data-type: model.Content x-authentication-type: Permissions delete: tags: - Admin summary: Delete custom content description: | Delete custom content security: - bearerAuth: [] parameters: - name: key in: path description: Content key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteCustomContent x-data-type: model.Content x-authentication-type: Permissions /admin/course-configs: get: tags: - Admin summary: Get custom course configs description: | Get all custom course configs security: - bearerAuth: [] responses: '200': description: Successful operation content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseConfig' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourseConfigs x-data-type: model.CourseConfig x-authentication-type: Permissions post: tags: - Admin summary: Create custom course config description: | Create a custom course config security: - bearerAuth: [] requestBody: description: course config content: application/json: schema: $ref: '#/components/schemas/CourseConfig' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: CreateCustomCourseConfig x-data-type: model.CourseConfig x-authentication-type: Permissions '/admin/course-configs/{key}': get: tags: - Admin summary: Get custom course config description: | Get custom course config by key security: - bearerAuth: [] parameters: - name: key in: path description: Course key required: true style: simple explode: false schema: type: string responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/CourseConfig' '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: GetCustomCourseConfig x-data-type: model.CourseConfig x-authentication-type: Permissions put: tags: - Admin summary: Update custom course config description: | Update custom course config security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string requestBody: description: updated course config content: application/json: schema: $ref: '#/components/schemas/CourseConfig' required: true responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: UpdateCustomCourseConfig x-data-type: model.CourseConfig x-authentication-type: Permissions delete: tags: - Admin summary: Delete custom course config description: | Delete custom course config security: - bearerAuth: [] parameters: - name: key in: path description: Course Key required: true style: simple explode: false schema: type: string responses: '200': description: Success content: text/plain: schema: type: string example: Success '400': description: Bad request '401': description: Unauthorized '500': description: Internal error x-core-function: DeleteCustomCourseConfig x-data-type: model.CourseConfig x-authentication-type: Permissions components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT schemas: User: type: object properties: id: type: integer name: type: string enrollments: $ref: '#/components/schemas/Enrollment' Enrollment: type: object properties: id: type: integer type: type: string grade: $ref: '#/components/schemas/Grade' Grade: type: object properties: current_score: type: number ProviderCourse: type: object properties: id: type: string readOnly: true name: type: string access_restricted_by_date: type: boolean created_at: type: string Assignment: type: object properties: id: readOnly: true type: string name: type: string course_id: type: integer html_url: type: string position: type: integer AssignmentGroup: type: object properties: id: type: string assigments: $ref: '#/components/schemas/Assignment' Nudge: required: - id - name - body - params type: object properties: id: readOnly: true type: string name: type: string body: type: string params: type: object properties: account_ids: type: array items: type: integer course_ids: type: array items: type: integer active: type: boolean users_sources: type: array items: $ref: '#/components/schemas/UsersSource' NudgesConfig: required: - active - group_name - test_group_name - mode type: object properties: active: type: boolean group_name: type: string test_group_name: type: string mode: type: string enum: - normal - test process_time: type: integer block_size: type: integer UsersSource: required: - type type: object properties: type: type: string params: nullable: true type: object Course: required: - id - app_id - org_id - key - name - modules type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true key: type: string name: type: string modules: type: array items: $ref: '#/components/schemas/Module' Module: required: - id - app_id - org_id - key - name - units - display type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true key: type: string name: type: string units: type: array items: $ref: '#/components/schemas/Unit' styles: $ref: '#/components/schemas/Styles' Unit: required: - id - app_id - org_id - key - name - content - schedule type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true key: type: string name: type: string content: type: array items: $ref: '#/components/schemas/Content' schedule: type: array items: $ref: '#/components/schemas/ScheduleItem' Content: required: - id - app_id - org_id - key - type - name - reference - display type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true key: type: string type: type: string enum: - assignment - resource - reward - evaluation name: type: string details: type: string reference: $ref: '#/components/schemas/Reference' linked_content: type: array items: type: string nullable: true styles: $ref: '#/components/schemas/Styles' ScheduleItem: required: - name - content_keys type: object properties: name: type: string content_keys: type: array items: type: string duration: type: integer Reference: required: - name - type - reference_key type: object properties: name: type: string type: type: string reference_key: type: string UserCourse: allOf: - $ref: '#/components/schemas/Timezone' - required: - id - app_id - org_id - user_id - streak - streak_resets - streak_restarts - pauses - pause_uses - course - date_created - date_completed - date_dropped type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true user_id: type: string readOnly: true streak: type: integer streak_resets: type: array items: type: string format: date-time streak_restarts: type: array items: type: string format: date-time pauses: type: integer pause_uses: type: array items: type: string format: date-time course: $ref: '#/components/schemas/Course' date_created: type: string readOnly: true format: date-time date_completed: type: string readOnly: true format: date-time date_dropped: type: string readOnly: true format: date-time UserUnit: required: - id - app_id - org_id - user_id - course_key - module_key - completed - current - user_schedule - unit type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true user_id: type: string readOnly: true course_key: type: string readOnly: true module_key: type: string readOnly: true completed: type: integer current: type: boolean user_schedule: type: array items: $ref: '#/components/schemas/UserScheduleItem' readOnly: true unit: $ref: '#/components/schemas/Unit' date_created: type: string format: date-time date_updated: type: string format: date-time UserContent: required: - id - app_id - org_id - user_id - course_key - module_key - unit_key - content - date_created - date_updated type: object properties: id: type: string readOnly: true app_id: type: string readOnly: true org_id: type: string readOnly: true user_id: type: string readOnly: true course_key: type: string readOnly: true module_key: type: string readOnly: true unit_key: type: string readOnly: true content: $ref: '#/components/schemas/Content' response: type: object date_created: type: string format: date-time readOnly: true date_updated: type: string format: date-time readOnly: true UserScheduleItem: required: - user_content type: object properties: user_content: type: array items: $ref: '#/components/schemas/UserContentReference' date_started: type: string format: date-time date_completed: type: string format: date-time nullable: true UserContentReference: required: - content_key - ids type: object properties: content_key: type: string ids: type: array items: type: string UserResponse: allOf: - $ref: '#/components/schemas/Timezone' - required: - unit_key - content_key - response type: object properties: unit_key: type: string content_key: type: string response: type: object Timezone: required: - timezone_name - timezone_offset type: object properties: timezone_name: type: string timezone_offset: type: integer CourseConfig: required: - id - app_id - org_id - course_key - initial_pauses - max_pauses - pause_progress_reward - streaks_notifications_config type: object properties: id: type: string readOnly: true app_id: type: string org_id: type: string course_key: type: string initial_pauses: type: integer max_pauses: type: integer pause_progress_reward: type: integer streaks_notifications_config: $ref: '#/components/schemas/StreaksNotificationsConfig' StreaksNotificationsConfig: required: - timezone_name - streaks_process_time - prefer_early - notifications_active - notifications_mode - notifications type: object properties: timezone_name: type: string timezone_offset: type: integer streaks_process_time: type: integer prefer_early: type: boolean notifications_active: type: boolean notifications_mode: type: string enum: - normal - test notifications: type: array items: $ref: '#/components/schemas/Notification' Notification: required: - subject - body - process_time - active - requirements type: object properties: subject: type: string body: type: string process_time: type: integer active: type: boolean requirements: type: object Styles: type: object properties: colors: type: object images: type: object strings: type: object UserData: type: object properties: my_provider_courses: type: array $ref: '#/components/schemas/ProviderCourse' my_provider_assigments: type: array $ref: '#/components/schemas/Assignment' provider_account: $ref: '#/components/schemas/User' my_courses: $ref: '#/components/schemas/Course' my_unit: $ref: '#/components/schemas/Unit' my_content: $ref: '#/components/schemas/Content' _admin_req_create_nudge: required: - id - name - body - deep_link - params - active type: object properties: id: type: string name: type: string body: type: string deep_link: type: string params: type: object nullable: false active: type: boolean users_sources: type: array items: $ref: '#/components/schemas/UsersSource' _admin_req_update_nudge: required: - name - body - deep_link - params - active type: object properties: name: type: string body: type: string deep_link: type: string params: type: object nullable: false active: type: boolean users_sources: type: array items: $ref: '#/components/schemas/UsersSource' _admin_req_update_course: required: - name - module_keys type: object properties: name: type: string module_keys: type: array items: type: string _admin_req_update_module: required: - name - unit_keys type: object properties: name: type: string unit_keys: type: array items: type: string _admin_req_update_unit: required: - name - content_keys - schedule type: object properties: name: type: string content_keys: type: array items: type: string schedule: type: array items: $ref: '#/components/schemas/ScheduleItem'