openapi: 3.0.3 info: title: Open edX API description: APIs for access to Open edX information contact: email: dl@kaznu.kz version: v1 servers: - url: https://open.kaznu.kz/api paths: /agreements/v1/integrity_signature/{course_id}: get: operationId: agreements_v1_integrity_signature_read summary: In order to check whether the user has signed the integrity agreement for a given course. description: "Should return the following:\n username (str)\n course_id\ \ (str)\n created_at (str)\n\nIf a username is not given, it should default\ \ to the requesting user (or masqueraded user).\nOnly staff should be able\ \ to access this endpoint for other users." tags: - agreements parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' post: operationId: agreements_v1_integrity_signature_create description: "Create an integrity signature for the requesting user and course.\ \ If a signature\nalready exists, returns the existing signature instead of\ \ creating a new one.\n\n/api/agreements/v1/integrity_signature/{course_id}\n\ \nExample response:\n {\n username: \"janedoe\",\n course_id:\ \ \"org.2/course_2/Run_2\",\n created_at: \"2021-04-23T18:25:43.511Z\"\ \n }" tags: - agreements parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' /agreements/v1/lti_pii_signature/{course_id}: post: operationId: agreements_v1_lti_pii_signature_create description: "Create an LTI PII signature for the requesting user and course.\ \ If a signature\nalready exists, returns the existing signature instead of\ \ creating a new one.\n\n/api/agreements/v1/lti_pii_signature/{course_id}\n\ \nExample response:\n {\n username: \"janedoe\",\n course_id:\ \ \"org.2/course_2/Run_2\",\n created_at: \"2021-04-23T18:25:43.511Z\"\ \n }" tags: - agreements parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' /bookmarks/v1/bookmarks/: get: operationId: bookmarks_v1_bookmarks_list summary: Get a paginated list of bookmarks for a user. description: 'The list can be filtered by passing parameter "course_id=" to only include bookmarks from a particular course. The bookmarks are always sorted in descending order by creation date. Each page in the list contains 10 bookmarks by default. The page size can be altered by passing parameter "page_size=". To include the optional fields pass the values in "fields" parameter as a comma separated list. Possible values are: * "display_name" * "path" **Example Requests** GET /api/bookmarks/v1/bookmarks/?course_id={course_id1}&fields=display_name,path' tags: - bookmarks parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer - name: course_id in: query required: false description: The id of the course to limit the list schema: type: string - name: fields in: query required: false description: 'The fields to return: display_name, path.' schema: type: string responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Bookmark' post: operationId: bookmarks_v1_bookmarks_create summary: Create a new bookmark for a user. description: 'The POST request only needs to contain one parameter "usage_id". Http400 is returned if the format of the request is not correct, the usage_id is invalid or a block corresponding to the usage_id could not be found. **Example Requests** POST /api/bookmarks/v1/bookmarks/ Request data: {"usage_id": }' tags: - bookmarks requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Bookmark' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/Bookmark' /bookmarks/v1/bookmarks/{username},{usage_id}/: get: operationId: bookmarks_v1_bookmarks_read summary: Get a specific bookmark for a user. description: '**Example Requests** GET /api/bookmarks/v1/bookmarks/{username},{usage_id}?fields=display_name,path' tags: - bookmarks parameters: - name: username in: path required: true schema: type: string - name: usage_id in: path required: true schema: type: string responses: '200': description: '' delete: operationId: bookmarks_v1_bookmarks_delete description: DELETE /api/bookmarks/v1/bookmarks/{username},{usage_id} tags: - bookmarks parameters: - name: username in: path required: true schema: type: string - name: usage_id in: path required: true schema: type: string responses: '204': description: '' /certificates/v0/certificates/{username}/: get: operationId: certificates_v0_certificates_read summary: Get a paginated list of certificates for a user. description: "**Use Case**\n\nGet the list of viewable course certificates for\ \ a specific user.\n\n**Example Request**\n\nGET /api/certificates/v0/certificates/{username}\n\ \n**GET Response Values**\n\n If the request for information about the\ \ user's certificates is successful,\n an HTTP 200 \"OK\" response is returned.\n\ \n The HTTP 200 response contains a list of dicts with the following keys/values.\n\ \n * username: A string representation of an user's username passed in\ \ the request.\n\n * course_id: A string representation of a Course ID.\n\ \n * course_display_name: A string representation of the Course name.\n\ \n * course_organization: A string representation of the organization associated\ \ with the Course.\n\n * certificate_type: A string representation of the\ \ certificate type.\n Can be honor|verified|professional\n\n * created_date:\ \ Date/time the certificate was created, in ISO-8661 format.\n\n * status:\ \ A string representation of the certificate status.\n\n * is_passing:\ \ True if the certificate has a passing status, False if not.\n\n * download_url:\ \ A string representation of the certificate url.\n\n * grade: A string\ \ representation of a float for the user's course grade.\n\n**Example GET\ \ Response**\n\n [{\n \"username\": \"bob\",\n \"course_id\"\ : \"edX/DemoX/Demo_Course\",\n \"certificate_type\": \"verified\",\n\ \ \"created_date\": \"2015-12-03T13:14:28+0000\",\n \"status\"\ : \"downloadable\",\n \"is_passing\": true,\n \"download_url\"\ : \"http://www.example.com/cert.pdf\",\n \"grade\": \"0.98\"\n }]" tags: - certificates parameters: - name: username in: path required: true schema: type: string - name: username in: path required: true description: The users to get certificates for schema: type: string responses: '200': description: '' /certificates/v0/certificates/{username}/courses/{course_id}/: get: operationId: certificates_v0_certificates_courses_read description: Retrieves certificate information for a user in a specified course run. tags: - certificates parameters: - name: username in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /change_email_settings: post: operationId: change_email_settings_create description: Modify logged-in user's setting for receiving emails from a course. tags: - change_email_settings responses: '201': description: '' /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}: get: operationId: cohorts_v1_courses_cohorts_read description: Endpoint to get either one or all cohorts. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: object properties: {} post: operationId: cohorts_v1_courses_cohorts_create description: Endpoint to create a new cohort, must not include cohort_id. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: {} responses: '201': description: '' content: application/json: schema: type: object properties: {} patch: operationId: cohorts_v1_courses_cohorts_partial_update description: Endpoint to update a cohort name and/or assignment type. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: {} responses: '200': description: '' content: application/json: schema: type: object properties: {} /cohorts/v1/courses/{course_key_string}/cohorts/{cohort_id}/users/{username}: get: operationId: cohorts_v1_courses_cohorts_users_read description: Lists the users in a specific cohort. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CohortUsersAPI' post: operationId: cohorts_v1_courses_cohorts_users_create description: Add given users to the cohort. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string - name: username in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CohortUsersAPI' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/CohortUsersAPI' delete: operationId: cohorts_v1_courses_cohorts_users_delete description: Removes and user from a specific cohort. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string - name: cohort_id in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '204': description: '' /cohorts/v1/courses/{course_key_string}/users: post: operationId: cohorts_v1_courses_users_create description: 'View method that accepts an uploaded file (using key "uploaded-file") containing cohort assignments for users. This method spawns a celery task to do the assignments, and a CSV file with results is provided via data downloads.' tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string responses: '201': description: '' /cohorts/v1/settings/{course_key_string}: get: operationId: cohorts_v1_settings_read description: Endpoint to fetch the course cohort settings. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: object properties: {} put: operationId: cohorts_v1_settings_update description: Endpoint to set the course cohort settings. tags: - cohorts parameters: - name: course_key_string in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: {} responses: '200': description: '' content: application/json: schema: type: object properties: {} /commerce/v0/baskets/: post: operationId: commerce_v0_baskets_create description: Attempt to enroll the user. tags: - commerce responses: '201': description: '' /commerce/v0/baskets/{basket_id}/order/: get: operationId: commerce_v0_baskets_order_list description: HTTP handler. tags: - commerce parameters: - name: basket_id in: path required: true schema: type: string responses: '200': description: '' /commerce/v1/courses/: get: operationId: commerce_v1_courses_list description: List courses and modes. tags: - commerce responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/commerce.Course' /commerce/v1/courses/{course_id}/: get: operationId: commerce_v1_courses_read description: Retrieve, update, or create courses/modes. tags: - commerce parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/commerce.Course' put: operationId: commerce_v1_courses_update description: Retrieve, update, or create courses/modes. tags: - commerce parameters: - name: course_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/commerce.Course' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/commerce.Course' patch: operationId: commerce_v1_courses_partial_update description: Retrieve, update, or create courses/modes. tags: - commerce parameters: - name: course_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/commerce.Course' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/commerce.Course' /commerce/v1/orders/{number}/: get: operationId: commerce_v1_orders_read description: HTTP handler. tags: - commerce parameters: - name: number in: path required: true schema: type: string responses: '200': description: '' /completion/v1/completion-batch: post: operationId: completion_v1_completion-batch_create summary: Inserts a batch of completions. description: "REST Endpoint Format:\n```\n{\n \"username\": \"username\",\n\ \ \"course_key\": \"course-key\",\n \"blocks\": {\n \"block_key1\": 0.0,\n\ \ \"block_key2\": 1.0,\n \"block_key3\": 1.0,\n }\n}\n```\n\n**Returns**\n\ \nA Response object, with an appropriate status code.\n\nIf successful, status\ \ code is 200.\n```\n{\n \"detail\" : _(\"ok\")\n}\n```\n\nOtherwise, a\ \ 400 or 404 may be returned, and the \"detail\" content will explain the\ \ error." tags: - completion responses: '201': description: '' /completion/v1/subsection-completion/{username}/{course_key}/{subsection_id}: get: operationId: completion_v1_subsection-completion_read description: Returns completion for a (user, subsection, course). tags: - completion parameters: - name: username in: path required: true schema: type: string - name: course_key in: path required: true schema: type: string - name: subsection_id in: path required: true schema: type: string responses: '200': description: '' /course_experience/v1/course_deadlines_info/{course_key_string}: get: operationId: course_experience_v1_course_deadlines_info_read summary: '**Use Cases**' description: "Request course deadline info for mobile\n\n**Example Requests**\n\ \n GET api/course_experience/v1/course_deadlines_info/{course_key}\n\n\ **Response Values**\n\n Body consists of the following fields:\n\n dates_banner_info:\ \ (obj)\n missed_deadlines: (bool) Whether the user has missed any\ \ graded content deadlines for the given course.\n missed_gated_content:\ \ (bool) Whether the user has missed any gated content for the given course.\n\ \ content_type_gating_enabled: (bool) Whether content type gating is\ \ enabled for this enrollment.\n verified_upgrade_link: (str) The URL\ \ to ecommerce IDA for purchasing the verified upgrade.\n\n**Returns**\n\n\ \ * 200 on success with above fields.\n * 401 if the user is not authenticated.\n\ \ * 404 if the course is not available or cannot be seen." tags: - course_experience parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseDeadlinesMobile' /course_experience/v1/reset_course_deadlines: post: operationId: course_experience_v1_reset_course_deadlines_create description: "Set the start_date of a schedule to today, which in turn will\ \ adjust due dates for\nsequentials belonging to a self paced course\n\nRequest\ \ Parameters:\n course_key: course key\n research_event_data: any data\ \ that should be included in the research tracking event\n Example:\ \ sending the location of where the reset deadlines banner (i.e. outline-tab)\n\ \nIMPORTANT NOTE: If updates are happening to the logic here, ALSO UPDATE\ \ the `reset_course_deadlines`\nfunction in common/djangoapps/util/views.py\ \ as well." tags: - course_experience responses: '201': description: '' /course_home/course_metadata/{course_key_string}: get: operationId: course_home_course_metadata_read summary: '**Use Cases**' description: "Request Course metadata details for the Course Home MFE that every\ \ page needs.\n\n**Example Requests**\n\n GET api/course_home/v1/course_metadata/{course_key}\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ course_id: (str) The Course's id (Course Run key)\n username: (str)\ \ The requesting (or masqueraded) user. Returns None for an\n unauthenticated\ \ user.\n is_enrolled: (bool) Indicates if the user is enrolled in the\ \ course\n is_self_paced: (bool) Indicates if the course is self paced\n\ \ is_staff: (bool) Indicates if the user is staff\n original_user_is_staff:\ \ (bool) Indicates if the original user has staff access\n Used for\ \ when masquerading to distinguish between the original requesting user\n\ \ and the user being masqueraded as.\n number: (str) The Course's\ \ number\n org: (str) The Course's organization\n tabs: List of Course\ \ Tabs to display. They are serialized as:\n tab_id: (str) The tab's\ \ id\n title: (str) The title of the tab to display\n url: (str)\ \ The url to view the tab\n title: (str) The Course's display title\n \ \ celebrations: (dict) a dict of celebration data\n user_timezone: (str)\ \ The timezone of the given user\n can_view_certificate: Flag to determine\ \ whether or not the learner can view their course certificate.\n\n**Returns**\n\ \n * 200 on success with above fields.\n * 404 if the course is not\ \ available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseHomeMetadata' /course_home/dates/{course_key_string}: get: operationId: course_home_dates_read summary: '**Use Cases**' description: "Request details for the Dates Tab\n\n**Example Requests**\n\n\ \ GET api/course_home/v1/dates/{course_key}\n\n**Response Values**\n\n\ \ Body consists of the following fields:\n\n course_date_blocks: List\ \ of serialized DateSummary objects. Each serialization has the following\ \ fields:\n complete: (bool) Meant to only be used by assignments.\ \ Indicates completeness for an\n assignment.\n date: (datetime)\ \ The date time corresponding for the event\n date_type: (str) The\ \ type of date (ex. course-start-date, assignment-due-date, etc.)\n \ \ description: (str) The description for the date event\n learner_has_access:\ \ (bool) Indicates if the learner has access to the date event\n link:\ \ (str) An absolute link to content related to the date event\n \ \ (ex. verified link or link to assignment)\n title: (str) The title\ \ of the date event\n dates_banner_info: (obj)\n content_type_gating_enabled:\ \ (bool) Whether content type gating is enabled for this enrollment.\n \ \ missed_deadlines: (bool) Indicates whether the user missed any graded\ \ content deadlines\n missed_gated_content: (bool) Indicates whether\ \ the user missed gated content\n verified_upgrade_link: (str) The\ \ link for upgrading to the Verified track in a course\n has_ended: (bool)\ \ Indicates whether course has ended\n learner_is_full_access: (bool) Indicates\ \ if the user is verified in the course\n user_timezone: (str) The user's\ \ preferred timezone\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated.\n * 403 if the user does not\ \ have access to the course.\n * 404 if the course is not available or\ \ cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DatesTab' /course_home/dismiss_welcome_message: post: operationId: course_home_dismiss_welcome_message_create description: '' tags: - course_home responses: '201': description: '' /course_home/navigation/{course_key_string}: get: operationId: course_home_navigation_read description: Get the visible course blocks (from course to vertical types) for the given course. tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseBlock' /course_home/outline/{course_key_string}: get: operationId: course_home_outline_read summary: '**Use Cases**' description: "Request details for the Outline Tab\n\n**Example Requests**\n\n\ \ GET api/course_home/v1/outline/{course_key}\n\n**Response Values**\n\n\ \ Body consists of two possible shapes.\n\n For a good 200 response,\ \ the response will include:\n\n access_expiration: An object detailing\ \ when access to this course will expire\n expiration_date: (str) When\ \ the access expires, in ISO 8601 notation\n masquerading_expired_course:\ \ (bool) Whether this course is expired for the masqueraded user\n \ \ upgrade_deadline: (str) Last chance to upgrade, in ISO 8601 notation (or\ \ None if can't upgrade anymore)\n upgrade_url: (str) Upgrade link\ \ (or None if can't upgrade anymore)\n course_blocks:\n blocks:\ \ List of serialized Course Block objects. Each serialization has the following\ \ fields:\n id: (str) The usage ID of the block.\n type:\ \ (str) The type of block. Possible values the names of any\n \ \ XBlock type in the system, including custom blocks. Examples are\n \ \ course, chapter, sequential, vertical, html, problem, video,\ \ and\n discussion.\n display_name: (str) The display\ \ name of the block.\n lms_web_url: (str) The URL to the navigational\ \ container of the\n xBlock on the web LMS.\n children:\ \ (list) If the block has child blocks, a list of IDs of\n \ \ the child blocks.\n resume_block: (bool) Whether the block is\ \ the resume block\n has_scheduled_content: (bool) Whether the\ \ block has more content scheduled for the future\n course_goals:\n \ \ selected_goal:\n days_per_week: (int) The number of days\ \ the learner wants to learn per week\n subscribed_to_reminders:\ \ (bool) Whether the learner wants email reminders about their goal\n \ \ weekly_learning_goal_enabled: Flag indicating if this feature is enabled\ \ for this call\n course_tools: List of serialized Course Tool objects.\ \ Each serialization has the following fields:\n analytics_id: (str)\ \ The unique id given to the tool.\n title: (str) The display title\ \ of the tool.\n url: (str) The link to access the tool.\n dates_banner_info:\ \ (obj)\n content_type_gating_enabled: (bool) Whether content type\ \ gating is enabled for this enrollment.\n missed_deadlines: (bool)\ \ Whether the user has missed any graded content deadlines for the given course.\n\ \ missed_gated_content: (bool) Whether the user has missed any gated\ \ content for the given course.\n verified_upgrade_link: (str) The\ \ URL to ecommerce IDA for purchasing the verified upgrade.\n dates_widget:\n\ \ course_date_blocks: List of serialized Course Dates objects. Each\ \ serialization has the following fields:\n complete: (bool) Meant\ \ to only be used by assignments. Indicates completeness for an\n \ \ assignment.\n date: (datetime) The date time corresponding\ \ for the event\n date_type: (str) The type of date (ex. course-start-date,\ \ assignment-due-date, etc.)\n description: (str) The description\ \ for the date event\n learner_has_access: (bool) Indicates if\ \ the learner has access to the date event\n link: (str) An absolute\ \ link to content related to the date event\n (ex. verified\ \ link or link to assignment)\n title: (str) The title of the date\ \ event\n dates_tab_link: (str) The URL to the Dates Tab\n user_timezone:\ \ (str) The timezone of the given user\n enroll_alert:\n can_enroll:\ \ (bool) Whether the user can enroll in the given course\n extra_text:\ \ (str)\n enrollment_mode: (str) Current enrollment mode. Null if the user\ \ is not enrolled.\n handouts_html: (str) Raw HTML for the handouts section\ \ of the course info\n has_ended: (bool) Indicates whether course has ended\n\ \ offer: An object detailing upgrade discount information\n code:\ \ (str) Checkout code\n expiration_date: (str) Expiration of offer,\ \ in ISO 8601 notation\n original_price: (str) Full upgrade price without\ \ checkout code; includes currency symbol\n discounted_price: (str)\ \ Upgrade price with checkout code; includes currency symbol\n percentage:\ \ (int) Amount of discount\n upgrade_url: (str) Checkout URL\n resume_course:\n\ \ has_visited_course: (bool) Whether the user has ever visited the\ \ course\n url: (str) The display name of the course block to resume\n\ \ welcome_message_html: (str) Raw HTML for the course updates banner\n\ \ user_has_passing_grade: (bool) Whether the user currently is passing\ \ the course\n\n If the learner does not have access to the course for\ \ a specific reason and should be redirected this\n view will return a\ \ 403 and the following data:\n\n url: (str) The URL to which the user\ \ should be redirected\n error_code: (str) A system identifier for the\ \ reason the user is being redirected\n developer_message: (str) A message\ \ explaining why the user is being redirected,\n \ \ intended for developer debugging.\n user_message: (str) A message\ \ explaining why the user is being redirected, intended to be shown to the\ \ user.\n\n**Returns**\n\n * 200 on success.\n * 403 if the user does\ \ not currently have access to the course and should be redirected.\n *\ \ 404 if the course is not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/OutlineTab' /course_home/progress/{course_key_string}: get: operationId: course_home_progress_read summary: '**Use Cases**' description: "Request details for the Progress Tab\n\n**Example Requests**\n\ \n GET api/course_home/v1/progress/{course_key}\n GET api/course_home/v1/progress/{course_key}/{student_id}/\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ access_expiration: An object detailing when access to this course will\ \ expire\n expiration_date: (str) When the access expires, in ISO 8601\ \ notation\n masquerading_expired_course: (bool) Whether this course\ \ is expired for the masqueraded user\n upgrade_deadline: (str) Last\ \ chance to upgrade, in ISO 8601 notation (or None if can't upgrade anymore)\n\ \ upgrade_url: (str) Upgrade link (or None if can't upgrade anymore)\n\ \ certificate_data: Object containing information about the user's certificate\ \ status\n cert_status: (str) the status of a user's certificate (full\ \ list of statuses are defined in\n lms/djangoapps/certificates/models.py)\n\ \ cert_web_view_url: (str) the url to view the certificate\n \ \ download_url: (str) the url to download the certificate\n completion_summary:\ \ Object containing unit completion counts with the following fields:\n \ \ complete_count: (float) number of complete units\n incomplete_count:\ \ (float) number of incomplete units\n locked_count: (float) number\ \ of units where contains_gated_content is True\n course_grade: Object\ \ containing the following fields:\n is_passing: (bool) whether the\ \ user's grade is above the passing grade cutoff\n letter_grade: (str)\ \ the user's letter grade based on the set grade range.\n \ \ If user is passing, value may be 'A', 'B', 'C', 'D', 'Pass',\ \ otherwise none\n percent: (float) the user's total graded percent\ \ in the course\n credit_course_requirements: Object containing credit\ \ course requirements with the following fields:\n eligibility_status:\ \ (str) Indicates if the user is eligible to receive credit. Value may be\n\ \ \"eligible\", \"not_eligible\", or \"partial_eligible\"\n \ \ requirements: List of requirements that must be fulfilled to be eligible\ \ to receive credit. See\n `get_credit_requirement_status` for\ \ details on the fields\n end: (date) end date of the course\n enrollment_mode:\ \ (str) a str representing the enrollment the user has ('audit', 'verified',\ \ ...)\n grading_policy:\n assignment_policies: List of serialized\ \ assignment grading policy objects, each has the following fields:\n \ \ num_droppable: (int) the number of lowest scored assignments that\ \ will not be counted towards the final\n grade\n\ \ short_label: (str) the abbreviated name given to the assignment\ \ type\n type: (str) the assignment type\n weight: (float)\ \ the percent weight the given assigment type has on the overall grade\n \ \ grade_range: an object containing the grade range cutoffs. The exact\ \ keys in the object can vary, but they\n range from just\ \ 'Pass', to a combination of 'A', 'B', 'C', and 'D'. If a letter grade is\n\ \ present, 'Pass' is not included.\n has_scheduled_content:\ \ (bool) boolean on if the course has content scheduled with a release date\ \ in the future\n section_scores: List of serialized Chapters. Each Chapter\ \ has the following fields:\n display_name: (str) a str of what the\ \ name of the Chapter is for displaying on the site\n subsections:\ \ List of serialized Subsections, each has the following fields:\n \ \ assignment_type: (str) the format, if any, of the Subsection (Homework,\ \ Exam, etc)\n block_key: (str) the key of the given subsection\ \ block\n display_name: (str) a str of what the name of the Subsection\ \ is for displaying on the site\n has_graded_assignment: (bool)\ \ whether or not the Subsection is a graded assignment\n learner_has_access:\ \ (bool) whether the learner has access to the subsection (could be FBE gated)\n\ \ num_points_earned: (int) the amount of points the user has earned\ \ for the given subsection\n num_points_possible: (int) the total\ \ amount of points possible for the given subsection\n override:\ \ Optional object if grade has been overridden by proctor or grading change\n\ \ system: (str) either GRADING or PROCTORING\n \ \ reason: (str) a comment on the grading override\n percent_graded:\ \ (float) the percentage of total points the user has received a grade for\ \ in a given\n subsection\n problem_scores:\ \ List of objects that represent individual problem scores with the following\ \ fields:\n earned: (float) number of earned points\n \ \ possible: (float) number of possible points\n show_correctness:\ \ (str) a str representing whether to show the problem/practice scores based\ \ on due date\n ('always', 'never', 'past_due',\ \ values defined in\n xmodule/modulestore/inheritance.py)\n\ \ show_grades: (bool) a bool for whether to show grades based on\ \ the access the user has\n url: (str or None) the absolute path\ \ url to the Subsection or None if the Subsection is no longer\n \ \ accessible to the learner due to a hide_after_due course team setting\n\ \ studio_url: (str) a str of the link to the grading in studio for the\ \ course\n user_has_passing_grade: (bool) boolean on if the user has a\ \ passing grade in the course\n username: (str) username of the student\ \ whose progress information is being displayed.\n verification_data: an\ \ object containing\n link: (str) the link to either start or retry\ \ ID verification\n status: (str) the status of the ID verification\n\ \ status_date: (str) the date time string of when the ID verification\ \ status was set\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated or not enrolled.\n * 403 if\ \ the user does not have access to the course.\n * 404 if the course is\ \ not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ProgressTab' /course_home/progress/{course_key_string}/{student_id}: get: operationId: course_home_progress_read summary: '**Use Cases**' description: "Request details for the Progress Tab\n\n**Example Requests**\n\ \n GET api/course_home/v1/progress/{course_key}\n GET api/course_home/v1/progress/{course_key}/{student_id}/\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ access_expiration: An object detailing when access to this course will\ \ expire\n expiration_date: (str) When the access expires, in ISO 8601\ \ notation\n masquerading_expired_course: (bool) Whether this course\ \ is expired for the masqueraded user\n upgrade_deadline: (str) Last\ \ chance to upgrade, in ISO 8601 notation (or None if can't upgrade anymore)\n\ \ upgrade_url: (str) Upgrade link (or None if can't upgrade anymore)\n\ \ certificate_data: Object containing information about the user's certificate\ \ status\n cert_status: (str) the status of a user's certificate (full\ \ list of statuses are defined in\n lms/djangoapps/certificates/models.py)\n\ \ cert_web_view_url: (str) the url to view the certificate\n \ \ download_url: (str) the url to download the certificate\n completion_summary:\ \ Object containing unit completion counts with the following fields:\n \ \ complete_count: (float) number of complete units\n incomplete_count:\ \ (float) number of incomplete units\n locked_count: (float) number\ \ of units where contains_gated_content is True\n course_grade: Object\ \ containing the following fields:\n is_passing: (bool) whether the\ \ user's grade is above the passing grade cutoff\n letter_grade: (str)\ \ the user's letter grade based on the set grade range.\n \ \ If user is passing, value may be 'A', 'B', 'C', 'D', 'Pass',\ \ otherwise none\n percent: (float) the user's total graded percent\ \ in the course\n credit_course_requirements: Object containing credit\ \ course requirements with the following fields:\n eligibility_status:\ \ (str) Indicates if the user is eligible to receive credit. Value may be\n\ \ \"eligible\", \"not_eligible\", or \"partial_eligible\"\n \ \ requirements: List of requirements that must be fulfilled to be eligible\ \ to receive credit. See\n `get_credit_requirement_status` for\ \ details on the fields\n end: (date) end date of the course\n enrollment_mode:\ \ (str) a str representing the enrollment the user has ('audit', 'verified',\ \ ...)\n grading_policy:\n assignment_policies: List of serialized\ \ assignment grading policy objects, each has the following fields:\n \ \ num_droppable: (int) the number of lowest scored assignments that\ \ will not be counted towards the final\n grade\n\ \ short_label: (str) the abbreviated name given to the assignment\ \ type\n type: (str) the assignment type\n weight: (float)\ \ the percent weight the given assigment type has on the overall grade\n \ \ grade_range: an object containing the grade range cutoffs. The exact\ \ keys in the object can vary, but they\n range from just\ \ 'Pass', to a combination of 'A', 'B', 'C', and 'D'. If a letter grade is\n\ \ present, 'Pass' is not included.\n has_scheduled_content:\ \ (bool) boolean on if the course has content scheduled with a release date\ \ in the future\n section_scores: List of serialized Chapters. Each Chapter\ \ has the following fields:\n display_name: (str) a str of what the\ \ name of the Chapter is for displaying on the site\n subsections:\ \ List of serialized Subsections, each has the following fields:\n \ \ assignment_type: (str) the format, if any, of the Subsection (Homework,\ \ Exam, etc)\n block_key: (str) the key of the given subsection\ \ block\n display_name: (str) a str of what the name of the Subsection\ \ is for displaying on the site\n has_graded_assignment: (bool)\ \ whether or not the Subsection is a graded assignment\n learner_has_access:\ \ (bool) whether the learner has access to the subsection (could be FBE gated)\n\ \ num_points_earned: (int) the amount of points the user has earned\ \ for the given subsection\n num_points_possible: (int) the total\ \ amount of points possible for the given subsection\n override:\ \ Optional object if grade has been overridden by proctor or grading change\n\ \ system: (str) either GRADING or PROCTORING\n \ \ reason: (str) a comment on the grading override\n percent_graded:\ \ (float) the percentage of total points the user has received a grade for\ \ in a given\n subsection\n problem_scores:\ \ List of objects that represent individual problem scores with the following\ \ fields:\n earned: (float) number of earned points\n \ \ possible: (float) number of possible points\n show_correctness:\ \ (str) a str representing whether to show the problem/practice scores based\ \ on due date\n ('always', 'never', 'past_due',\ \ values defined in\n xmodule/modulestore/inheritance.py)\n\ \ show_grades: (bool) a bool for whether to show grades based on\ \ the access the user has\n url: (str or None) the absolute path\ \ url to the Subsection or None if the Subsection is no longer\n \ \ accessible to the learner due to a hide_after_due course team setting\n\ \ studio_url: (str) a str of the link to the grading in studio for the\ \ course\n user_has_passing_grade: (bool) boolean on if the user has a\ \ passing grade in the course\n username: (str) username of the student\ \ whose progress information is being displayed.\n verification_data: an\ \ object containing\n link: (str) the link to either start or retry\ \ ID verification\n status: (str) the status of the ID verification\n\ \ status_date: (str) the date time string of when the ID verification\ \ status was set\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated or not enrolled.\n * 403 if\ \ the user does not have access to the course.\n * 404 if the course is\ \ not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string - name: student_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ProgressTab' /course_home/save_course_goal: post: operationId: course_home_save_course_goal_create description: '' tags: - course_home responses: '201': description: '' /course_home/unsubscribe_from_course_goal/{token}: post: operationId: course_home_unsubscribe_from_course_goal_create summary: API calls to unsubscribe from course goal reminders. description: "Note that this does not require authentication - this view may\ \ be hit from an email on a different device than\nnormal or whatever. We\ \ should still be able to unsubscribe the user. Instead, we use a token in\ \ the email to\nvalidate that they have permission to unsubscribe.\n\nThis\ \ endpoint is very tightly scoped (only unsubscribe: no subscribing, no PII)\ \ because it is unauthenticated.\n\n**Example Requests**\n POST api/course_home/v1/unsubscribe_from_course_goal/{token}\n\ \n**Example Response Data**\n {'course_title': 'Cats & Dogs In Canadian\ \ Media'}\n\nReturns a 404 response if the token was not found. Otherwise,\ \ returns some basic course info. But no PII." tags: - course_home parameters: - name: token in: path required: true schema: type: string responses: '201': description: '' /course_home/v1/course_metadata/{course_key_string}: get: operationId: course_home_v1_course_metadata_read summary: '**Use Cases**' description: "Request Course metadata details for the Course Home MFE that every\ \ page needs.\n\n**Example Requests**\n\n GET api/course_home/v1/course_metadata/{course_key}\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ course_id: (str) The Course's id (Course Run key)\n username: (str)\ \ The requesting (or masqueraded) user. Returns None for an\n unauthenticated\ \ user.\n is_enrolled: (bool) Indicates if the user is enrolled in the\ \ course\n is_self_paced: (bool) Indicates if the course is self paced\n\ \ is_staff: (bool) Indicates if the user is staff\n original_user_is_staff:\ \ (bool) Indicates if the original user has staff access\n Used for\ \ when masquerading to distinguish between the original requesting user\n\ \ and the user being masqueraded as.\n number: (str) The Course's\ \ number\n org: (str) The Course's organization\n tabs: List of Course\ \ Tabs to display. They are serialized as:\n tab_id: (str) The tab's\ \ id\n title: (str) The title of the tab to display\n url: (str)\ \ The url to view the tab\n title: (str) The Course's display title\n \ \ celebrations: (dict) a dict of celebration data\n user_timezone: (str)\ \ The timezone of the given user\n can_view_certificate: Flag to determine\ \ whether or not the learner can view their course certificate.\n\n**Returns**\n\ \n * 200 on success with above fields.\n * 404 if the course is not\ \ available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseHomeMetadata' /course_home/v1/dates/{course_key_string}: get: operationId: course_home_v1_dates_read summary: '**Use Cases**' description: "Request details for the Dates Tab\n\n**Example Requests**\n\n\ \ GET api/course_home/v1/dates/{course_key}\n\n**Response Values**\n\n\ \ Body consists of the following fields:\n\n course_date_blocks: List\ \ of serialized DateSummary objects. Each serialization has the following\ \ fields:\n complete: (bool) Meant to only be used by assignments.\ \ Indicates completeness for an\n assignment.\n date: (datetime)\ \ The date time corresponding for the event\n date_type: (str) The\ \ type of date (ex. course-start-date, assignment-due-date, etc.)\n \ \ description: (str) The description for the date event\n learner_has_access:\ \ (bool) Indicates if the learner has access to the date event\n link:\ \ (str) An absolute link to content related to the date event\n \ \ (ex. verified link or link to assignment)\n title: (str) The title\ \ of the date event\n dates_banner_info: (obj)\n content_type_gating_enabled:\ \ (bool) Whether content type gating is enabled for this enrollment.\n \ \ missed_deadlines: (bool) Indicates whether the user missed any graded\ \ content deadlines\n missed_gated_content: (bool) Indicates whether\ \ the user missed gated content\n verified_upgrade_link: (str) The\ \ link for upgrading to the Verified track in a course\n has_ended: (bool)\ \ Indicates whether course has ended\n learner_is_full_access: (bool) Indicates\ \ if the user is verified in the course\n user_timezone: (str) The user's\ \ preferred timezone\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated.\n * 403 if the user does not\ \ have access to the course.\n * 404 if the course is not available or\ \ cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DatesTab' /course_home/v1/dismiss_welcome_message: post: operationId: course_home_v1_dismiss_welcome_message_create description: '' tags: - course_home responses: '201': description: '' /course_home/v1/navigation/{course_key_string}: get: operationId: course_home_v1_navigation_read description: Get the visible course blocks (from course to vertical types) for the given course. tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseBlock' /course_home/v1/outline/{course_key_string}: get: operationId: course_home_v1_outline_read summary: '**Use Cases**' description: "Request details for the Outline Tab\n\n**Example Requests**\n\n\ \ GET api/course_home/v1/outline/{course_key}\n\n**Response Values**\n\n\ \ Body consists of two possible shapes.\n\n For a good 200 response,\ \ the response will include:\n\n access_expiration: An object detailing\ \ when access to this course will expire\n expiration_date: (str) When\ \ the access expires, in ISO 8601 notation\n masquerading_expired_course:\ \ (bool) Whether this course is expired for the masqueraded user\n \ \ upgrade_deadline: (str) Last chance to upgrade, in ISO 8601 notation (or\ \ None if can't upgrade anymore)\n upgrade_url: (str) Upgrade link\ \ (or None if can't upgrade anymore)\n course_blocks:\n blocks:\ \ List of serialized Course Block objects. Each serialization has the following\ \ fields:\n id: (str) The usage ID of the block.\n type:\ \ (str) The type of block. Possible values the names of any\n \ \ XBlock type in the system, including custom blocks. Examples are\n \ \ course, chapter, sequential, vertical, html, problem, video,\ \ and\n discussion.\n display_name: (str) The display\ \ name of the block.\n lms_web_url: (str) The URL to the navigational\ \ container of the\n xBlock on the web LMS.\n children:\ \ (list) If the block has child blocks, a list of IDs of\n \ \ the child blocks.\n resume_block: (bool) Whether the block is\ \ the resume block\n has_scheduled_content: (bool) Whether the\ \ block has more content scheduled for the future\n course_goals:\n \ \ selected_goal:\n days_per_week: (int) The number of days\ \ the learner wants to learn per week\n subscribed_to_reminders:\ \ (bool) Whether the learner wants email reminders about their goal\n \ \ weekly_learning_goal_enabled: Flag indicating if this feature is enabled\ \ for this call\n course_tools: List of serialized Course Tool objects.\ \ Each serialization has the following fields:\n analytics_id: (str)\ \ The unique id given to the tool.\n title: (str) The display title\ \ of the tool.\n url: (str) The link to access the tool.\n dates_banner_info:\ \ (obj)\n content_type_gating_enabled: (bool) Whether content type\ \ gating is enabled for this enrollment.\n missed_deadlines: (bool)\ \ Whether the user has missed any graded content deadlines for the given course.\n\ \ missed_gated_content: (bool) Whether the user has missed any gated\ \ content for the given course.\n verified_upgrade_link: (str) The\ \ URL to ecommerce IDA for purchasing the verified upgrade.\n dates_widget:\n\ \ course_date_blocks: List of serialized Course Dates objects. Each\ \ serialization has the following fields:\n complete: (bool) Meant\ \ to only be used by assignments. Indicates completeness for an\n \ \ assignment.\n date: (datetime) The date time corresponding\ \ for the event\n date_type: (str) The type of date (ex. course-start-date,\ \ assignment-due-date, etc.)\n description: (str) The description\ \ for the date event\n learner_has_access: (bool) Indicates if\ \ the learner has access to the date event\n link: (str) An absolute\ \ link to content related to the date event\n (ex. verified\ \ link or link to assignment)\n title: (str) The title of the date\ \ event\n dates_tab_link: (str) The URL to the Dates Tab\n user_timezone:\ \ (str) The timezone of the given user\n enroll_alert:\n can_enroll:\ \ (bool) Whether the user can enroll in the given course\n extra_text:\ \ (str)\n enrollment_mode: (str) Current enrollment mode. Null if the user\ \ is not enrolled.\n handouts_html: (str) Raw HTML for the handouts section\ \ of the course info\n has_ended: (bool) Indicates whether course has ended\n\ \ offer: An object detailing upgrade discount information\n code:\ \ (str) Checkout code\n expiration_date: (str) Expiration of offer,\ \ in ISO 8601 notation\n original_price: (str) Full upgrade price without\ \ checkout code; includes currency symbol\n discounted_price: (str)\ \ Upgrade price with checkout code; includes currency symbol\n percentage:\ \ (int) Amount of discount\n upgrade_url: (str) Checkout URL\n resume_course:\n\ \ has_visited_course: (bool) Whether the user has ever visited the\ \ course\n url: (str) The display name of the course block to resume\n\ \ welcome_message_html: (str) Raw HTML for the course updates banner\n\ \ user_has_passing_grade: (bool) Whether the user currently is passing\ \ the course\n\n If the learner does not have access to the course for\ \ a specific reason and should be redirected this\n view will return a\ \ 403 and the following data:\n\n url: (str) The URL to which the user\ \ should be redirected\n error_code: (str) A system identifier for the\ \ reason the user is being redirected\n developer_message: (str) A message\ \ explaining why the user is being redirected,\n \ \ intended for developer debugging.\n user_message: (str) A message\ \ explaining why the user is being redirected, intended to be shown to the\ \ user.\n\n**Returns**\n\n * 200 on success.\n * 403 if the user does\ \ not currently have access to the course and should be redirected.\n *\ \ 404 if the course is not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/OutlineTab' /course_home/v1/progress/{course_key_string}: get: operationId: course_home_v1_progress_read summary: '**Use Cases**' description: "Request details for the Progress Tab\n\n**Example Requests**\n\ \n GET api/course_home/v1/progress/{course_key}\n GET api/course_home/v1/progress/{course_key}/{student_id}/\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ access_expiration: An object detailing when access to this course will\ \ expire\n expiration_date: (str) When the access expires, in ISO 8601\ \ notation\n masquerading_expired_course: (bool) Whether this course\ \ is expired for the masqueraded user\n upgrade_deadline: (str) Last\ \ chance to upgrade, in ISO 8601 notation (or None if can't upgrade anymore)\n\ \ upgrade_url: (str) Upgrade link (or None if can't upgrade anymore)\n\ \ certificate_data: Object containing information about the user's certificate\ \ status\n cert_status: (str) the status of a user's certificate (full\ \ list of statuses are defined in\n lms/djangoapps/certificates/models.py)\n\ \ cert_web_view_url: (str) the url to view the certificate\n \ \ download_url: (str) the url to download the certificate\n completion_summary:\ \ Object containing unit completion counts with the following fields:\n \ \ complete_count: (float) number of complete units\n incomplete_count:\ \ (float) number of incomplete units\n locked_count: (float) number\ \ of units where contains_gated_content is True\n course_grade: Object\ \ containing the following fields:\n is_passing: (bool) whether the\ \ user's grade is above the passing grade cutoff\n letter_grade: (str)\ \ the user's letter grade based on the set grade range.\n \ \ If user is passing, value may be 'A', 'B', 'C', 'D', 'Pass',\ \ otherwise none\n percent: (float) the user's total graded percent\ \ in the course\n credit_course_requirements: Object containing credit\ \ course requirements with the following fields:\n eligibility_status:\ \ (str) Indicates if the user is eligible to receive credit. Value may be\n\ \ \"eligible\", \"not_eligible\", or \"partial_eligible\"\n \ \ requirements: List of requirements that must be fulfilled to be eligible\ \ to receive credit. See\n `get_credit_requirement_status` for\ \ details on the fields\n end: (date) end date of the course\n enrollment_mode:\ \ (str) a str representing the enrollment the user has ('audit', 'verified',\ \ ...)\n grading_policy:\n assignment_policies: List of serialized\ \ assignment grading policy objects, each has the following fields:\n \ \ num_droppable: (int) the number of lowest scored assignments that\ \ will not be counted towards the final\n grade\n\ \ short_label: (str) the abbreviated name given to the assignment\ \ type\n type: (str) the assignment type\n weight: (float)\ \ the percent weight the given assigment type has on the overall grade\n \ \ grade_range: an object containing the grade range cutoffs. The exact\ \ keys in the object can vary, but they\n range from just\ \ 'Pass', to a combination of 'A', 'B', 'C', and 'D'. If a letter grade is\n\ \ present, 'Pass' is not included.\n has_scheduled_content:\ \ (bool) boolean on if the course has content scheduled with a release date\ \ in the future\n section_scores: List of serialized Chapters. Each Chapter\ \ has the following fields:\n display_name: (str) a str of what the\ \ name of the Chapter is for displaying on the site\n subsections:\ \ List of serialized Subsections, each has the following fields:\n \ \ assignment_type: (str) the format, if any, of the Subsection (Homework,\ \ Exam, etc)\n block_key: (str) the key of the given subsection\ \ block\n display_name: (str) a str of what the name of the Subsection\ \ is for displaying on the site\n has_graded_assignment: (bool)\ \ whether or not the Subsection is a graded assignment\n learner_has_access:\ \ (bool) whether the learner has access to the subsection (could be FBE gated)\n\ \ num_points_earned: (int) the amount of points the user has earned\ \ for the given subsection\n num_points_possible: (int) the total\ \ amount of points possible for the given subsection\n override:\ \ Optional object if grade has been overridden by proctor or grading change\n\ \ system: (str) either GRADING or PROCTORING\n \ \ reason: (str) a comment on the grading override\n percent_graded:\ \ (float) the percentage of total points the user has received a grade for\ \ in a given\n subsection\n problem_scores:\ \ List of objects that represent individual problem scores with the following\ \ fields:\n earned: (float) number of earned points\n \ \ possible: (float) number of possible points\n show_correctness:\ \ (str) a str representing whether to show the problem/practice scores based\ \ on due date\n ('always', 'never', 'past_due',\ \ values defined in\n xmodule/modulestore/inheritance.py)\n\ \ show_grades: (bool) a bool for whether to show grades based on\ \ the access the user has\n url: (str or None) the absolute path\ \ url to the Subsection or None if the Subsection is no longer\n \ \ accessible to the learner due to a hide_after_due course team setting\n\ \ studio_url: (str) a str of the link to the grading in studio for the\ \ course\n user_has_passing_grade: (bool) boolean on if the user has a\ \ passing grade in the course\n username: (str) username of the student\ \ whose progress information is being displayed.\n verification_data: an\ \ object containing\n link: (str) the link to either start or retry\ \ ID verification\n status: (str) the status of the ID verification\n\ \ status_date: (str) the date time string of when the ID verification\ \ status was set\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated or not enrolled.\n * 403 if\ \ the user does not have access to the course.\n * 404 if the course is\ \ not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ProgressTab' /course_home/v1/progress/{course_key_string}/{student_id}: get: operationId: course_home_v1_progress_read summary: '**Use Cases**' description: "Request details for the Progress Tab\n\n**Example Requests**\n\ \n GET api/course_home/v1/progress/{course_key}\n GET api/course_home/v1/progress/{course_key}/{student_id}/\n\ \n**Response Values**\n\n Body consists of the following fields:\n\n \ \ access_expiration: An object detailing when access to this course will\ \ expire\n expiration_date: (str) When the access expires, in ISO 8601\ \ notation\n masquerading_expired_course: (bool) Whether this course\ \ is expired for the masqueraded user\n upgrade_deadline: (str) Last\ \ chance to upgrade, in ISO 8601 notation (or None if can't upgrade anymore)\n\ \ upgrade_url: (str) Upgrade link (or None if can't upgrade anymore)\n\ \ certificate_data: Object containing information about the user's certificate\ \ status\n cert_status: (str) the status of a user's certificate (full\ \ list of statuses are defined in\n lms/djangoapps/certificates/models.py)\n\ \ cert_web_view_url: (str) the url to view the certificate\n \ \ download_url: (str) the url to download the certificate\n completion_summary:\ \ Object containing unit completion counts with the following fields:\n \ \ complete_count: (float) number of complete units\n incomplete_count:\ \ (float) number of incomplete units\n locked_count: (float) number\ \ of units where contains_gated_content is True\n course_grade: Object\ \ containing the following fields:\n is_passing: (bool) whether the\ \ user's grade is above the passing grade cutoff\n letter_grade: (str)\ \ the user's letter grade based on the set grade range.\n \ \ If user is passing, value may be 'A', 'B', 'C', 'D', 'Pass',\ \ otherwise none\n percent: (float) the user's total graded percent\ \ in the course\n credit_course_requirements: Object containing credit\ \ course requirements with the following fields:\n eligibility_status:\ \ (str) Indicates if the user is eligible to receive credit. Value may be\n\ \ \"eligible\", \"not_eligible\", or \"partial_eligible\"\n \ \ requirements: List of requirements that must be fulfilled to be eligible\ \ to receive credit. See\n `get_credit_requirement_status` for\ \ details on the fields\n end: (date) end date of the course\n enrollment_mode:\ \ (str) a str representing the enrollment the user has ('audit', 'verified',\ \ ...)\n grading_policy:\n assignment_policies: List of serialized\ \ assignment grading policy objects, each has the following fields:\n \ \ num_droppable: (int) the number of lowest scored assignments that\ \ will not be counted towards the final\n grade\n\ \ short_label: (str) the abbreviated name given to the assignment\ \ type\n type: (str) the assignment type\n weight: (float)\ \ the percent weight the given assigment type has on the overall grade\n \ \ grade_range: an object containing the grade range cutoffs. The exact\ \ keys in the object can vary, but they\n range from just\ \ 'Pass', to a combination of 'A', 'B', 'C', and 'D'. If a letter grade is\n\ \ present, 'Pass' is not included.\n has_scheduled_content:\ \ (bool) boolean on if the course has content scheduled with a release date\ \ in the future\n section_scores: List of serialized Chapters. Each Chapter\ \ has the following fields:\n display_name: (str) a str of what the\ \ name of the Chapter is for displaying on the site\n subsections:\ \ List of serialized Subsections, each has the following fields:\n \ \ assignment_type: (str) the format, if any, of the Subsection (Homework,\ \ Exam, etc)\n block_key: (str) the key of the given subsection\ \ block\n display_name: (str) a str of what the name of the Subsection\ \ is for displaying on the site\n has_graded_assignment: (bool)\ \ whether or not the Subsection is a graded assignment\n learner_has_access:\ \ (bool) whether the learner has access to the subsection (could be FBE gated)\n\ \ num_points_earned: (int) the amount of points the user has earned\ \ for the given subsection\n num_points_possible: (int) the total\ \ amount of points possible for the given subsection\n override:\ \ Optional object if grade has been overridden by proctor or grading change\n\ \ system: (str) either GRADING or PROCTORING\n \ \ reason: (str) a comment on the grading override\n percent_graded:\ \ (float) the percentage of total points the user has received a grade for\ \ in a given\n subsection\n problem_scores:\ \ List of objects that represent individual problem scores with the following\ \ fields:\n earned: (float) number of earned points\n \ \ possible: (float) number of possible points\n show_correctness:\ \ (str) a str representing whether to show the problem/practice scores based\ \ on due date\n ('always', 'never', 'past_due',\ \ values defined in\n xmodule/modulestore/inheritance.py)\n\ \ show_grades: (bool) a bool for whether to show grades based on\ \ the access the user has\n url: (str or None) the absolute path\ \ url to the Subsection or None if the Subsection is no longer\n \ \ accessible to the learner due to a hide_after_due course team setting\n\ \ studio_url: (str) a str of the link to the grading in studio for the\ \ course\n user_has_passing_grade: (bool) boolean on if the user has a\ \ passing grade in the course\n username: (str) username of the student\ \ whose progress information is being displayed.\n verification_data: an\ \ object containing\n link: (str) the link to either start or retry\ \ ID verification\n status: (str) the status of the ID verification\n\ \ status_date: (str) the date time string of when the ID verification\ \ status was set\n\n**Returns**\n\n * 200 on success with above fields.\n\ \ * 401 if the user is not authenticated or not enrolled.\n * 403 if\ \ the user does not have access to the course.\n * 404 if the course is\ \ not available or cannot be seen." tags: - course_home parameters: - name: course_key_string in: path required: true schema: type: string - name: student_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ProgressTab' /course_home/v1/save_course_goal: post: operationId: course_home_v1_save_course_goal_create description: '' tags: - course_home responses: '201': description: '' /course_home/v1/unsubscribe_from_course_goal/{token}: post: operationId: course_home_v1_unsubscribe_from_course_goal_create summary: API calls to unsubscribe from course goal reminders. description: "Note that this does not require authentication - this view may\ \ be hit from an email on a different device than\nnormal or whatever. We\ \ should still be able to unsubscribe the user. Instead, we use a token in\ \ the email to\nvalidate that they have permission to unsubscribe.\n\nThis\ \ endpoint is very tightly scoped (only unsubscribe: no subscribing, no PII)\ \ because it is unauthenticated.\n\n**Example Requests**\n POST api/course_home/v1/unsubscribe_from_course_goal/{token}\n\ \n**Example Response Data**\n {'course_title': 'Cats & Dogs In Canadian\ \ Media'}\n\nReturns a 404 response if the token was not found. Otherwise,\ \ returns some basic course info. But no PII." tags: - course_home parameters: - name: token in: path required: true schema: type: string responses: '201': description: '' /course_live/course/{course_id}/: get: operationId: course_live_course_read summary: Handle HTTP/GET requests description: Handle HTTP/GET requests tags: - course_live parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: The course for which to get provider list schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseLiveConfiguration' '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified course. '404': description: The requested course does not exist. post: operationId: course_live_course_create summary: Handle HTTP/POST requests description: Handle HTTP/POST requests tags: - course_live parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: The course for which to get provider list schema: type: string - name: lti_1p1_client_key in: path required: true description: The LTI provider's client key schema: type: string - name: lti_1p1_client_secret in: path required: true description: The LTI provider's client secretL schema: type: string - name: lti_1p1_launch_url in: path required: true description: The LTI provider's launch URL schema: type: string - name: provider_type in: path required: true description: The LTI provider's launch URL schema: type: string - name: lti_config in: query required: false description: 'The lti_config object with required additional parameters ' schema: type: object responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseLiveConfiguration' '400': description: Required parameters are missing. '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified course. '404': description: The requested course does not exist. /course_live/iframe/{course_id}/: get: operationId: course_live_iframe_read description: Handle HTTP/GET requests tags: - course_live parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /course_live/providers/{course_id}/: get: operationId: course_live_providers_read description: A view for retrieving Program live IFrame . tags: - course_live parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /course_modes/v1/courses/{course_id}/: get: operationId: course_modes_v1_courses_read summary: View to list or create course modes for a course. description: "**Use Case**\n\n List all course modes for a course, or create\ \ a new\n course mode.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/\n\ \n Returns a list of all existing course modes for a course.\n\n \ \ POST /api/course_modes/v1/courses/{course_id}/\n\n Creates a new\ \ course mode in a course.\n\n**Response Values**\n\n For each HTTP verb\ \ below, an HTTP 404 \"Not Found\" response is returned if the\n requested\ \ course id does not exist.\n\n GET: If the request is successful, an HTTP\ \ 200 \"OK\" response is returned\n along with a list of course mode dictionaries\ \ within a course.\n The details are contained in a JSON dictionary as\ \ follows:\n\n * course_id: The course identifier.\n * mode_slug:\ \ The short name for the course mode.\n * mode_display_name: The verbose\ \ name for the course mode.\n * min_price: The minimum price for which\ \ a user can\n enroll in this mode.\n * currency: The currency\ \ of the listed prices.\n * expiration_datetime: The date and time after\ \ which\n users cannot enroll in the course in this mode (not required\ \ for POST).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\ \ field was\n explicitly set (not required for POST).\n * description:\ \ A description of this mode (not required for POST).\n * sku: The SKU\ \ for this mode (for ecommerce purposes, not required for POST).\n *\ \ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\ \ for POST).\n\n POST: If the request is successful, an HTTP 201 \"Created\"\ \ response is returned." tags: - course_modes parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/course_modes.CourseMode' post: operationId: course_modes_v1_courses_create summary: View to list or create course modes for a course. description: "**Use Case**\n\n List all course modes for a course, or create\ \ a new\n course mode.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/\n\ \n Returns a list of all existing course modes for a course.\n\n \ \ POST /api/course_modes/v1/courses/{course_id}/\n\n Creates a new\ \ course mode in a course.\n\n**Response Values**\n\n For each HTTP verb\ \ below, an HTTP 404 \"Not Found\" response is returned if the\n requested\ \ course id does not exist.\n\n GET: If the request is successful, an HTTP\ \ 200 \"OK\" response is returned\n along with a list of course mode dictionaries\ \ within a course.\n The details are contained in a JSON dictionary as\ \ follows:\n\n * course_id: The course identifier.\n * mode_slug:\ \ The short name for the course mode.\n * mode_display_name: The verbose\ \ name for the course mode.\n * min_price: The minimum price for which\ \ a user can\n enroll in this mode.\n * currency: The currency\ \ of the listed prices.\n * expiration_datetime: The date and time after\ \ which\n users cannot enroll in the course in this mode (not required\ \ for POST).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\ \ field was\n explicitly set (not required for POST).\n * description:\ \ A description of this mode (not required for POST).\n * sku: The SKU\ \ for this mode (for ecommerce purposes, not required for POST).\n *\ \ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\ \ for POST).\n\n POST: If the request is successful, an HTTP 201 \"Created\"\ \ response is returned." tags: - course_modes parameters: - name: course_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/course_modes.CourseMode' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/course_modes.CourseMode' /course_modes/v1/courses/{course_id}/{mode_slug}: get: operationId: course_modes_v1_courses_read summary: View to retrieve, update, or delete a specific course mode for a course. description: "**Use Case**\n\n Get or update course mode details for a specific\ \ course mode on a course.\n Or you may delete a specific course mode from\ \ a course.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\ \n Returns details on an existing course mode for a course.\n\n \ \ PATCH /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Updates\ \ (via merge) details of an existing course mode for a course.\n\n DELETE\ \ /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Deletes\ \ an existing course mode for a course.\n\n**Response Values**\n\n For\ \ each HTTP verb below, an HTTP 404 \"Not Found\" response is returned if\ \ the\n requested course id does not exist, or the mode slug does not exist\ \ within the course.\n\n GET: If the request is successful, an HTTP 200\ \ \"OK\" response is returned\n along with a details for a single course\ \ mode within a course. The details are contained\n in a JSON dictionary\ \ as follows:\n\n * course_id: The course identifier.\n * mode_slug:\ \ The short name for the course mode.\n * mode_display_name: The verbose\ \ name for the course mode.\n * min_price: The minimum price for which\ \ a user can\n enroll in this mode.\n * currency: The currency\ \ of the listed prices.\n * expiration_datetime: The date and time after\ \ which\n users cannot enroll in the course in this mode (not required\ \ for PATCH).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\ \ field was\n explicitly set (not required for PATCH).\n * description:\ \ A description of this mode (not required for PATCH).\n * sku: The SKU\ \ for this mode (for ecommerce purposes, not required for PATCH).\n *\ \ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\ \ for PATCH).\n\n PATCH: If the request is successful, an HTTP 204 \"No\ \ Content\" response is returned.\n If \"application/merge-patch+json\"\ \ is not the specified content type,\n a 415 \"Unsupported Media Type\"\ \ response is returned.\n\n DELETE: If the request is successful, an HTTP\ \ 204 \"No Content\" response is returned." tags: - course_modes parameters: - name: course_id in: path required: true schema: type: string - name: mode_slug in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/course_modes.CourseMode' patch: operationId: course_modes_v1_courses_partial_update description: Performs a partial update of a CourseMode instance. tags: - course_modes parameters: - name: course_id in: path required: true schema: type: string - name: mode_slug in: path required: true schema: type: string requestBody: required: true content: application/merge-patch+json: schema: $ref: '#/components/schemas/course_modes.CourseMode' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/course_modes.CourseMode' delete: operationId: course_modes_v1_courses_delete summary: View to retrieve, update, or delete a specific course mode for a course. description: "**Use Case**\n\n Get or update course mode details for a specific\ \ course mode on a course.\n Or you may delete a specific course mode from\ \ a course.\n\n**Example Requests**\n\n GET /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\ \n Returns details on an existing course mode for a course.\n\n \ \ PATCH /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Updates\ \ (via merge) details of an existing course mode for a course.\n\n DELETE\ \ /api/course_modes/v1/courses/{course_id}/{mode_slug}\n\n Deletes\ \ an existing course mode for a course.\n\n**Response Values**\n\n For\ \ each HTTP verb below, an HTTP 404 \"Not Found\" response is returned if\ \ the\n requested course id does not exist, or the mode slug does not exist\ \ within the course.\n\n GET: If the request is successful, an HTTP 200\ \ \"OK\" response is returned\n along with a details for a single course\ \ mode within a course. The details are contained\n in a JSON dictionary\ \ as follows:\n\n * course_id: The course identifier.\n * mode_slug:\ \ The short name for the course mode.\n * mode_display_name: The verbose\ \ name for the course mode.\n * min_price: The minimum price for which\ \ a user can\n enroll in this mode.\n * currency: The currency\ \ of the listed prices.\n * expiration_datetime: The date and time after\ \ which\n users cannot enroll in the course in this mode (not required\ \ for PATCH).\n * expiration_datetime_is_explicit: Whether the expiration_datetime\ \ field was\n explicitly set (not required for PATCH).\n * description:\ \ A description of this mode (not required for PATCH).\n * sku: The SKU\ \ for this mode (for ecommerce purposes, not required for PATCH).\n *\ \ bulk_sku: The bulk SKU for this mode (for ecommerce purposes, not required\ \ for PATCH).\n\n PATCH: If the request is successful, an HTTP 204 \"No\ \ Content\" response is returned.\n If \"application/merge-patch+json\"\ \ is not the specified content type,\n a 415 \"Unsupported Media Type\"\ \ response is returned.\n\n DELETE: If the request is successful, an HTTP\ \ 204 \"No Content\" response is returned." tags: - course_modes parameters: - name: course_id in: path required: true schema: type: string - name: mode_slug in: path required: true schema: type: string responses: '204': description: '' /courses/v1/block_metadata/{usage_key_string}: get: operationId: courses_v1_block_metadata_read summary: '**Use Case**' description: "Returns the block metadata. Data like index_dictionary related\ \ to a\n block should be fetched using this API, because they are too large\ \ for\n the cache used by the course blocks/transformers API.\n\n**Example\ \ requests**:\n\n GET /api/courses/v1/block_metadata//?\n \ \ &include=index_dictionary\n\n**Parameters**:\n\n * \"include\": a\ \ comma-separated list of keys to include.\n Valid keys are \"index_dictionary\"\ .\n\n**Response Values**\n\n A dictionary containing:\n * id (string):\ \ Block usage_key_str.\n * type (string) Block type.\n * index_dictionary:\ \ (dict) The index_dictionary JSON data\n (usually this is the text content\ \ of the block, for search\n indexing or other purposes) for this block.\ \ Returned only if\n the \"index_dictionary\" is included in the \"include\"\ \n parameter." tags: - courses parameters: - name: usage_key_string in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courses/v1/blocks/: get: operationId: courses_v1_blocks_list summary: '**Use Case**' description: "Returns the blocks in the course according to the requesting user's\n\ \ access level.\n\n**Example requests**:\n\n GET /api/courses/v1/blocks/?course_id=\n\ \ GET /api/courses/v1/blocks/?course_id=\n &username=anjali\n\ \ &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url\n\ \ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\ \n**Parameters**:\n\n This view redirects to /api/courses/v1/blocks//\ \ for the\n root usage key of the course specified by course_id. The view\ \ accepts\n all parameters accepted by :class:`BlocksView`, plus the following\n\ \ required parameter\n\n * course_id: (string, required) The ID of the\ \ course whose block data\n we want to return\n\n**Response Values**\n\ \n Responses are identical to those returned by :class:`BlocksView` when\n\ \ passed the root_usage_key of the requested course.\n\n If the course_id\ \ is not supplied, a 400: Bad Request is returned, with\n a message indicating\ \ that course_id is required.\n\n If an invalid course_id is supplied,\ \ a 400: Bad Request is returned,\n with a message indicating that the\ \ course_id is not valid." tags: - courses parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courses/v1/blocks/{usage_key_string}: get: operationId: courses_v1_blocks_read summary: '**Use Case**' description: "Returns the blocks within the requested block tree according to\ \ the\n requesting user's access level.\n\n**Example requests**:\n\n \ \ GET /api/courses/v1/blocks//?depth=all\n GET /api/courses/v1/blocks//?\n\ \ username=anjali\n &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url,due\n\ \ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\ \n**Parameters**:\n\n * all_blocks: (boolean) Provide a value of \"true\"\ \ to return all\n blocks. Returns all blocks only if the requesting user\ \ has course\n staff permissions. Blocks that are visible only to specific\ \ learners\n (for example, based on group membership or randomized content)\ \ are\n all included. If all_blocks is not specified, you must specify\ \ the\n username for the user whose course blocks are requested.\n\n\ \ * username: (string) Required, unless ``all_blocks`` is specified.\n\ \ Specify the username for the user whose course blocks are requested.\n\ \ A blank/empty username can be used to request the blocks accessible\n\ \ to anonymous users (for public courses). Only users with course staff\n\ \ permissions can specify other users' usernames. If a username is\n\ \ specified, results include blocks that are visible to that user,\n\ \ including those based on group or cohort membership or randomized\n\ \ content assigned to that user.\n\n Example: username=anjali\n\ \ username=''\n username\n\n * student_view_data:\ \ (list) Indicates for which block types to return\n student_view_data.\n\ \n Example: student_view_data=video\n\n * block_counts: (list) Indicates\ \ for which block types to return the\n aggregate count of the blocks.\n\ \n Example: block_counts=video,problem\n\n * requested_fields: (list)\ \ Indicates which additional fields to return\n for each block. For\ \ a list of available fields see under `Response\n Values -> blocks`,\ \ below.\n\n The following fields are always returned: id, type, display_name\n\ \n Example: requested_fields=graded,format,student_view_multi_device\n\ \n * depth: (integer or all) Indicates how deep to traverse into the blocks\n\ \ hierarchy. A value of all means the entire hierarchy.\n\n Default\ \ is 0\n\n Example: depth=all\n\n * nav_depth: (integer)\n\n \ \ WARNING: nav_depth is not supported, and may be removed at any time.\n\n\ \ Indicates how far deep to traverse into the\n course hierarchy\ \ before bundling all the descendants.\n\n Default is 3 since typical\ \ navigational views of the course show a\n maximum of chapter->sequential->vertical.\n\ \n Example: nav_depth=3\n\n * return_type (string) Indicates in what\ \ data type to return the\n blocks.\n\n Default is dict. Supported\ \ values are: dict, list\n\n Example: return_type=dict\n\n * block_types_filter:\ \ (list) Requested types of blocks used to filter the final result\n \ \ of returned blocks. Possible values include sequential, vertical, html,\ \ problem,\n video, and discussion.\n\n Example: block_types_filter=vertical,html\n\ \n**Response Values**\n\n The following fields are returned with a successful\ \ response.\n\n * root: The ID of the root node of the requested course\ \ block\n structure.\n\n * blocks: A dictionary or list, based on\ \ the value of the\n \"return_type\" parameter. Maps block usage IDs\ \ to a collection of\n information about each block. Each block contains\ \ the following\n fields.\n\n * id: (string) The usage ID of the\ \ block.\n\n * type: (string) The type of block. Possible values the\ \ names of any\n XBlock type in the system, including custom blocks.\ \ Examples are\n course, chapter, sequential, vertical, html, problem,\ \ video, and\n discussion.\n\n * display_name: (string) The display\ \ name of the block.\n\n * children: (list) If the block has child blocks,\ \ a list of IDs of\n the child blocks. Returned only if \"children\"\ \ is included in the\n \"requested_fields\" parameter.\n\n * completion:\ \ (float or None) The level of completion of the block.\n Its value\ \ can vary between 0.0 and 1.0 or be equal to None\n if block is not\ \ completable. Returned only if \"completion\"\n is included in the\ \ \"requested_fields\" parameter.\n\n * block_counts: (dict) For each\ \ block type specified in the\n block_counts parameter to the endpoint,\ \ the aggregate number of\n blocks of that type for this block and\ \ all of its descendants.\n\n * graded (boolean) Whether or not the block\ \ or any of its descendants\n is graded. Returned only if \"graded\"\ \ is included in the\n \"requested_fields\" parameter.\n\n * format:\ \ (string) The assignment type of the block. Possible values\n can\ \ be \"Homework\", \"Lab\", \"Midterm Exam\", and \"Final Exam\".\n \ \ Returned only if \"format\" is included in the \"requested_fields\"\n \ \ parameter.\n\n * student_view_data: (dict) The JSON data for\ \ this block.\n Returned only if the \"student_view_data\" input parameter\ \ contains\n this block's type.\n\n * student_view_url: (string)\ \ The URL to retrieve the HTML rendering\n of this block's student\ \ view. The HTML could include CSS and\n Javascript code. This field\ \ can be used in combination with the\n student_view_multi_device field\ \ to decide whether to display this\n content to the user.\n\n \ \ This URL can be used as a fallback if the student_view_data for\n \ \ this block type is not supported by the client or the block.\n\n \ \ * student_view_multi_device: (boolean) Whether or not the HTML of\n \ \ the student view that is rendered at \"student_view_url\" supports\n\ \ responsive web layouts, touch-based inputs, and interactive state\n\ \ management for a variety of device sizes and types, including\n \ \ mobile and touch devices. Returned only if\n \"student_view_multi_device\"\ \ is included in the \"requested_fields\"\n parameter.\n\n * lms_web_url:\ \ (string) The URL to the navigational container of the\n xBlock on\ \ the web. This URL can be used as a further fallback\n if the student_view_url\ \ and the student_view_data fields are not\n supported. Will direct\ \ to either the \"New\" (micro-frontend) or\n \"Legacy\" (Django-template-rendered)\ \ frontend experience depending\n on which experience is active.\n\n\ \ * legacy_web_url: (string) Like `lms_web_url`, but always directs to\n\ \ the \"Legacy\" frontend experience. Should only be used for\n \ \ transitional purposes; will be removed as part of DEPR-109.\n\n \ \ * lti_url: The block URL for an LTI consumer. Returned only if the\n \ \ \"ENABLE_LTI_PROVIDER\" Django settign is set to \"True\".\n\n \ \ * due: The due date of the block. Returned only if \"due\" is included\n\ \ in the \"requested_fields\" parameter.\n\n * show_correctness:\ \ Whether to show scores/correctness to learners for the current sequence\ \ or problem.\n Returned only if \"show_correctness\" is included in\ \ the \"requested_fields\" parameter.\n\n * Additional XBlock fields\ \ can be included in the response if they are\n configured via the\ \ COURSE_BLOCKS_API_EXTRA_FIELDS Django setting and\n requested via\ \ the \"requested_fields\" parameter." tags: - courses parameters: - name: usage_key_string in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courses/v1/course_ids/: get: operationId: courses_v1_course_ids_list summary: '**Use Cases**' description: "Request a list of course IDs for all courses the specified user\ \ can\n access based on the provided parameters.\n\n**Example Requests**\n\ \n GET /api/courses/v1/courses_ids/\n\n**Response Values**\n\n Body\ \ comprises a list of course ids and pagination details.\n\n**Parameters**\n\ \n username (optional):\n The username of the specified user whose\ \ visible courses we\n want to see.\n\n role (required):\n \ \ Course ids are filtered such that only those for which the\n user\ \ has the specified role are returned. Role can be \"staff\"\n or \"\ instructor\".\n Case-insensitive.\n\n**Returns**\n\n * 200 on success,\ \ with a list of course ids and pagination details\n * 400 if an invalid\ \ parameter was sent or the username was not provided\n for an authenticated\ \ request.\n * 403 if a user who does not have permission to masquerade\ \ as\n another user who specifies a username other than their own.\n\ \ * 404 if the specified user does not exist, or the requesting user does\n\ \ not have permission to view their courses.\n\n Example response:\n\ \n {\n \"results\":\n [\n \ \ \"course-v1:edX+DemoX+Demo_Course\"\n ],\n \ \ \"pagination\": {\n \"previous\": null,\n \ \ \"num_pages\": 1,\n \"next\": null,\n \"\ count\": 1\n }\n }" tags: - courses parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: type: string /courses/v1/courses/: get: operationId: courses_v1_courses_list summary: '**Use Cases**' description: "Request information on all courses visible to the specified user.\n\ \n**Example Requests**\n\n GET /api/courses/v1/courses/\n\n**Response Values**\n\ \n Body comprises a list of objects as returned by `CourseDetailView`.\n\ \n**Parameters**\n\n search_term (optional):\n Search term to filter\ \ courses (used by ElasticSearch).\n\n username (optional):\n The\ \ username of the specified user whose visible courses we\n want to\ \ see. The username is not required only if the API is\n requested\ \ by an Anonymous user.\n\n org (optional):\n If specified, visible\ \ `CourseOverview` objects are filtered\n such that only those belonging\ \ to the organization with the\n provided org code (e.g., \"HarvardX\"\ ) are returned.\n Case-insensitive.\n\n permissions (optional):\n\ \ If specified, it filters visible `CourseOverview` objects by\n \ \ checking if each permission specified is granted for the username.\n\ \ Notice that Staff users are always granted permission to list any\n\ \ course.\n\n active_only (optional):\n If this boolean is\ \ specified, only the courses that have not ended or do not have any end\n\ \ date are returned. This is different from search_term because this\ \ filtering is done on\n CourseOverview and not ElasticSearch.\n\n\ \ course_keys (optional):\n If specified, it fetches the `CourseOverview`\ \ objects for the\n the specified course keys\n\n mobile_search\ \ (bool):\n Optional parameter that limits the number of returned courses\n\ \ to MOBILE_SEARCH_COURSE_LIMIT.\n\n**Returns**\n\n * 200 on success,\ \ with a list of course discovery objects as returned\n by `CourseDetailView`.\n\ \ * 400 if an invalid parameter was sent or the username was not provided\n\ \ for an authenticated request.\n * 403 if a user who does not have\ \ permission to masquerade as\n another user specifies a username other\ \ than their own.\n * 404 if the specified user does not exist, or the\ \ requesting user does\n not have permission to view their courses.\n\ \n Example response:\n\n [\n {\n \"blocks_url\"\ : \"/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall\",\n \ \ \"media\": {\n \"course_image\": {\n \"\ uri\": \"/c4x/edX/example/asset/just_a_test.jpg\",\n \"name\"\ : \"Course Image\"\n }\n },\n \"description\"\ : \"An example course.\",\n \"end\": \"2015-09-19T18:00:00Z\",\n\ \ \"enrollment_end\": \"2015-07-15T00:00:00Z\",\n \"\ enrollment_start\": \"2015-06-15T00:00:00Z\",\n \"course_id\":\ \ \"edX/example/2012_Fall\",\n \"name\": \"Example Course\",\n\ \ \"number\": \"example\",\n \"org\": \"edX\",\n \ \ \"start\": \"2015-07-17T12:00:00Z\",\n \"start_display\"\ : \"July 17, 2015\",\n \"start_type\": \"timestamp\"\n \ \ }\n ]" tags: - courses parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Course' /courses/v1/courses/{course_key_string}: get: operationId: courses_v1_courses_read summary: '**Use Cases**' description: "Request details for a course\n\n**Example Requests**\n\n GET\ \ /api/courses/v1/courses/{course_key}/\n\n**Response Values**\n\n Body\ \ consists of the following fields:\n\n * effort: A textual description\ \ of the weekly hours of effort expected\n in the course.\n * end:\ \ Date the course ends, in ISO 8601 notation\n * enrollment_end: Date enrollment\ \ ends, in ISO 8601 notation\n * enrollment_start: Date enrollment begins,\ \ in ISO 8601 notation\n * id: A unique identifier of the course; a serialized\ \ representation\n of the opaque key identifying the course.\n *\ \ media: An object that contains named media items. Included here:\n \ \ * course_image: An image to show for the course. Represented\n \ \ as an object with the following fields:\n * uri: The location\ \ of the image\n * name: Name of the course\n * number: Catalog number\ \ of the course\n * org: Name of the organization that owns the course\n\ \ * overview: A possibly verbose HTML textual description of the course.\n\ \ Note: this field is only included in the Course Detail view, not\n\ \ the Course List view.\n * short_description: A textual description\ \ of the course\n * start: Date the course begins, in ISO 8601 notation\n\ \ * start_display: Readably formatted start of the course\n * start_type:\ \ Hint describing how `start_display` is set. One of:\n * `\"string\"\ `: manually set by the course author\n * `\"timestamp\"`: generated\ \ from the `start` timestamp\n * `\"empty\"`: no start date is specified\n\ \ * pacing: Course pacing. Possible values: instructor, self\n * certificate_available_date\ \ (optional): Date the certificate will be available,\n in ISO 8601\ \ notation if the `certificates.auto_certificate_generation`\n waffle\ \ switch is enabled\n\n Deprecated fields:\n\n * blocks_url: Used to\ \ fetch the course blocks\n * course_id: Course key (use 'id' instead)\n\ \n**Parameters:**\n\n username (optional):\n The username of the\ \ specified user for whom the course data\n is being accessed. The\ \ username is not only required if the API is\n requested by an Anonymous\ \ user.\n\n**Returns**\n\n * 200 on success with above fields.\n * 400\ \ if an invalid parameter was sent or the username was not provided\n \ \ for an authenticated request.\n * 403 if a user who does not have permission\ \ to masquerade as\n another user specifies a username other than their\ \ own.\n * 404 if the course is not available or cannot be seen.\n\n \ \ Example response:\n\n {\n \"blocks_url\": \"/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall\"\ ,\n \"media\": {\n \"course_image\": {\n \ \ \"uri\": \"/c4x/edX/example/asset/just_a_test.jpg\",\n \ \ \"name\": \"Course Image\"\n }\n \ \ },\n \"description\": \"An example course.\",\n \"\ end\": \"2015-09-19T18:00:00Z\",\n \"enrollment_end\": \"2015-07-15T00:00:00Z\"\ ,\n \"enrollment_start\": \"2015-06-15T00:00:00Z\",\n \ \ \"course_id\": \"edX/example/2012_Fall\",\n \"name\": \"Example\ \ Course\",\n \"number\": \"example\",\n \"org\": \"\ edX\",\n \"overview: \"

A verbose description of the course.

\"\ \n \"start\": \"2015-07-17T12:00:00Z\",\n \"start_display\"\ : \"July 17, 2015\",\n \"start_type\": \"timestamp\",\n \ \ \"pacing\": \"instructor\",\n \"certificate_available_date\"\ : \"2015-08-14T00:00:00Z\"\n }" tags: - courses parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseDetail' /courses/v2/block_metadata/{usage_key_string}: get: operationId: courses_v2_block_metadata_read summary: '**Use Case**' description: "Returns the block metadata. Data like index_dictionary related\ \ to a\n block should be fetched using this API, because they are too large\ \ for\n the cache used by the course blocks/transformers API.\n\n**Example\ \ requests**:\n\n GET /api/courses/v1/block_metadata//?\n \ \ &include=index_dictionary\n\n**Parameters**:\n\n * \"include\": a\ \ comma-separated list of keys to include.\n Valid keys are \"index_dictionary\"\ .\n\n**Response Values**\n\n A dictionary containing:\n * id (string):\ \ Block usage_key_str.\n * type (string) Block type.\n * index_dictionary:\ \ (dict) The index_dictionary JSON data\n (usually this is the text content\ \ of the block, for search\n indexing or other purposes) for this block.\ \ Returned only if\n the \"index_dictionary\" is included in the \"include\"\ \n parameter." tags: - courses parameters: - name: usage_key_string in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courses/v2/blocks/: get: operationId: courses_v2_blocks_list summary: '**Use Case**' description: "Returns the blocks in the course according to the requesting user's\n\ \ access level.\n\n**Example requests**:\n\n GET /api/courses/v1/blocks/?course_id=\n\ \ GET /api/courses/v1/blocks/?course_id=\n &username=anjali\n\ \ &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url\n\ \ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\ \n**Parameters**:\n\n This view redirects to /api/courses/v1/blocks//\ \ for the\n root usage key of the course specified by course_id. The view\ \ accepts\n all parameters accepted by :class:`BlocksView`, plus the following\n\ \ required parameter\n\n * course_id: (string, required) The ID of the\ \ course whose block data\n we want to return\n\n**Response Values**\n\ \n Responses are identical to those returned by :class:`BlocksView` when\n\ \ passed the root_usage_key of the requested course.\n\n If the course_id\ \ is not supplied, a 400: Bad Request is returned, with\n a message indicating\ \ that course_id is required.\n\n If an invalid course_id is supplied,\ \ a 400: Bad Request is returned,\n with a message indicating that the\ \ course_id is not valid." tags: - courses parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courses/v2/blocks/{usage_key_string}: get: operationId: courses_v2_blocks_read summary: '**Use Case**' description: "Returns the blocks within the requested block tree according to\ \ the\n requesting user's access level.\n\n**Example requests**:\n\n \ \ GET /api/courses/v1/blocks//?depth=all\n GET /api/courses/v1/blocks//?\n\ \ username=anjali\n &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url,due\n\ \ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\ \n**Parameters**:\n\n * all_blocks: (boolean) Provide a value of \"true\"\ \ to return all\n blocks. Returns all blocks only if the requesting user\ \ has course\n staff permissions. Blocks that are visible only to specific\ \ learners\n (for example, based on group membership or randomized content)\ \ are\n all included. If all_blocks is not specified, you must specify\ \ the\n username for the user whose course blocks are requested.\n\n\ \ * username: (string) Required, unless ``all_blocks`` is specified.\n\ \ Specify the username for the user whose course blocks are requested.\n\ \ A blank/empty username can be used to request the blocks accessible\n\ \ to anonymous users (for public courses). Only users with course staff\n\ \ permissions can specify other users' usernames. If a username is\n\ \ specified, results include blocks that are visible to that user,\n\ \ including those based on group or cohort membership or randomized\n\ \ content assigned to that user.\n\n Example: username=anjali\n\ \ username=''\n username\n\n * student_view_data:\ \ (list) Indicates for which block types to return\n student_view_data.\n\ \n Example: student_view_data=video\n\n * block_counts: (list) Indicates\ \ for which block types to return the\n aggregate count of the blocks.\n\ \n Example: block_counts=video,problem\n\n * requested_fields: (list)\ \ Indicates which additional fields to return\n for each block. For\ \ a list of available fields see under `Response\n Values -> blocks`,\ \ below.\n\n The following fields are always returned: id, type, display_name\n\ \n Example: requested_fields=graded,format,student_view_multi_device\n\ \n * depth: (integer or all) Indicates how deep to traverse into the blocks\n\ \ hierarchy. A value of all means the entire hierarchy.\n\n Default\ \ is 0\n\n Example: depth=all\n\n * nav_depth: (integer)\n\n \ \ WARNING: nav_depth is not supported, and may be removed at any time.\n\n\ \ Indicates how far deep to traverse into the\n course hierarchy\ \ before bundling all the descendants.\n\n Default is 3 since typical\ \ navigational views of the course show a\n maximum of chapter->sequential->vertical.\n\ \n Example: nav_depth=3\n\n * return_type (string) Indicates in what\ \ data type to return the\n blocks.\n\n Default is dict. Supported\ \ values are: dict, list\n\n Example: return_type=dict\n\n * block_types_filter:\ \ (list) Requested types of blocks used to filter the final result\n \ \ of returned blocks. Possible values include sequential, vertical, html,\ \ problem,\n video, and discussion.\n\n Example: block_types_filter=vertical,html\n\ \n**Response Values**\n\n The following fields are returned with a successful\ \ response.\n\n * root: The ID of the root node of the requested course\ \ block\n structure.\n\n * blocks: A dictionary or list, based on\ \ the value of the\n \"return_type\" parameter. Maps block usage IDs\ \ to a collection of\n information about each block. Each block contains\ \ the following\n fields.\n\n * id: (string) The usage ID of the\ \ block.\n\n * type: (string) The type of block. Possible values the\ \ names of any\n XBlock type in the system, including custom blocks.\ \ Examples are\n course, chapter, sequential, vertical, html, problem,\ \ video, and\n discussion.\n\n * display_name: (string) The display\ \ name of the block.\n\n * children: (list) If the block has child blocks,\ \ a list of IDs of\n the child blocks. Returned only if \"children\"\ \ is included in the\n \"requested_fields\" parameter.\n\n * completion:\ \ (float or None) The level of completion of the block.\n Its value\ \ can vary between 0.0 and 1.0 or be equal to None\n if block is not\ \ completable. Returned only if \"completion\"\n is included in the\ \ \"requested_fields\" parameter.\n\n * block_counts: (dict) For each\ \ block type specified in the\n block_counts parameter to the endpoint,\ \ the aggregate number of\n blocks of that type for this block and\ \ all of its descendants.\n\n * graded (boolean) Whether or not the block\ \ or any of its descendants\n is graded. Returned only if \"graded\"\ \ is included in the\n \"requested_fields\" parameter.\n\n * format:\ \ (string) The assignment type of the block. Possible values\n can\ \ be \"Homework\", \"Lab\", \"Midterm Exam\", and \"Final Exam\".\n \ \ Returned only if \"format\" is included in the \"requested_fields\"\n \ \ parameter.\n\n * student_view_data: (dict) The JSON data for\ \ this block.\n Returned only if the \"student_view_data\" input parameter\ \ contains\n this block's type.\n\n * student_view_url: (string)\ \ The URL to retrieve the HTML rendering\n of this block's student\ \ view. The HTML could include CSS and\n Javascript code. This field\ \ can be used in combination with the\n student_view_multi_device field\ \ to decide whether to display this\n content to the user.\n\n \ \ This URL can be used as a fallback if the student_view_data for\n \ \ this block type is not supported by the client or the block.\n\n \ \ * student_view_multi_device: (boolean) Whether or not the HTML of\n \ \ the student view that is rendered at \"student_view_url\" supports\n\ \ responsive web layouts, touch-based inputs, and interactive state\n\ \ management for a variety of device sizes and types, including\n \ \ mobile and touch devices. Returned only if\n \"student_view_multi_device\"\ \ is included in the \"requested_fields\"\n parameter.\n\n * lms_web_url:\ \ (string) The URL to the navigational container of the\n xBlock on\ \ the web. This URL can be used as a further fallback\n if the student_view_url\ \ and the student_view_data fields are not\n supported. Will direct\ \ to either the \"New\" (micro-frontend) or\n \"Legacy\" (Django-template-rendered)\ \ frontend experience depending\n on which experience is active.\n\n\ \ * legacy_web_url: (string) Like `lms_web_url`, but always directs to\n\ \ the \"Legacy\" frontend experience. Should only be used for\n \ \ transitional purposes; will be removed as part of DEPR-109.\n\n \ \ * lti_url: The block URL for an LTI consumer. Returned only if the\n \ \ \"ENABLE_LTI_PROVIDER\" Django settign is set to \"True\".\n\n \ \ * due: The due date of the block. Returned only if \"due\" is included\n\ \ in the \"requested_fields\" parameter.\n\n * show_correctness:\ \ Whether to show scores/correctness to learners for the current sequence\ \ or problem.\n Returned only if \"show_correctness\" is included in\ \ the \"requested_fields\" parameter.\n\n * Additional XBlock fields\ \ can be included in the response if they are\n configured via the\ \ COURSE_BLOCKS_API_EXTRA_FIELDS Django setting and\n requested via\ \ the \"requested_fields\" parameter." tags: - courses parameters: - name: usage_key_string in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /courseware/celebration/{course_key_string}: post: operationId: courseware_celebration_create description: Handle a POST request. tags: - courseware parameters: - name: course_key_string in: path required: true schema: type: string responses: '201': description: '' /courseware/course/{course_key_string}: get: operationId: courseware_course_read summary: '**Use Cases**' description: "Request details for a course\n\n**Example Requests**\n\n GET\ \ /api/courseware/course/{course_key}\n\n**Response Values**\n\n Body consists\ \ of the following fields:\n\n * access_expiration: An object detailing\ \ when access to this course will expire\n * expiration_date: (str)\ \ When the access expires, in ISO 8601 notation\n * masquerading_expired_course:\ \ (bool) Whether this course is expired for the masqueraded user\n \ \ * upgrade_deadline: (str) Last chance to upgrade, in ISO 8601 notation (or\ \ None if can't upgrade anymore)\n * upgrade_url: (str) Upgrade linke\ \ (or None if can't upgrade anymore)\n * celebrations: An object detailing\ \ which celebrations to render\n * first_section: (bool) If the first\ \ section celebration should render\n Note: Also uses information\ \ from frontend so this value is not final\n * streak_length_to_celebrate:\ \ (int) The streak length to celebrate for the learner\n * streak_discount_enabled:\ \ (bool) If the frontend should render an upgrade discount for hitting the\ \ streak\n * weekly_goal: (bool) If the weekly goal celebration should\ \ render\n * course_goals:\n * selected_goal:\n * days_per_week:\ \ (int) The number of days the learner wants to learn per week\n \ \ * subscribed_to_reminders: (bool) Whether the learner wants email reminders\ \ about their goal\n * weekly_learning_goal_enabled: Flag indicating\ \ if this feature is enabled for this call\n * effort: A textual description\ \ of the weekly hours of effort expected\n in the course.\n * end:\ \ Date the course ends, in ISO 8601 notation\n * enrollment: Enrollment\ \ status of authenticated user\n * mode: `audit`, `verified`, etc\n\ \ * is_active: boolean\n * enrollment_end: Date enrollment ends,\ \ in ISO 8601 notation\n * enrollment_start: Date enrollment begins, in\ \ ISO 8601 notation\n * entrance_exam_data: An object containing information\ \ about the course's entrance exam\n * entrance_exam_current_score:\ \ (float) The users current score on the entrance exam\n * entrance_exam_enabled:\ \ (bool) If the course has an entrance exam\n * entrance_exam_id: (str)\ \ The block id for the entrance exam if enabled. Will be a section (chapter)\n\ \ * entrance_exam_minimum_score_pct: (float) The minimum score a user\ \ must receive on the entrance exam\n to unlock the remainder of\ \ the course. Returned as a float (i.e. 0.7 for 70%)\n * entrance_exam_passed:\ \ (bool) Indicates if the entrance exam has been passed\n * id: A unique\ \ identifier of the course; a serialized representation\n of the opaque\ \ key identifying the course.\n * language: The language code for the course\n\ \ * media: An object that contains named media items. Included here:\n\ \ * course_image: An image to show for the course. Represented\n \ \ as an object with the following fields:\n * uri: The\ \ location of the image\n * name: Name of the course\n * offer: An object\ \ detailing upgrade discount information\n * code: (str) Checkout code\n\ \ * expiration_date: (str) Expiration of offer, in ISO 8601 notation\n\ \ * original_price: (str) Full upgrade price without checkout code;\ \ includes currency symbol\n * discounted_price: (str) Upgrade price\ \ with checkout code; includes currency symbol\n * percentage: (int)\ \ Amount of discount\n * upgrade_url: (str) Checkout URL\n * org:\ \ Name of the organization that owns the course\n * related_programs: A\ \ list of objects that contains program data related to the given course including:\n\ \ * progress: An object containing program progress:\n *\ \ complete: (int) Number of complete courses in the program (a course is completed\ \ if the user has\n earned a certificate for any of the nested\ \ course runs)\n * in_progress: (int) Number of courses in the\ \ program that are in progress (a course is in progress if\n \ \ the user has enrolled in any of the nested course runs)\n *\ \ not_started: (int) Number of courses in the program that have not been started\n\ \ * slug: (str) The program type\n * title: (str) The title\ \ of the program\n * url: (str) The link to the program's landing page\n\ \ * uuid: (str) A unique identifier of the program\n * short_description:\ \ A textual description of the course\n * start: Date the course begins,\ \ in ISO 8601 notation\n * start_display: Readably formatted start of the\ \ course\n * start_type: Hint describing how `start_display` is set. One\ \ of:\n * `\"string\"`: manually set by the course author\n \ \ * `\"timestamp\"`: generated from the `start` timestamp\n * `\"empty\"\ `: no start date is specified\n * pacing: Course pacing. Possible values:\ \ instructor, self\n * user_timezone: User's chosen timezone setting (or\ \ null for browser default)\n * user_has_passing_grade: Whether or not\ \ the effective user's grade is equal to or above the courses minimum\n \ \ passing grade\n * course_exit_page_is_active: Flag for the learning\ \ mfe on whether or not the course exit page should display\n * certificate_data:\ \ data regarding the effective user's certificate for the given course\n \ \ * verify_identity_url: URL for a learner to verify their identity. Only\ \ returned for learners enrolled in a\n verified mode. Will update\ \ to reverify URL if necessary.\n * linkedin_add_to_profile_url: URL to\ \ add the effective user's certificate to a LinkedIn Profile.\n * user_needs_integrity_signature:\ \ Whether the user needs to sign the integrity agreement for the course\n\ \ * learning_assistant_enabled: Whether the Xpert Learning Assistant is\ \ enabled for the requesting user\n\n**Parameters:**\n\n requested_fields\ \ (optional) comma separated list:\n If set, then only those fields\ \ will be returned.\n username (optional) username to masquerade as (if\ \ requesting user is staff)\n\n**Returns**\n\n * 200 on success with above\ \ fields.\n * 400 if an invalid parameter was sent or the username was\ \ not provided\n for an authenticated request.\n * 403 if a user who\ \ does not have permission to masquerade as\n another user specifies\ \ a username other than their own.\n * 404 if the course is not available\ \ or cannot be seen." tags: - courseware parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseInfo' /courseware/resume/{course_key_string}: get: operationId: courseware_resume_read description: Return response to a GET request. tags: - courseware parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' /courseware/sequence/{usage_key_string}: get: operationId: courseware_sequence_read description: Return response to a GET request. tags: - courseware parameters: - name: usage_key_string in: path required: true schema: type: string responses: '200': description: '' /credit/v1/courses/: get: operationId: credit_v1_courses_list description: CreditCourse endpoints. tags: - credit responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CreditCourse' post: operationId: credit_v1_courses_create description: CreditCourse endpoints. tags: - credit requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditCourse' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/CreditCourse' /credit/v1/courses/{course_key}/: get: operationId: credit_v1_courses_read description: CreditCourse endpoints. tags: - credit parameters: - name: course_key in: path required: true schema: type: string pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CreditCourse' put: operationId: credit_v1_courses_update description: Create/update course modes for a course. tags: - credit parameters: - name: course_key in: path required: true schema: type: string pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditCourse' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CreditCourse' patch: operationId: credit_v1_courses_partial_update description: CreditCourse endpoints. tags: - credit parameters: - name: course_key in: path required: true schema: type: string pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditCourse' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CreditCourse' /credit/v1/eligibility/: get: operationId: credit_v1_eligibility_list description: Returns eligibility for a user-course combination. tags: - credit responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CreditEligibility' /credit/v1/providers/: get: operationId: credit_v1_providers_list description: Credit provider endpoints. tags: - credit responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CreditProvider' /credit/v1/providers/{provider_id}/: get: operationId: credit_v1_providers_read description: Credit provider endpoints. tags: - credit parameters: - name: provider_id in: path required: true description: Идентификатор кредитора. Может содержать только буквы, цифры и дефисы (-). Регистр учитывается. schema: type: string pattern: '[a-z,A-Z,0-9,\-]+' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CreditProvider' /credit/v1/providers/{provider_id}/callback/: post: operationId: credit_v1_providers_callback_create description: POST handler. tags: - credit parameters: - name: provider_id in: path required: true schema: type: string responses: '201': description: '' /credit/v1/providers/{provider_id}/request/: post: operationId: credit_v1_providers_request_create description: POST handler. tags: - credit parameters: - name: provider_id in: path required: true schema: type: string responses: '201': description: '' /dashboard/v0/programs/{enterprise_uuid}/: get: operationId: dashboard_v0_programs_read summary: For an enterprise learner, get list of enrolled programs with progress. description: "**Example Request**\n\n GET /api/dashboard/v1/programs/{enterprise_uuid}/\n\ \n**Parameters**\n\n* `enterprise_uuid`: UUID of an enterprise customer.\n\ \n**Example Response**\n\n [\n {\n \"uuid\": \"ff41a5eb-2a73-4933-8e80-a1c66068ed2c\"\ ,\n \"title\": \"Demonstration Program\",\n \"type\"\ : \"MicroMasters\",\n \"banner_image\": {\n \"large\"\ : {\n \"url\": \"http://example.com/images/foo.large.jpg\"\ ,\n \"width\": 1440,\n \"height\": 480\n\ \ },\n \"medium\": {\n \"\ url\": \"http://example.com/images/foo.medium.jpg\",\n \ \ \"width\": 726,\n \"height\": 242\n },\n\ \ \"small\": {\n \"url\": \"http://example.com/images/foo.small.jpg\"\ ,\n \"width\": 435,\n \"height\": 145\n\ \ },\n \"x-small\": {\n \"\ url\": \"http://example.com/images/foo.x-small.jpg\",\n \ \ \"width\": 348,\n \"height\": 116\n }\n\ \ },\n \"authoring_organizations\": [\n \ \ {\n \"key\": \"example\"\n }\n \ \ ],\n \"progress\": {\n \"uuid\": \"ff41a5eb-2a73-4933-8e80-a1c66068ed2c\"\ ,\n \"completed\": 0,\n \"in_progress\": 0,\n\ \ \"not_started\": 2\n }\n }\n ]" tags: - dashboard parameters: - name: enterprise_uuid in: path required: true schema: type: string responses: '200': description: '' /dashboard/v0/programs/{program_uuid}/progress_details/: get: operationId: dashboard_v0_programs_progress_details_list summary: Retrieves progress details of a learner in a specified program. description: "**Example Request**\n\n GET api/dashboard/v1/programs/{program_uuid}/progress_details/\n\ \n**Parameters**\n\n* `program_uuid`: A string representation of the uuid\ \ of the program.\n\n**Response Values**\n\nIf the request for information\ \ about the program is successful, an HTTP 200 \"OK\" response\nis returned.\n\ \nThe HTTP 200 response has the following values.\n\n* `urls`: Urls to enroll/purchase\ \ a course or view program record.\n\n* `program_data`: Holds meta information\ \ about the program.\n\n* `course_data`: Learner's progress details for all\ \ courses in the program (in-progress/remaining/completed).\n\n* `certificate_data`:\ \ Details about learner's certificates status for all courses in the program\ \ and the\n program itself.\n\n* `industry_pathways`: Industry pathways\ \ for the program, comes under additional credit opportunities.\n\n* `credit_pathways`:\ \ Credit pathways for the program, comes under additional credit opportunities.\n\ \n**Example Response**\n\n {\n \"urls\": {\n \"program_listing_url\"\ : \"/dashboard/programs/\",\n \"track_selection_url\": \"/course_modes/choose/\"\ ,\n \"commerce_api_url\": \"/api/commerce/v1/baskets/\",\n \ \ \"buy_button_url\": \"http://example.com/basket/add/?\",\n \ \ \"program_record_url\": \"https://example.com/records/programs/8675309\"\ \n },\n \"program_data\": {\n \"uuid\": \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\ ,\n \"title\": \"Demonstration Program\",\n \"subtitle\"\ : \"\",\n \"type\": \"MicroMasters\",\n \"status\":\ \ \"active\",\n \"marketing_slug\": \"demo-program\",\n \ \ \"marketing_url\": \"micromasters/demo-program\",\n \"authoring_organizations\"\ : [],\n \"card_image_url\": \"http://example.com/asset-v1:DemoX+Demo_Course.jpg\"\ ,\n \"is_program_eligible_for_one_click_purchase\": false,\n \ \ \"pathway_ids\": [\n 1,\n 2\n \ \ ],\n \"is_learner_eligible_for_one_click_purchase\":\ \ false,\n \"skus\": [\"AUD90210\"],\n },\n \"course_data\"\ : {\n \"uuid\": \"a156a6e2-de91-4ce7-947a-888943e6b12a\",\n \ \ \"completed\": [],\n \"in_progress\": [],\n \ \ \"not_started\": [\n {\n \"key\": \"\ example+DemoX\",\n \"uuid\": \"fe1a9ad4-a452-45cd-80e5-9babd3d43f96\"\ ,\n \"title\": \"Demonstration Course\",\n \ \ \"course_runs\": [],\n \"entitlements\": [],\n\ \ \"owners\": [],\n \"image\": \"\"\ ,\n \"short_description\": \"\",\n \"\ type\": \"457f07ec-a78f-45b4-ba09-5fb176520d8a\",\n }\n \ \ ],\n },\n \"certificate_data\": [{\n \"\ type\": \"course\",\n \"title\": \"Demo Course\",\n \ \ 'url': \"/certificates/8675309\",\n }],\n \"industry_pathways\"\ : [\n {\n \"id\": 2,\n \"uuid\":\ \ \"1b8fadf1-f6aa-4282-94e3-325b922a027f\",\n \"name\": \"\ Demo Industry Pathway\",\n \"org_name\": \"example\",\n \ \ \"email\": \"example@example.com\",\n \"description\"\ : \"Sample demo industry pathway\",\n \"destination_url\":\ \ \"http://example.edu/online/pathways/example-methods\",\n \ \ \"pathway_type\": \"industry\",\n \"program_uuids\": [\n\ \ \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\n \ \ ]\n }\n ],\n \"credit_pathways\": [\n \ \ {\n \"id\": 1,\n \"uuid\": \"86b9701a-61e6-48a2-92eb-70a824521c1f\"\ ,\n \"name\": \"Demo Credit Pathway\",\n \"\ org_name\": \"example\",\n \"email\": \"example@example.com\"\ ,\n \"description\": \"Sample demo credit pathway!\",\n \ \ \"destination_url\": \"http://example.edu/online/pathways/example-thinking\"\ ,\n \"pathway_type\": \"credit\",\n \"program_uuids\"\ : [\n \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\n \ \ ]\n }\n ]\n }" tags: - dashboard parameters: - name: program_uuid in: path required: true schema: type: string responses: '200': description: '' /discounts/course/{course_key_string}: get: operationId: discounts_course_read description: Return the discount percent, if the user has appropriate permissions. tags: - discounts parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' /discounts/user/{user_id}/course/{course_key_string}: get: operationId: discounts_user_course_read description: Return the discount percent, if the user has appropriate permissions. tags: - discounts parameters: - name: user_id in: path required: true schema: type: string - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' /discussion/v1/accounts/replace_username: post: operationId: discussion_v1_accounts_replace_username_create description: Implements the username replacement endpoint tags: - discussion responses: '201': description: '' /discussion/v1/accounts/retire_forum/: post: operationId: discussion_v1_accounts_retire_forum_create description: Implements the retirement endpoint. tags: - discussion responses: '201': description: '' /discussion/v1/comments/: get: operationId: discussion_v1_comments_list summary: 'Implements the GET method for the list endpoint as described in the class docstring.' description: 'This endpoint implements two distinct usage contexts. When `username` is provided, the `course_id` parameter is required, and `thread_id` is ignored. The behavior is to retrieve all of the user''s non-anonymous comments from the specified course, outside of the context of a forum thread. In this context, endorsement information is unavailable. When `username` is not provided, `thread_id` is required, and `course_id` is ignored, since the thread already belongs to a course. In this context, all information relevant to usage in the discussions forum is available.' tags: - discussion responses: '200': description: '' post: operationId: discussion_v1_comments_create description: 'Implements the POST method for the list endpoint as described in the class docstring.' tags: - discussion responses: '201': description: '' /discussion/v1/comments/{comment_id}/: get: operationId: discussion_v1_comments_read description: Implements the GET method for comments against response ID tags: - discussion parameters: - name: comment_id in: path required: true schema: type: string responses: '200': description: '' patch: operationId: discussion_v1_comments_partial_update description: 'Implements the PATCH method for the instance endpoint as described in the class docstring.' tags: - discussion parameters: - name: comment_id in: path required: true schema: type: string responses: '200': description: '' delete: operationId: discussion_v1_comments_delete description: 'Implements the DELETE method for the instance endpoint as described in the class docstring' tags: - discussion parameters: - name: comment_id in: path required: true schema: type: string responses: '204': description: '' /discussion/v1/course_topics/{course_id}: get: operationId: discussion_v1_course_topics_read description: Implements the GET method as described in the class docstring. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /discussion/v1/courses/{course_id}: get: operationId: discussion_v1_courses_read summary: Retrieve general discussion metadata for a course. description: "**Example Requests**:\n\n GET /api/discussion/v1/courses/course-v1:ExampleX+Subject101+2015" tags: - discussion parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: Course ID schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseMetadataSerailizer' '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified course. '404': description: The requested course does not exist. /discussion/v1/courses/{course_id}/learner/: get: operationId: discussion_v1_courses_learner_list description: Implements the GET method as described in the class docstring. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /discussion/v1/courses/{course_id}/roles/{rolename}/: get: operationId: discussion_v1_courses_roles_read description: Implement a handler for the GET method. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string - name: rolename in: path required: true schema: type: string responses: '200': description: '' post: operationId: discussion_v1_courses_roles_create description: Implement a handler for the POST method. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string - name: rolename in: path required: true schema: type: string responses: '201': description: '' /discussion/v1/courses/{course_id}/settings: get: operationId: discussion_v1_courses_settings_list description: Implement a handler for the GET method. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' patch: operationId: discussion_v1_courses_settings_partial_update description: Implement a handler for the PATCH method. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /discussion/v1/courses/{course_id}/upload: post: operationId: discussion_v1_courses_upload_create description: Handles a file upload. tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' /discussion/v1/courses/{course_key_string}/activity_stats: get: operationId: discussion_v1_courses_activity_stats_list description: Implements the GET method as described in the class docstring. tags: - discussion parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' /discussion/v1/threads/: get: operationId: discussion_v1_threads_list description: 'Implements the GET method for the list endpoint as described in the class docstring.' tags: - discussion responses: '200': description: '' post: operationId: discussion_v1_threads_create description: 'Implements the POST method for the list endpoint as described in the class docstring.' tags: - discussion responses: '201': description: '' /discussion/v1/threads/{thread_id}/: get: operationId: discussion_v1_threads_read description: Implements the GET method for thread ID tags: - discussion parameters: - name: thread_id in: path required: true schema: type: string responses: '200': description: '' patch: operationId: discussion_v1_threads_partial_update description: 'Implements the PATCH method for the instance endpoint as described in the class docstring.' tags: - discussion parameters: - name: thread_id in: path required: true schema: type: string responses: '200': description: '' delete: operationId: discussion_v1_threads_delete description: 'Implements the DELETE method for the instance endpoint as described in the class docstring' tags: - discussion parameters: - name: thread_id in: path required: true schema: type: string responses: '204': description: '' /discussion/v2/course_topics/{course_id}: get: operationId: discussion_v2_course_topics_read summary: '**Use Cases**' description: " Retrieve the topic listing for a course.\n\n**Example Requests**:\n\ \n GET /api/discussion/v2/course_topics/course-v1:ExampleX+Subject101+2015\n\ \ ?topic_id={topic_id_1, topid_id_2}&order_by=course_structure" tags: - discussion parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: Course ID schema: type: string - name: topic_id in: query required: false description: Comma-separated list of topic ids to filter schema: type: string - name: order_by in: query required: false description: Sort ordering for topics schema: type: string enum: - course_structure - activity - name responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DiscussionTopicSerializerV2' '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified course. '404': description: The requested course does not exist. /discussion/v2/courses/{course_id}: get: operationId: discussion_v2_courses_read summary: Retrieve general discussion metadata for a course. description: "**Example Requests**:\n GET /api/discussion/v2/courses/course-v1:ExampleX+Subject101+2015" tags: - discussion parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: Course ID schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseMetadataSerailizer' '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified course. '404': description: The requested course does not exist. /discussion/v3/course_topics/{course_id}: get: operationId: discussion_v3_course_topics_read summary: '**Use Cases**' description: "Retrieve the topic listing for a course.\n\n**Example Requests**:\n\ \n GET /api/discussion/v3/course_topics/course-v1:ExampleX+Subject101+2015" tags: - discussion parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_name_affirmation/v1/verified_name: get: operationId: edx_name_affirmation_v1_verified_name_list summary: Get most recent verified name for the request user or for the specified username description: "For example: /edx_name_affirmation/v1/verified_name?username=jdoe\n\ Example response: {\n \"username\": \"jdoe\",\n \"verified_name\": \"\ Jonathan Doe\",\n \"profile_name\": \"Jon Doe\",\n \"verification_attempt_id\"\ : 123,\n \"proctored_exam_attempt_id\": None,\n \"status\": \"approved\"\ ,\n \"use_verified_name_for_certs\": False,\n}" tags: - edx_name_affirmation parameters: - name: username in: query required: false description: The username of which verified name records might be associated schema: type: string responses: '200': description: The verified_name record associated with the username provided '403': description: User lacks required permission. Only an edX staff user can invoke this API '404': description: The verified_name record associated with the username provided does not exist. post: operationId: edx_name_affirmation_v1_verified_name_create summary: Creates a new VerifiedName. description: "Expected POST data: {\n \"username\": \"jdoe\",\n \"verified_name\"\ : \"Jonathan Doe\"\n \"profile_name\": \"Jon Doe\"\n \"verification_attempt_id\"\ : (Optional)\n \"proctored_exam_attempt_id\": (Optional)\n \"platform_verification_attempt_id\"\ : (Optional)\n \"status\": (Optional)\n}" tags: - edx_name_affirmation requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifiedName' responses: '200': description: The verified_name record associated with the username provided is successfully created '403': description: User lacks required permission. Only an edX staff user can invoke this API '400': description: The posted data have conflicts with already stored verified name patch: operationId: edx_name_affirmation_v1_verified_name_partial_update summary: Update verified name status description: "Example PATCH data: {\n \"username\": \"jdoe\",\n \ \ \"verification_attempt_id\" OR \"proctored_exam_attempt_id\": 123,\n \ \ \"status\": \"approved\",\n }" tags: - edx_name_affirmation requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateVerifiedName' responses: '200': description: The verified_name record associated with the username provided is successfully edited '403': description: User lacks required permission. Only an edX staff user can invoke this API '400': description: The edit action failed validation rules delete: operationId: edx_name_affirmation_v1_verified_name_delete summary: Delete verified name description: /edx_name_affirmation/v1/verified_name/{verified_name_id} tags: - edx_name_affirmation parameters: - name: verified_name_id in: path required: true description: The database id of the verified_name to be deleted schema: type: string responses: '204': description: The verified_name record associated with the id is successfully deleted from data store '403': description: User lacks required permission. Only an edX staff user can invoke this API '404': description: The verified_name record associated with the id provided does not exist. /edx_name_affirmation/v1/verified_name/config: post: operationId: edx_name_affirmation_v1_verified_name_config_create summary: Create VerifiedNameConfig description: Create VerifiedNameConfig tags: - edx_name_affirmation requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifiedNameConfig' responses: '201': description: The verified_name configuration record is successfully created '403': description: User lacks required permission. Only an edX staff user can invoke this API '400': description: The POSTed data failed validation rules /edx_name_affirmation/v1/verified_name/history: get: operationId: edx_name_affirmation_v1_verified_name_history_list summary: Get a list of verified name objects for the given user, ordered by most recently created. description: Get a list of verified name objects for the given user, ordered by most recently created. tags: - edx_name_affirmation parameters: - name: username in: query required: false description: The username of which verified name records might be associated schema: type: string responses: '200': description: The verified_name record associated with the username provided is successfully edited '403': description: User lacks required permission. Only an edX staff user can invoke this API /edx_name_affirmation/v1/verified_name/{verified_name_id}: get: operationId: edx_name_affirmation_v1_verified_name_read summary: Get most recent verified name for the request user or for the specified username description: "For example: /edx_name_affirmation/v1/verified_name?username=jdoe\n\ Example response: {\n \"username\": \"jdoe\",\n \"verified_name\": \"\ Jonathan Doe\",\n \"profile_name\": \"Jon Doe\",\n \"verification_attempt_id\"\ : 123,\n \"proctored_exam_attempt_id\": None,\n \"status\": \"approved\"\ ,\n \"use_verified_name_for_certs\": False,\n}" tags: - edx_name_affirmation parameters: - name: verified_name_id in: path required: true schema: type: string - name: username in: query required: false description: The username of which verified name records might be associated schema: type: string responses: '200': description: The verified_name record associated with the username provided '403': description: User lacks required permission. Only an edX staff user can invoke this API '404': description: The verified_name record associated with the username provided does not exist. post: operationId: edx_name_affirmation_v1_verified_name_create summary: Creates a new VerifiedName. description: "Expected POST data: {\n \"username\": \"jdoe\",\n \"verified_name\"\ : \"Jonathan Doe\"\n \"profile_name\": \"Jon Doe\"\n \"verification_attempt_id\"\ : (Optional)\n \"proctored_exam_attempt_id\": (Optional)\n \"platform_verification_attempt_id\"\ : (Optional)\n \"status\": (Optional)\n}" tags: - edx_name_affirmation parameters: - name: verified_name_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifiedName' responses: '200': description: The verified_name record associated with the username provided is successfully created '403': description: User lacks required permission. Only an edX staff user can invoke this API '400': description: The posted data have conflicts with already stored verified name patch: operationId: edx_name_affirmation_v1_verified_name_partial_update summary: Update verified name status description: "Example PATCH data: {\n \"username\": \"jdoe\",\n \ \ \"verification_attempt_id\" OR \"proctored_exam_attempt_id\": 123,\n \ \ \"status\": \"approved\",\n }" tags: - edx_name_affirmation parameters: - name: verified_name_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateVerifiedName' responses: '200': description: The verified_name record associated with the username provided is successfully edited '403': description: User lacks required permission. Only an edX staff user can invoke this API '400': description: The edit action failed validation rules delete: operationId: edx_name_affirmation_v1_verified_name_delete summary: Delete verified name description: /edx_name_affirmation/v1/verified_name/{verified_name_id} tags: - edx_name_affirmation parameters: - name: verified_name_id in: path required: true schema: type: string - name: verified_name_id in: path required: true description: The database id of the verified_name to be deleted schema: type: string responses: '204': description: The verified_name record associated with the id is successfully deleted from data store '403': description: User lacks required permission. Only an edX staff user can invoke this API '404': description: The verified_name record associated with the id provided does not exist. /edx_proctoring/proctoring_review_callback/: post: operationId: edx_proctoring_proctoring_review_callback_create description: Post callback handler tags: - edx_proctoring responses: '201': description: '' /edx_proctoring/v1/instructor/{course_id}: get: operationId: edx_proctoring_v1_instructor_read description: Redirect to dashboard for a given course and optional exam_id tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/instructor/{course_id}/{exam_id}: get: operationId: edx_proctoring_v1_instructor_read description: Redirect to dashboard for a given course and optional exam_id tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string - name: exam_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/active_attempt: get: operationId: edx_proctoring_v1_proctored_exam_active_attempt_list description: HTTP GET handler. Returns active attempt tags: - edx_proctoring responses: '200': description: '' /edx_proctoring/v1/proctored_exam/active_exams_for_user: get: operationId: edx_proctoring_v1_proctored_exam_active_exams_for_user_list description: Returns the get_active_exams_for_user tags: - edx_proctoring responses: '200': description: '' /edx_proctoring/v1/proctored_exam/allowance: get: operationId: edx_proctoring_v1_proctored_exam_allowance_list description: 'HTTP GET handler. Get all allowances for a course. Course and Global staff can view both timed and proctored exam allowances.' tags: - edx_proctoring responses: '200': description: '' put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance tags: - edx_proctoring responses: '200': description: '' delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. tags: - edx_proctoring responses: '204': description: '' /edx_proctoring/v1/proctored_exam/attempt: get: operationId: edx_proctoring_v1_proctored_exam_attempt_list description: HTTP GET Handler. Returns the status of the exam attempt. tags: - edx_proctoring responses: '200': description: '' post: operationId: edx_proctoring_v1_proctored_exam_attempt_create description: HTTP POST handler. To create an exam attempt. tags: - edx_proctoring responses: '201': description: '' /edx_proctoring/v1/proctored_exam/attempt/course_id/{course_id}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_course_id_read description: HTTP GET handler. Returns exam with attempt and active attempt tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/attempt/grouped/course_id/{course_id}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_grouped_course_id_read description: HTTP GET Handler. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/attempt/grouped/course_id/{course_id}/search/{search_by}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_grouped_course_id_search_read description: HTTP GET Handler. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string - name: search_by in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/attempt/{attempt_id}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_read description: HTTP GET Handler. Returns the status of the exam attempt. tags: - edx_proctoring parameters: - name: attempt_id in: path required: true schema: type: string responses: '200': description: '' put: operationId: edx_proctoring_v1_proctored_exam_attempt_update description: HTTP PUT handler to update exam attempt status based on an action. tags: - edx_proctoring parameters: - name: attempt_id in: path required: true schema: type: string responses: '200': description: '' delete: operationId: edx_proctoring_v1_proctored_exam_attempt_delete description: HTTP DELETE handler. Removes an exam attempt. tags: - edx_proctoring parameters: - name: attempt_id in: path required: true schema: type: string responses: '204': description: '' /edx_proctoring/v1/proctored_exam/attempt/{attempt_id}/review_status: put: operationId: edx_proctoring_v1_proctored_exam_attempt_review_status_update description: Update the is_status_acknowledged flag for the specific attempt tags: - edx_proctoring parameters: - name: attempt_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/attempt/{external_id}/ready: post: operationId: edx_proctoring_v1_proctored_exam_attempt_ready_create description: Post callback handler tags: - edx_proctoring parameters: - name: external_id in: path required: true schema: type: string responses: '201': description: '' /edx_proctoring/v1/proctored_exam/attempt/{external_id}/reviewed: post: operationId: edx_proctoring_v1_proctored_exam_attempt_reviewed_create description: 'Called when 3rd party proctoring service has finished its review of an attempt.' tags: - edx_proctoring parameters: - name: external_id in: path required: true schema: type: string responses: '201': description: '' /edx_proctoring/v1/proctored_exam/bulk_allowance: put: operationId: edx_proctoring_v1_proctored_exam_bulk_allowance_update description: HTTP PUT handler. Adds or updates Allowances for many exams and students tags: - edx_proctoring responses: '200': description: '' /edx_proctoring/v1/proctored_exam/exam: get: operationId: edx_proctoring_v1_proctored_exam_exam_list description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\ \ by course_id, content_id: get_exam_by_content_id()" tags: - edx_proctoring responses: '200': description: '' post: operationId: edx_proctoring_v1_proctored_exam_exam_create description: Http POST handler. Creates an exam. tags: - edx_proctoring responses: '201': description: '' put: operationId: edx_proctoring_v1_proctored_exam_exam_update description: 'HTTP PUT handler. To update an exam. calls the update_exam' tags: - edx_proctoring responses: '200': description: '' /edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}: get: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_read description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\ \ by course_id, content_id: get_exam_by_content_id()" tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_create description: Http POST handler. Creates an exam. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_update description: 'HTTP PUT handler. To update an exam. calls the update_exam' tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/exam/course_id/{course_id}/content_id/{content_id}: get: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_read description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\ \ by course_id, content_id: get_exam_by_content_id()" tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string - name: content_id in: path required: true schema: type: string responses: '200': description: '' post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_create description: Http POST handler. Creates an exam. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string - name: content_id in: path required: true schema: type: string responses: '201': description: '' put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_update description: 'HTTP PUT handler. To update an exam. calls the update_exam' tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string - name: content_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/exam/exam_id/{exam_id}: get: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_read description: "HTTP GET handler.\n Scenarios:\n by exam_id: calls get_exam_by_id()\n\ \ by course_id, content_id: get_exam_by_content_id()" tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string responses: '200': description: '' post: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_create description: Http POST handler. Creates an exam. tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string responses: '201': description: '' put: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_update description: 'HTTP PUT handler. To update an exam. calls the update_exam' tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/exam_id/{exam_id}/user_id/{user_id}/reset_attempts: delete: operationId: edx_proctoring_v1_proctored_exam_exam_id_user_id_reset_attempts_delete description: HTTP DELETE handler, deletes all attempts for a given exam and username tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string - name: user_id in: path required: true schema: type: string responses: '204': description: '' /edx_proctoring/v1/proctored_exam/exam_registration/course_id/{course_id}: patch: operationId: edx_proctoring_v1_proctored_exam_exam_registration_course_id_partial_update description: 'Create or update a list of all active exams. Exams not included in the registration payload will be deactivated' tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/review_policy/exam_id/{exam_id}/: get: operationId: edx_proctoring_v1_proctored_exam_review_policy_exam_id_read description: HTTP GET handler. Returns review policy for proctored exam. tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/settings/exam_id/{exam_id}/: get: operationId: edx_proctoring_v1_proctored_exam_settings_exam_id_read description: HTTP GET handler. Returns proctoring_settings and exam_proctoring_backend config for proctored exam. tags: - edx_proctoring parameters: - name: exam_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/{course_id}/allowance: get: operationId: edx_proctoring_v1_proctored_exam_allowance_list description: 'HTTP GET handler. Get all allowances for a course. Course and Global staff can view both timed and proctored exam allowances.' tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '204': description: '' /edx_proctoring/v1/proctored_exam/{course_id}/bulk_allowance: put: operationId: edx_proctoring_v1_proctored_exam_bulk_allowance_update description: HTTP PUT handler. Adds or updates Allowances for many exams and students tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/proctored_exam/{course_id}/grouped/allowance: get: operationId: edx_proctoring_v1_proctored_exam_grouped_allowance_list description: HTTP GET Handler. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edx_proctoring/v1/retire_backend_user/{user_id}/: post: operationId: edx_proctoring_v1_retire_backend_user_create description: 'Deletes all user data for the particular user_id from all configured backends' tags: - edx_proctoring parameters: - name: user_id in: path required: true schema: type: string responses: '201': description: '' /edx_proctoring/v1/retire_user/{user_id}/: post: operationId: edx_proctoring_v1_retire_user_create description: Obfuscates all PII for a given user_id tags: - edx_proctoring parameters: - name: user_id in: path required: true schema: type: string responses: '201': description: '' /edx_proctoring/v1/user_onboarding/status: get: operationId: edx_proctoring_v1_user_onboarding_status_list description: HTTP GET handler. Returns the learner's onboarding status. tags: - edx_proctoring responses: '200': description: '' /edx_proctoring/v1/user_onboarding/status/course_id/{course_id}: get: operationId: edx_proctoring_v1_user_onboarding_status_course_id_read description: HTTP GET handler. tags: - edx_proctoring parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /edxnotes/v1/retire_user/: post: operationId: edxnotes_v1_retire_user_create description: Implements the retirement endpoint. tags: - edxnotes responses: '201': description: '' /enrollment/v1/course/{course_id}: get: operationId: enrollment_v1_course_read summary: Read enrollment information for a particular course. description: HTTP Endpoint for retrieving course level enrollment information. tags: - enrollment parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /enrollment/v1/enrollment: get: operationId: enrollment_v1_enrollment_list summary: Gets a list of all course enrollments for a user. description: 'Returns a list for the currently logged in user, or for the user named by the ''user'' GET parameter. If the username does not match that of the currently logged in user, only courses for which the currently logged in user has the Staff or Admin role are listed. As a result, a course team member can find out which of their own courses a particular learner is enrolled in. Only the Staff or Admin role (granted on the Django administrative console as the staff or instructor permission) in individual courses gives the requesting user access to enrollment data. Permissions granted at the organizational level do not give a user access to enrollment data for all of that organization''s courses. Users who have the global staff permission can access all enrollment data for all courses.' tags: - enrollment responses: '200': description: '' post: operationId: enrollment_v1_enrollment_create summary: Enrolls the currently logged-in user in a course. description: 'Server-to-server calls may deactivate or modify the mode of existing enrollments. All other requests go through `add_enrollment()`, which allows creation of new and reactivation of old enrollments.' tags: - enrollment responses: '201': description: '' /enrollment/v1/enrollment/{course_id}: get: operationId: enrollment_v1_enrollment_read summary: Create, read, or update enrollment information for a user. description: 'HTTP Endpoint for all CRUD operations for a user course enrollment. Allows creation, reading, and updates of the current enrollment for a particular course.' tags: - enrollment parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /enrollment/v1/enrollment/{username},{course_id}: get: operationId: enrollment_v1_enrollment_read summary: Create, read, or update enrollment information for a user. description: 'HTTP Endpoint for all CRUD operations for a user course enrollment. Allows creation, reading, and updates of the current enrollment for a particular course.' tags: - enrollment parameters: - name: username in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /enrollment/v1/enrollment_allowed/: get: operationId: enrollment_v1_enrollment_allowed_list summary: Returns the enrollments allowed for a given user email. description: '**Example Requests** GET /api/enrollment/v1/enrollment_allowed?email=user@example.com **Parameters** - `email` (optional, string, _query_params_) - defaults to the calling user if not provided. **Responses** - 200: Success. - 403: Forbidden, you need to be staff.' tags: - enrollment responses: '200': description: '' post: operationId: enrollment_v1_enrollment_allowed_create summary: Creates an enrollment allowed for a given user email and course id. description: '**Example Request** POST /api/enrollment/v1/enrollment_allowed/' tags: - enrollment responses: '201': description: '' delete: operationId: enrollment_v1_enrollment_allowed_delete summary: Deletes an enrollment allowed for a given user email and course id. description: '**Example Request** DELETE /api/enrollment/v1/enrollment_allowed/' tags: - enrollment responses: '204': description: '' /enrollment/v1/enrollments/: get: operationId: enrollment_v1_enrollments_list summary: '**Use Cases**' description: "Get a list of all course enrollments, optionally filtered by a\ \ course ID or list of usernames.\n\n**Example Requests**\n\n GET /api/enrollment/v1/enrollments\n\ \n GET /api/enrollment/v1/enrollments?course_id={course_id}\n\n GET\ \ /api/enrollment/v1/enrollments?username={username},{username},{username}\n\ \n GET /api/enrollment/v1/enrollments?course_id={course_id}&username={username}\n\ \n GET /api/enrollment/v1/enrollments?email={email},{email}\n\n**Query\ \ Parameters for GET**\n\n * course_id: Filters the result to course enrollments\ \ for the course corresponding to the\n given course ID. The value must\ \ be URL encoded. Optional.\n\n * username: List of comma-separated usernames.\ \ Filters the result to the course enrollments\n of the given users.\ \ Optional.\n\n * email: List of comma-separated emails. Filters the result\ \ to the course enrollments\n of the given users. Optional.\n\n *\ \ page_size: Number of results to return per page. Optional.\n\n * page:\ \ Page number to retrieve. Optional.\n\n**Response Values**\n\n If the\ \ request for information about the course enrollments is successful, an HTTP\ \ 200 \"OK\" response\n is returned.\n\n The HTTP 200 response has the\ \ following values.\n\n * results: A list of the course enrollments matching\ \ the request.\n\n * created: Date and time when the course enrollment\ \ was created.\n\n * mode: Mode for the course enrollment.\n\n \ \ * is_active: Whether the course enrollment is active or not.\n\n \ \ * user: Username of the user in the course enrollment.\n\n * course_id:\ \ Course ID of the course in the course enrollment.\n\n * next: The URL\ \ to the next page of results, or null if this is the\n last page.\n\n\ \ * previous: The URL to the next page of results, or null if this\n \ \ is the first page.\n\n If the user is not logged in, a 401 error is\ \ returned.\n\n If the user is not global staff, a 403 error is returned.\n\ \n If the specified course_id is not valid or any of the specified usernames\n\ \ are not valid, a 400 error is returned.\n\n If the specified course_id\ \ does not correspond to a valid course or if all the specified\n usernames\ \ do not correspond to valid users, an HTTP 200 \"OK\" response is returned\ \ with an\n empty 'results' field." tags: - enrollment parameters: - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - results type: object properties: next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/CourseEnrollmentsApiList' /enrollment/v1/roles/: get: operationId: enrollment_v1_roles_list description: Gets a list of all roles for the currently logged-in user, filtered by course_id if supplied tags: - enrollment responses: '200': description: '' /enrollment/v1/unenroll/: post: operationId: enrollment_v1_unenroll_create description: Unenrolls the specified user from all courses. tags: - enrollment responses: '201': description: '' /entitlements/v1/entitlements/: get: operationId: entitlements_v1_entitlements_list description: 'Override the list method to expire records that are past the policy and requested via the API before returning those records.' tags: - entitlements parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/CourseEntitlement' post: operationId: entitlements_v1_entitlements_create description: ViewSet for the Entitlements API. tags: - entitlements requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' /entitlements/v1/entitlements/{uuid}/: get: operationId: entitlements_v1_entitlements_read description: 'Override the retrieve method to expire a record that is past the policy and is requested via the API before returning that record.' tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' put: operationId: entitlements_v1_entitlements_update description: ViewSet for the Entitlements API. tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' patch: operationId: entitlements_v1_entitlements_partial_update description: ViewSet for the Entitlements API. tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseEntitlement' delete: operationId: entitlements_v1_entitlements_delete description: ViewSet for the Entitlements API. tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}' responses: '204': description: '' /entitlements/v1/entitlements/{uuid}/enrollments: post: operationId: entitlements_v1_entitlements_enrollments_create description: 'On POST this method will be called and will handle enrolling a user in the provided course_run_id from the data. This is called on a specific entitlement UUID so the course_run_id has to correspond to the Course that is assigned to the Entitlement. When this API is called for a user who is already enrolled in a run that User will be unenrolled from their current run and enrolled in the new run if it is available.' tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string format: uuid responses: '201': description: '' delete: operationId: entitlements_v1_entitlements_enrollments_delete summary: On DELETE call to this API we will unenroll the course enrollment for the provided uuid description: 'If is_refund parameter is provided then unenroll the user, set Entitlement expiration, and issue a refund' tags: - entitlements parameters: - name: uuid in: path required: true schema: type: string format: uuid responses: '204': description: '' /experiments/v0/custom/REV-934/: get: operationId: experiments_v0_custom_REV-934_list description: Return the if the course should be upsold in the mobile app, if the user has appropriate permissions. tags: - experiments responses: '200': description: '' /experiments/v0/custom/userMetadata/{username},{course_id}: get: operationId: experiments_v0_custom_userMetadata_read description: Return user-metadata for the given course and user tags: - experiments parameters: - name: username in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /experiments/v0/data/: get: operationId: experiments_v0_data_list description: '' tags: - experiments parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/ExperimentData' post: operationId: experiments_v0_data_create description: '' tags: - experiments requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentDataCreate' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentDataCreate' put: operationId: experiments_v0_data_update description: '' tags: - experiments requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentData' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentData' /experiments/v0/data/{id}/: get: operationId: experiments_v0_data_read description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Data. schema: type: integer responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentData' put: operationId: experiments_v0_data_update description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Data. schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentData' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentData' patch: operationId: experiments_v0_data_partial_update description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Data. schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentData' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentData' delete: operationId: experiments_v0_data_delete description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Data. schema: type: integer responses: '204': description: '' /experiments/v0/key-value/: get: operationId: experiments_v0_key-value_list description: '' tags: - experiments parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/ExperimentKeyValue' post: operationId: experiments_v0_key-value_create description: '' tags: - experiments requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' /experiments/v0/key-value/{id}/: get: operationId: experiments_v0_key-value_read description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Key-Value Pair. schema: type: integer responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' put: operationId: experiments_v0_key-value_update description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Key-Value Pair. schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' patch: operationId: experiments_v0_key-value_partial_update description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Key-Value Pair. schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ExperimentKeyValue' delete: operationId: experiments_v0_key-value_delete description: '' tags: - experiments parameters: - name: id in: path required: true description: A unique integer value identifying this Experiment Key-Value Pair. schema: type: integer responses: '204': description: '' /grades/v1/courses/: get: operationId: grades_v1_courses_list description: Gets a course progress status. tags: - grades parameters: - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /grades/v1/courses/{course_id}/: get: operationId: grades_v1_courses_read description: Gets a course progress status. tags: - grades parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /grades/v1/gradebook/{course_id}/: get: operationId: grades_v1_gradebook_read description: 'Checks for course author access for the given course by the requesting user. Calls the view function if has access, otherwise raises a 403.' tags: - grades parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /grades/v1/gradebook/{course_id}/bulk-update: post: operationId: grades_v1_gradebook_bulk-update_create description: 'Checks for course author access for the given course by the requesting user. Calls the view function if has access, otherwise raises a 403.' tags: - grades parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' /grades/v1/gradebook/{course_id}/grading-info: get: operationId: grades_v1_gradebook_grading-info_list description: 'Checks for course author access for the given course by the requesting user. Calls the view function if has access, otherwise raises a 403.' tags: - grades parameters: - name: course_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /grades/v1/policy/courses/{course_id}/: get: operationId: grades_v1_policy_courses_read summary: '**Use Case**' description: "Get the course grading policy.\n\n**Example requests**:\n\n \ \ GET /api/grades/v1/policy/courses/{course_id}/\n\n**Response Values**\n\ \n * assignment_type: The type of the assignment, as configured by course\n\ \ staff. For example, course staff might make the assignment types Homework,\n\ \ Quiz, and Exam.\n\n * count: The number of assignments of the type.\n\ \n * dropped: Number of assignments of the type that are dropped.\n\n \ \ * weight: The weight, or effect, of the assignment type on the learner's\n\ \ final grade." tags: - grades parameters: - name: course_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /grades/v1/section_grades_breakdown/: get: operationId: grades_v1_section_grades_breakdown_list summary: '**Use Cases**' description: "Get a list of all grades for all sections, optionally filtered\ \ by a course ID or list of usernames.\n\n**Example Requests**\n\n GET\ \ /api/grades/v1/section_grades_breakdown\n\n GET /api/grades/v1/section_grades_breakdown?course_id={course_id}\n\ \n GET /api/grades/v1/section_grades_breakdown?username={username},{username},{username}\n\ \n GET /api/grades/v1/section_grades_breakdown?course_id={course_id}&username={username}\n\ \n**Query Parameters for GET**\n\n * course_id: Filters the result to course\ \ grade status for the course corresponding to the\n given course ID.\ \ The value must be URL encoded. Optional.\n\n * username: List of comma-separated\ \ usernames. Filters the result to the course grade status\n of the\ \ given users. Optional.\n\n * page_size: Number of results to return per\ \ page. Optional.\n\n**Response Values**\n\n If the request for information\ \ about the course grade status is successful, an HTTP 200 \"OK\" response\n\ \ is returned.\n\n The HTTP 200 response has the following values.\n\ \n * results: A list of the course grading status matching the request.\n\ \n * course_id: Course ID of the course in the course grading status.\n\ \n * user: Username of the user in the course enrollment.\n\n \ \ * passed: Boolean flag for user passing the course.\n\n * current_grade:\ \ An integer representing the current grade of the course.\n\n * section_breakdown:\ \ A summary of each course section's grade.\n\n A dictionary in the\ \ section_breakdown list has the following keys:\n * percent: A\ \ float percentage for the section.\n * label: A short string identifying\ \ the section. Preferably fixed-length. E.g. \"HW 3\".\n * detail:\ \ A string explanation of the score. E.g. \"Homework 1 - Ohms Law - 83% (5/6)\"\ \n * category: A string identifying the category.\n \ \ * prominent: A boolean value indicating that this section should be displayed\ \ as more prominent\n than other items.\n\n * next: The\ \ URL to the next page of results, or null if this is the\n last page.\n\ \n * previous: The URL to the next page of results, or null if this\n \ \ is the first page.\n\n If the user is not logged in, a 401 error\ \ is returned.\n\n If the user is not global staff, a 403 error is returned.\n\ \n If the specified course_id is not valid or any of the specified usernames\n\ \ are not valid, a 400 error is returned.\n\n If the specified course_id\ \ does not correspond to a valid course or if all the specified\n usernames\ \ do not correspond to valid users, an HTTP 200 \"OK\" response is returned\ \ with an\n empty 'results' field." tags: - grades parameters: - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /grades/v1/submission_history/{course_id}/: get: operationId: grades_v1_submission_history_read description: "Get submission history details. This submission history is related\ \ to only\nProblemBlock and it doesn't support LegacyLibraryContentBlock or\ \ ContentLibraries\nas of now.\n\n**Usecases**:\n\n Users with GlobalStaff\ \ status can retrieve everyone's submission history.\n\n**Example Requests**:\n\ \n GET /api/grades/v1/submission_history/{course_id}\n GET /api/grades/v1/submission_history/{course_id}/?username={username}\n\ \n**Query Parameters for GET**\n\n * course_id: Course id to retrieve submission\ \ history.\n * username: Single username for which this view will retrieve\ \ the submission history details.\n\n**Response Values**:\n\n If there's\ \ an error while getting the submission history an empty response will\n \ \ be returned.\n The submission history response has the following attributes:\n\ \n * Results: A list of submission history:\n * course_id:\ \ Course id\n * course_name: Course name\n * user: Username\n\ \ * problems: List of problems\n * location: problem\ \ location\n * name: problem's display name\n \ \ * submission_history: List of submission history\n \ \ * state: State of submission.\n * grade: Grade.\n \ \ * max_grade: Maximum possible grade.\n *\ \ data: problem's data." tags: - grades parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /grades/v1/subsection/{subsection_id}/: get: operationId: grades_v1_subsection_read description: 'Returns subection grade data, override grade data and a history of changes made to a specific users specific subsection grade.' tags: - grades parameters: - name: subsection_id in: path required: true schema: type: string responses: '200': description: '' /instructor/v1/reports/{course_id}: get: operationId: instructor_v1_reports_read summary: List report CSV files that are available for download for this course. description: "**Use Cases**\n\nLists reports available for download\n\n**Example\ \ Requests**:\n\n GET /api/instructor/v1/reports/{course_id}\n\n**Response\ \ Values**\n```json\n{\n \"downloads\": [\n {\n \"url\"\ : \"https://1.mock.url\",\n \"link\": \"mock_file_name_1\",\n \"name\": \"mock_file_name_1\"\n \ \ }\n ]\n}\n```\n\nThe report name will depend on the type of report\ \ generated. For example a\nproblem responses report for an entire course\ \ might be called:\n\n edX_DemoX_Demo_Course_student_state_from_block-v1_edX+DemoX+Demo_Course+type@course+block@course_2021-04-30-0918.csv" tags: - instructor parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: ID for the course whose reports need to be listed. schema: type: string - name: report_name in: query required: false description: Filter results to only return details of for the report with the specified name. schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ReportDownloadsList' '401': description: The requesting user is not authenticated. '403': description: The requesting user lacks access to the course. '404': description: The requested course does not exist. /instructor/v1/reports/{course_id}/generate/problem_responses: post: operationId: instructor_v1_reports_generate_problem_responses_create summary: Initiate generation of a CSV file containing all student answers description: "to a given problem.\n\n**Example requests**\n\n POST /api/instructor/v1/reports/{course_id}/generate/problem_responses\ \ {\n \"problem_locations\": [\n \"{usage_key1}\",\n \ \ \"{usage_key2}\",\n \"{usage_key3}\"\n ]\n \ \ }\n POST /api/instructor/v1/reports/{course_id}/generate/problem_responses\ \ {\n \"problem_locations\": [\"{usage_key}\"],\n \"problem_types_filter\"\ : [\"problem\"]\n }\n\n**POST Parameters**\n\nA POST request can include\ \ the following parameters:\n\n* problem_location: A list of usage keys for\ \ the blocks to include in\n the report. If the location is a block that\ \ contains other blocks,\n (such as the course, section, subsection, or unit\ \ blocks) then all\n blocks under that block will be included in the report.\n\ * problem_types_filter: Optional. A comma-separated list of block types\n\ \ to include in the report. If set, only blocks of the specified types\n\ \ will be included in the report.\n\nTo get data on all the poll and survey\ \ blocks in a course, you could\nPOST the usage key of the course for `problem_location`,\ \ and\n\"poll, survey\" as the value for `problem_types_filter`.\n\n\n**Example\ \ Response:**\nIf initiation is successful (or generation task is already\ \ running):\n```json\n{\n \"status\": \"The problem responses report is\ \ being created. ...\",\n \"task_id\": \"4e49522f-31d9-431a-9cff-dd2a2bf4c85a\"\ \n}\n```\n\nResponds with BadRequest if any of the provided problem locations\ \ are faulty." tags: - instructor parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: ID of the course for which report is to be generate. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProblemResponseReportPostParams' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ProblemResponsesReportStatus' '400': description: The provided parameters were invalid. Make sure you've provided at least one valid usage key for `problem_locations`. '401': description: The requesting user is not authenticated. '403': description: The requesting user lacks access to the course. /instructor/v1/tasks/{course_id}: get: operationId: instructor_v1_tasks_read summary: List instructor tasks filtered by `course_id`. description: "**Use Cases**\n\nLists currently running instructor tasks\n\n\ **Parameters**\n - With no arguments, lists running tasks.\n - `problem_location_str`\ \ lists task history for problem\n - `problem_location_str` and `unique_student_identifier`\ \ lists task\n history for problem AND student (intersection)\n\n**Example\ \ Requests**:\n\n GET /courses/{course_id}/instructor/api/v0/tasks\n\n\ **Response Values**\n```json\n {\n \"tasks\": [\n {\n \ \ \"status\": \"Incomplete\",\n \"task_type\": \"grade_problems\"\ ,\n \"task_id\": \"2519ff31-22d9-4a62-91e2-55495895b355\",\n \ \ \"created\": \"2019-01-15T18:00:15.902470+00:00\",\n \"task_input\"\ : \"{}\",\n \"duration_sec\": \"unknown\",\n \"task_message\"\ : \"No status information available\",\n \"requester\": \"staff\"\ ,\n \"task_state\": \"PROGRESS\"\n }\n ]\n }\n```" tags: - instructor parameters: - name: course_id in: path required: true schema: type: string - name: course_id in: path required: true description: ID for the course whose tasks need to be listed. schema: type: string - name: problem_location_str in: query required: false description: Filter instructor tasks to this problem location. schema: type: string - name: unique_student_identifier in: query required: false description: Filter tasks to a singe problem and a single student. Must be used in combination with `problem_location_str`. schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/InstructorTasksList' '401': description: The requesting user is not authenticated. '403': description: The requesting user lacks access to the course. '404': description: The requested course does not exist. /instructor_task/v1/schedules/{course_id}/bulk_email/: get: operationId: instructor_task_v1_schedules_bulk_email_list description: Read only view to list all scheduled bulk email messages for a course-run. tags: - instructor_task parameters: - name: course_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/ScheduledBulkEmail' /instructor_task/v1/schedules/{course_id}/bulk_email/{schedule_id}: put: operationId: instructor_task_v1_schedules_bulk_email_update description: "A view that supports the modification of instructor task schedules.\ \ It provides the ability to:\n * Delete an instructor task schedule\n\ \ * Update an instructor task schedule and/or update the course email associated\ \ with the scheduled task." tags: - instructor_task parameters: - name: course_id in: path required: true schema: type: string - name: schedule_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScheduledBulkEmail' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ScheduledBulkEmail' patch: operationId: instructor_task_v1_schedules_bulk_email_partial_update description: "A view that supports the modification of instructor task schedules.\ \ It provides the ability to:\n * Delete an instructor task schedule\n\ \ * Update an instructor task schedule and/or update the course email associated\ \ with the scheduled task." tags: - instructor_task parameters: - name: course_id in: path required: true schema: type: string - name: schedule_id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ScheduledBulkEmail' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ScheduledBulkEmail' delete: operationId: instructor_task_v1_schedules_bulk_email_delete description: "A view that supports the modification of instructor task schedules.\ \ It provides the ability to:\n * Delete an instructor task schedule\n\ \ * Update an instructor task schedule and/or update the course email associated\ \ with the scheduled task." tags: - instructor_task parameters: - name: course_id in: path required: true schema: type: string - name: schedule_id in: path required: true schema: type: string responses: '204': description: '' /learner_home/init/: get: operationId: learner_home_init_list description: Get masquerade user and proxy to init request tags: - learner_home responses: '200': description: '' /learner_home/mock/init/: get: operationId: learner_home_mock_init_read description: Returns static JSON authored in MOCK_DATA_FILE tags: - learner_home responses: '200': description: '' /learner_home/v1/programs/{enterprise_uuid}/: get: operationId: learner_home_v1_programs_read summary: For an enterprise learner, get list of enrolled programs with progress. description: "**Example Request**\n\n GET /api/dashboard/v1/programs/{enterprise_uuid}/\n\ \n**Parameters**\n\n* `enterprise_uuid`: UUID of an enterprise customer.\n\ \n**Example Response**\n\n [\n {\n \"uuid\": \"ff41a5eb-2a73-4933-8e80-a1c66068ed2c\"\ ,\n \"title\": \"Demonstration Program\",\n \"type\"\ : \"MicroMasters\",\n \"banner_image\": {\n \"large\"\ : {\n \"url\": \"http://example.com/images/foo.large.jpg\"\ ,\n \"width\": 1440,\n \"height\": 480\n\ \ },\n \"medium\": {\n \"\ url\": \"http://example.com/images/foo.medium.jpg\",\n \ \ \"width\": 726,\n \"height\": 242\n },\n\ \ \"small\": {\n \"url\": \"http://example.com/images/foo.small.jpg\"\ ,\n \"width\": 435,\n \"height\": 145\n\ \ },\n \"x-small\": {\n \"\ url\": \"http://example.com/images/foo.x-small.jpg\",\n \ \ \"width\": 348,\n \"height\": 116\n }\n\ \ },\n \"authoring_organizations\": [\n \ \ {\n \"key\": \"example\"\n }\n \ \ ],\n \"progress\": {\n \"uuid\": \"ff41a5eb-2a73-4933-8e80-a1c66068ed2c\"\ ,\n \"completed\": 0,\n \"in_progress\": 0,\n\ \ \"not_started\": 2\n }\n }\n ]" tags: - learner_home parameters: - name: enterprise_uuid in: path required: true schema: type: string responses: '200': description: '' /learner_home/v1/programs/{program_uuid}/progress_details/: get: operationId: learner_home_v1_programs_progress_details_list summary: Retrieves progress details of a learner in a specified program. description: "**Example Request**\n\n GET api/dashboard/v1/programs/{program_uuid}/progress_details/\n\ \n**Parameters**\n\n* `program_uuid`: A string representation of the uuid\ \ of the program.\n\n**Response Values**\n\nIf the request for information\ \ about the program is successful, an HTTP 200 \"OK\" response\nis returned.\n\ \nThe HTTP 200 response has the following values.\n\n* `urls`: Urls to enroll/purchase\ \ a course or view program record.\n\n* `program_data`: Holds meta information\ \ about the program.\n\n* `course_data`: Learner's progress details for all\ \ courses in the program (in-progress/remaining/completed).\n\n* `certificate_data`:\ \ Details about learner's certificates status for all courses in the program\ \ and the\n program itself.\n\n* `industry_pathways`: Industry pathways\ \ for the program, comes under additional credit opportunities.\n\n* `credit_pathways`:\ \ Credit pathways for the program, comes under additional credit opportunities.\n\ \n**Example Response**\n\n {\n \"urls\": {\n \"program_listing_url\"\ : \"/dashboard/programs/\",\n \"track_selection_url\": \"/course_modes/choose/\"\ ,\n \"commerce_api_url\": \"/api/commerce/v1/baskets/\",\n \ \ \"buy_button_url\": \"http://example.com/basket/add/?\",\n \ \ \"program_record_url\": \"https://example.com/records/programs/8675309\"\ \n },\n \"program_data\": {\n \"uuid\": \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\ ,\n \"title\": \"Demonstration Program\",\n \"subtitle\"\ : \"\",\n \"type\": \"MicroMasters\",\n \"status\":\ \ \"active\",\n \"marketing_slug\": \"demo-program\",\n \ \ \"marketing_url\": \"micromasters/demo-program\",\n \"authoring_organizations\"\ : [],\n \"card_image_url\": \"http://example.com/asset-v1:DemoX+Demo_Course.jpg\"\ ,\n \"is_program_eligible_for_one_click_purchase\": false,\n \ \ \"pathway_ids\": [\n 1,\n 2\n \ \ ],\n \"is_learner_eligible_for_one_click_purchase\":\ \ false,\n \"skus\": [\"AUD90210\"],\n },\n \"course_data\"\ : {\n \"uuid\": \"a156a6e2-de91-4ce7-947a-888943e6b12a\",\n \ \ \"completed\": [],\n \"in_progress\": [],\n \ \ \"not_started\": [\n {\n \"key\": \"\ example+DemoX\",\n \"uuid\": \"fe1a9ad4-a452-45cd-80e5-9babd3d43f96\"\ ,\n \"title\": \"Demonstration Course\",\n \ \ \"course_runs\": [],\n \"entitlements\": [],\n\ \ \"owners\": [],\n \"image\": \"\"\ ,\n \"short_description\": \"\",\n \"\ type\": \"457f07ec-a78f-45b4-ba09-5fb176520d8a\",\n }\n \ \ ],\n },\n \"certificate_data\": [{\n \"\ type\": \"course\",\n \"title\": \"Demo Course\",\n \ \ 'url': \"/certificates/8675309\",\n }],\n \"industry_pathways\"\ : [\n {\n \"id\": 2,\n \"uuid\":\ \ \"1b8fadf1-f6aa-4282-94e3-325b922a027f\",\n \"name\": \"\ Demo Industry Pathway\",\n \"org_name\": \"example\",\n \ \ \"email\": \"example@example.com\",\n \"description\"\ : \"Sample demo industry pathway\",\n \"destination_url\":\ \ \"http://example.edu/online/pathways/example-methods\",\n \ \ \"pathway_type\": \"industry\",\n \"program_uuids\": [\n\ \ \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\n \ \ ]\n }\n ],\n \"credit_pathways\": [\n \ \ {\n \"id\": 1,\n \"uuid\": \"86b9701a-61e6-48a2-92eb-70a824521c1f\"\ ,\n \"name\": \"Demo Credit Pathway\",\n \"\ org_name\": \"example\",\n \"email\": \"example@example.com\"\ ,\n \"description\": \"Sample demo credit pathway!\",\n \ \ \"destination_url\": \"http://example.edu/online/pathways/example-thinking\"\ ,\n \"pathway_type\": \"credit\",\n \"program_uuids\"\ : [\n \"a156a6e2-de91-4ce7-947a-888943e6b12a\"\n \ \ ]\n }\n ]\n }" tags: - learner_home parameters: - name: program_uuid in: path required: true schema: type: string responses: '200': description: '' /learning_sequences/v1/course_outline/{course_key_str}: get: operationId: learning_sequences_v1_course_outline_read description: The CourseOutline, customized for a given user. tags: - learning_sequences parameters: - name: course_key_str in: path required: true schema: type: string responses: '200': description: '' /lti_consumer/v1/lti/{lti_config_id}/lti-ags: get: operationId: lti_consumer_v1_lti_lti-ags_list summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string responses: '200': description: '' content: application/vnd.ims.lis.v2.lineitemcontainer+json: schema: type: array items: $ref: '#/components/schemas/LtiAgsLineItem' application/vnd.ims.lis.v2.lineitem+json: schema: type: array items: $ref: '#/components/schemas/LtiAgsLineItem' post: operationId: lti_consumer_v1_lti_lti-ags_create summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string requestBody: required: true content: application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' responses: '201': description: '' content: application/vnd.ims.lis.v2.lineitemcontainer+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}: get: operationId: lti_consumer_v1_lti_lti-ags_read summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '200': description: '' content: application/vnd.ims.lis.v2.lineitemcontainer+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' put: operationId: lti_consumer_v1_lti_lti-ags_update summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: required: true content: application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' responses: '200': description: '' content: application/vnd.ims.lis.v2.lineitemcontainer+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' patch: operationId: lti_consumer_v1_lti_lti-ags_partial_update summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: required: true content: application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' responses: '200': description: '' content: application/vnd.ims.lis.v2.lineitemcontainer+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' application/vnd.ims.lis.v2.lineitem+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' delete: operationId: lti_consumer_v1_lti_lti-ags_delete summary: LineItem endpoint implementation from LTI Advantage. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '204': description: '' /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}/results/{user_id}: get: operationId: lti_consumer_v1_lti_lti-ags_results summary: Return a Result list for an LtiAgsLineItem description: "URL Parameters:\n * user_id (string): String external user id\ \ representation.\n\nQuery Parameters:\n * limit (integer): The maximum number\ \ of records to return. Records are\n sorted with most recent timestamp\ \ first" tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string - name: user_id in: path required: true schema: type: string responses: '200': description: '' content: application/vnd.ims.lis.v2.resultcontainer+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' /lti_consumer/v1/lti/{lti_config_id}/lti-ags/{id}/scores: post: operationId: lti_consumer_v1_lti_lti-ags_scores description: Create a Score record for an LtiAgsLineItem tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string requestBody: required: true content: application/vnd.ims.lis.v1.score+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' responses: '201': description: '' content: application/vnd.ims.lis.v1.score+json: schema: $ref: '#/components/schemas/LtiAgsLineItem' /lti_consumer/v1/lti/{lti_config_id}/memberships: get: operationId: lti_consumer_v1_lti_memberships_list description: 'Overrides default list method of ModelViewSet. Calls LMS `get_course_members` API and returns result.' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /lti_consumer/v1/lti/{lti_config_id}/memberships/{id}: get: operationId: lti_consumer_v1_lti_memberships_read summary: LTI NRPS Context Membership Service endpoint. description: 'See full documentation at:' tags: - lti_consumer parameters: - name: lti_config_id in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '200': description: '' /mfe_config/v1: get: operationId: mfe_config_v1_list summary: Return the MFE configuration, optionally including MFE-specific overrides. description: "**Usage**\n\n Get common config:\n GET /api/mfe_config/v1\n\n\ \ Get app config (common + app-specific overrides):\n GET /api/mfe_config/v1?mfe=name_of_mfe\n\ \n**GET Response Values**\n```\n{\n \"BASE_URL\": \"https://name_of_mfe.example.com\"\ ,\n \"LANGUAGE_PREFERENCE_COOKIE_NAME\": \"example-language-preference\"\ ,\n \"CREDENTIALS_BASE_URL\": \"https://credentials.example.com\",\n \ \ \"DISCOVERY_API_BASE_URL\": \"https://discovery.example.com\",\n \"\ LMS_BASE_URL\": \"https://courses.example.com\",\n \"LOGIN_URL\": \"https://courses.example.com/login\"\ ,\n \"LOGOUT_URL\": \"https://courses.example.com/logout\",\n \"STUDIO_BASE_URL\"\ : \"https://studio.example.com\",\n \"LOGO_URL\": \"https://courses.example.com/logo.png\"\ ,\n ... and so on\n}\n```" tags: - mfe_config parameters: - name: mfe in: query required: false description: Name of an MFE (a.k.a. an APP_ID). schema: type: string responses: '200': description: '' /mfe_context: get: operationId: mfe_context_list description: 'Returns - dynamic registration fields - dynamic optional fields - the context for third party auth providers - user country code - the currently running pipeline.' tags: - mfe_context responses: '200': description: '' /mobile/{api_version}/course_info/blocks/: get: operationId: mobile_course_info_blocks_list summary: '**Use Case**' description: "This API endpoint is specifically optimized for the course homepage\ \ on Mobile Apps.\n The endpoint returns the blocks in the course according\ \ to the requesting user's access level.\n Additionally, response encompasses\ \ info fields with information about the course,\n including certificate\ \ URL, media dictionary with course image URLs, start and end dates for the\ \ course.\n\n**Example requests**:\n\n This api works with all versions\ \ {api_version}, you can use: v0.5, v1, v2 or v3\n\n GET /api/mobile/{api_version}/course_info/blocks/?course_id=\n\ \ GET /api/mobile/{api_version}/course_info/blocks/?course_id=\n\ \ &username=anjali\n &depth=all\n &requested_fields=graded,format,student_view_multi_device,lti_url\n\ \ &block_counts=video\n &student_view_data=video\n &block_types_filter=problem,html\n\ \n**Parameters:**\n\n username (str): The username of the specified\ \ user for whom the course data\n is being accessed.\n depth\ \ (integer, str, None): Optional number of blocks you receive in response\n\ \ course nesting depth, you can get only sections, sections and\ \ subsections,\n or provide string 'all' to receive all blocks\ \ of the course.\n requested_field (list): Optional list of names of\ \ additional fields to return for each block.\n Supported fields\ \ can be found in transformers.SUPPORTED_FIELDS.\n block_counts (list):\ \ Optional list of names of block types for which an aggregated count\n \ \ of blocks is returned.\n student_view_data (list): Optional\ \ list of names of block types for\n which student_view_data is\ \ returned.\n block_types_filter (list): Filter by block types:\n \ \ 'video', 'discussion', 'html', 'chapter', 'sequential', 'vertical'.\n\ \ return_type (list, dict): Optional list or dictionary of block's\ \ fields based on 'return_type'.\n\n**Response example**\n\n Body consists\ \ of the following fields, you received this response if you use\n 'return_type=dict'\ \ in query params:\n\n root: (str) The ID of the root node of the requested\ \ course block structure. blocks: (dict) A dictionary or list, based\ \ on the value of the\n \"return_type\" parameter. Maps block usage\ \ IDs to a collection of\n information about each block. Each block\ \ contains the following\n fields.\n\n id: (str) The Course's id\ \ (Course Run key)\n name: (str) The course's name\n number: (str) The\ \ course's number\n org: (str) The course's organisation\n start: (str)\ \ Date the course begins, in ISO 8601 notation\n start_display: (str) Readably\ \ formatted start of the course\n start_type: (str) Hint describing how\ \ `start_display` is set. One of:\n * `\"string\"`: manually set by\ \ the course author\n * `\"timestamp\"`: generated from the `start`\ \ timestamp\n * `\"empty\"`: no start date is specified\n end: (str)\ \ Date the course ends, in ISO 8601 notation\n media: (dict) An object\ \ that contains named media items. Included here:\n * course_image:\ \ An image to show for the course. Represented\n as an object with\ \ the following fields:\n * uri: The location of the image\n \ \ certificate: (dict) Information about the user's earned certificate in\ \ the course.\n Included here:\n * uri: The location of\ \ the user's certificate\n is_self_paced: (bool) Indicates if the course\ \ is self paced\n\n Body consists of the following fields, you received\ \ this response if you use\n 'return_type=list' in query params:\n\n \ \ id: (str) The Course's id (Course Run key)\n block_id: (str) The unique\ \ identifier for the block_id\n lms_web_url: (str) The URL to the navigational\ \ container of the xBlock on the web.\n legacy_web_url: (str) Like `lms_web_url`,\ \ but always directs to\n the \"Legacy\" frontend experience.\n \ \ student_view_url: (str) The URL to retrieve the HTML rendering\n \ \ of this block's student view\n type: (str): The type of block. Possible\ \ values the names of any\n XBlock type in the system, including custom\ \ blocks. Examples are\n course, chapter, sequential, vertical, html,\ \ problem, video, and\n discussion.\n display_name: (str) The display\ \ name of the block.\n course_progress: (dict) Contains information about\ \ how many assignments are in the course\n and how many assignments\ \ the student has completed.\n Included here:\n * total_assignments_count:\ \ (int) Total course's assignments count.\n * assignments_completed:\ \ (int) Assignments witch the student has completed.\n\n**Returns**\n\n \ \ * 200 on success with above fields.\n * 400 if an invalid parameter\ \ was sent or the username was not provided\n * 401 unauthorized, the provided\ \ access token has expired and is no longer valid\n for an authenticated\ \ request.\n * 403 if a user who does not have permission to masquerade\ \ as\n another user specifies a username other than their own.\n *\ \ 404 if the course is not available or cannot be seen." tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /mobile/{api_version}/course_info/record_user_activity: post: operationId: mobile_course_info_record_user_activity_create summary: Handle the POST request description: Populate the user activity table. tags: - mobile parameters: - name: api_version in: path required: true schema: type: string responses: '201': description: '' /mobile/{api_version}/course_info/{course_id}/enrollment_details: get: operationId: mobile_course_info_enrollment_details_list summary: Handle the GET request description: Returns user enrollment and course details. tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /mobile/{api_version}/course_info/{course_id}/handouts: get: operationId: mobile_course_info_handouts_list summary: '**Use Case**' description: "Get the HTML for course handouts.\n\n**Example Request**\n\n \ \ GET /api/mobile/v0.5/course_info/{course_id}/handouts\n\n**Response Values**\n\ \n If the request is successful, the request returns an HTTP 200 \"OK\"\ \n response along with the following value.\n\n * handouts_html: The\ \ HTML for course handouts." tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /mobile/{api_version}/course_info/{course_id}/updates: get: operationId: mobile_course_info_updates_list summary: '**Use Case**' description: "Get the content for course updates.\n\n**Example Request**\n\n\ \ GET /api/mobile/v0.5/course_info/{course_id}/updates\n\n**Response Values**\n\ \n If the request is successful, the request returns an HTTP 200 \"OK\"\ \n response along with an array of course updates. Each course update\n\ \ contains the following values.\n\n * content: The content, as\ \ an HTML string, of the course update.\n * date: The date of the course\ \ update.\n * id: The unique identifier of the update.\n * status:\ \ Whether the update is visible or not." tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /mobile/{api_version}/my_user_info: get: operationId: mobile_my_user_info_list description: Redirect to the currently-logged-in user's info page tags: - mobile parameters: - name: api_version in: path required: true schema: type: string responses: '200': description: '' /mobile/{api_version}/notifications/create-token/: post: operationId: mobile_notifications_create-token_create summary: "**Use Case**\n This endpoint allows clients to register a device\ \ for push notifications." description: "If the device is already registered, the existing registration\ \ will be updated.\n If setting PUSH_NOTIFICATIONS_SETTINGS is not configured,\ \ the endpoint will return a 501 error.\n\n**Example Request**\n POST /api/mobile/{version}/notifications/create-token/\n\ \ **POST Parameters**\n The body of the POST request can include the\ \ following parameters.\n * name (optional) - A name of the device.\n\ \ * registration_id (required) - The device token of the device.\n \ \ * device_id (optional) - ANDROID_ID / TelephonyManager.getDeviceId()\ \ (always as hex)\n * active (optional) - Whether the device is active,\ \ default is True.\n If False, the device will not receive notifications.\n\ \ * cloud_message_type (required) - You should choose FCM or GCM. Currently,\ \ only FCM is supported.\n * application_id (optional) - Opaque application\ \ identity, should be filled in for multiple\n key/certificate access.\ \ Should be equal settings.FCM_APP_NAME.\n**Example Response**\n ```json\n\ \ {\n \"id\": 1,\n \"name\": \"My Device\",\n \"registration_id\"\ : \"fj3j4\",\n \"device_id\": 1234,\n \"active\": true,\n \ \ \"date_created\": \"2024-04-18T07:39:37.132787Z\",\n \"cloud_message_type\"\ : \"FCM\",\n \"application_id\": \"my_app_id\"\n }\n ```" tags: - mobile parameters: - name: api_version in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GCMDevice' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/GCMDevice' /mobile/{api_version}/users/{username}: get: operationId: mobile_users_read summary: '**Use Case**' description: "Get information about the specified user and access other resources\n\ \ the user has permissions for.\n\n Users are redirected to this endpoint\ \ after they sign in.\n\n You can use the **course_enrollments** value\ \ in the response to get a\n list of courses the user is enrolled in.\n\ \n**Example Request**\n\n GET /api/mobile/{version}/users/{username}\n\n\ **Response Values**\n\n If the request is successful, the request returns\ \ an HTTP 200 \"OK\" response.\n\n The HTTP 200 response has the following\ \ values.\n\n * course_enrollments: The URI to list the courses the currently\ \ signed\n in user is enrolled in.\n * email: The email address of\ \ the currently signed in user.\n * id: The ID of the user.\n * name:\ \ The full name of the currently signed in user.\n * username: The username\ \ of the currently signed in user." tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: username in: path required: true description: Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. schema: type: string pattern: ^[\w.@+-]+$ responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/mobile_api.User' /mobile/{api_version}/users/{username}/course_enrollments/: get: operationId: mobile_users_course_enrollments_list summary: '**Use Case**' description: "Get information about the courses that the currently signed in\ \ user is\n enrolled in.\n\n v1 differs from v0.5 version by returning\ \ ALL enrollments for\n a user rather than only the enrollments the user\ \ has access to (that haven't expired).\n An additional attribute \"expiration\"\ \ has been added to the response, which lists the date\n when access to\ \ the course will expire or null if it doesn't expire.\n\n In v4 we added\ \ to the response primary object. Primary object contains the latest user's\ \ enrollment\n or course where user has the latest progress. Primary object\ \ has been cut from user's\n enrolments array and inserted into separated\ \ section with key `primary`.\n\n**Example Request**\n\n GET /api/mobile/v1/users/{username}/course_enrollments/\n\ \n**Response Values**\n\n If the request for information about the user\ \ is successful, the\n request returns an HTTP 200 \"OK\" response.\n\n\ \ The HTTP 200 response has the following values.\n\n * expiration:\ \ The course expiration date for given user course pair\n or null if\ \ the course does not expire.\n * certificate: Information about the user's\ \ earned certificate in the\n course.\n * course: A collection of\ \ the following data about the course.\n\n * courseware_access: A JSON\ \ representation with access information for the course,\n including\ \ any access errors.\n\n * course_about: The URL to the course about\ \ page.\n * course_sharing_utm_parameters: Encoded UTM parameters to\ \ be included in course sharing url\n * course_handouts: The URI to get\ \ data for course handouts.\n * course_image: The path to the course\ \ image.\n * course_updates: The URI to get data for course updates.\n\ \ * discussion_url: The URI to access data for course discussions if\n\ \ it is enabled, otherwise null.\n * end: The end date of the\ \ course.\n * id: The unique ID of the course.\n * name: The name\ \ of the course.\n * number: The course number.\n * org: The organization\ \ that created the course.\n * start: The date and time when the course\ \ starts.\n * start_display:\n If start_type is a string, then\ \ the advertised_start date for the course.\n If start_type is a timestamp,\ \ then a formatted date for the start of the course.\n If start_type\ \ is empty, then the value is None and it indicates that the course has not\ \ yet started.\n * start_type: One of either \"string\", \"timestamp\"\ , or \"empty\"\n * subscription_id: A unique \"clean\" (alphanumeric\ \ with '_') ID of\n the course.\n * video_outline: The URI to\ \ get the list of all videos that the user\n can access in the course.\n\ \n * created: The date the course was created.\n * is_active: Whether\ \ the course is currently active. Possible values\n are true or false.\n\ \ * mode: The type of certificate registration for this course (honor or\n\ \ certified).\n * url: URL to the downloadable version of the certificate,\ \ if exists.\n * course_progress: Contains information about how many assignments\ \ are in the course\n and how many assignments the student has completed.\n\ \ * total_assignments_count: Total course's assignments count.\n * assignments_completed:\ \ Assignments witch the student has completed." tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CourseEnrollment' /mobile/{api_version}/users/{username}/course_status_info/{course_id}: get: operationId: mobile_users_course_status_info_read description: Get the ID of the module that the specified user last visited in the specified course. tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: username in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' patch: operationId: mobile_users_course_status_info_partial_update description: Update the ID of the module that the specified user last visited in the specified course. tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: username in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /mobile/{api_version}/users/{username}/enrollments_status/: get: operationId: mobile_users_enrollments_status_list description: Gets user's enrollments status. tags: - mobile parameters: - name: api_version in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '200': description: '' /notifications/: get: operationId: notifications_list summary: API view for listing notifications for a user. description: "**Permissions**: User must be authenticated.\n**Response Format**\ \ (paginated):\n\n {\n \"results\" : [\n {\n \ \ \"id\": (int) notification_id,\n \"app_name\": (str)\ \ app_name,\n \"notification_type\": (str) notification_type,\n\ \ \"content\": (str) content,\n \"content_context\"\ : (dict) content_context,\n \"content_url\": (str) content_url,\n\ \ \"last_read\": (datetime) last_read,\n \"\ last_seen\": (datetime) last_seen\n },\n ...\n \ \ ],\n \"count\": (int) total_number_of_notifications,\n \"\ next\": (str) url_to_next_page_of_notifications,\n \"previous\": (str)\ \ url_to_previous_page_of_notifications,\n \"page_size\": (int) number_of_notifications_per_page,\n\ \n }\n\nResponse Error Codes:\n- 403: The requester cannot access resource." tags: - notifications parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Notification' /notifications/configurations/: get: operationId: notifications_configurations_list description: API view for getting the aggregate notification preferences for the current user. tags: - notifications responses: '200': description: '' /notifications/configurations/{course_key_string}: get: operationId: notifications_configurations_read summary: Returns notification preference for user for a course. description: "Parameters:\n request (Request): The request object.\n \ \ course_key_string (int): The ID of the course to retrieve notification\ \ preference.\n\n Returns:\n {\n 'id': 1,\n 'course_name':\ \ 'testcourse',\n 'course_id': 'course-v1:testorg+testcourse+testrun',\n\ \ 'notification_preference_config': {\n 'discussion': {\n\ \ 'enabled': False,\n 'core': {\n \ \ 'info': '',\n 'web': False,\n \ \ 'push': False,\n 'email': False,\n \ \ },\n 'notification_types': {\n 'new_post':\ \ {\n 'info': '',\n 'web': False,\n\ \ 'push': False,\n 'email':\ \ False,\n },\n },\n 'not_editable':\ \ {},\n },\n }\n }" tags: - notifications parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' patch: operationId: notifications_configurations_partial_update description: Update an existing user notification preference with the data in the request body. tags: - notifications parameters: - name: course_key_string in: path required: true schema: type: string responses: '200': description: '' /notifications/count/: get: operationId: notifications_count_list summary: Get the unseen notifications count and show_notification_tray flag for a user. description: "**Permissions**: User must be authenticated.\n**Response Format**:\n\ ```json\n{\n \"show_notifications_tray\": (bool) show_notifications_tray,\n\ \ \"count\": (int) total_number_of_unseen_notifications,\n \"count_by_app_name\"\ : {\n (str) app_name: (int) number_of_unseen_notifications,\n \ \ ...\n },\n \"notification_expiry_days\": 60\n}\n```\n**Response\ \ Error Codes**:\n- 403: The requester cannot access resource." tags: - notifications responses: '200': description: '' /notifications/enrollments/: get: operationId: notifications_enrollments_list summary: API endpoint to get active CourseEnrollments for requester. description: "**Permissions**: User must be authenticated.\n**Response Format**\ \ (paginated):\n\n {\n \"next\": (str) url_to_next_page_of_courses,\n\ \ \"previous\": (str) url_to_previous_page_of_courses,\n \"\ count\": (int) total_number_of_courses,\n \"num_pages\": (int) total_number_of_pages,\n\ \ \"current_page\": (int) current_page_number,\n \"start\":\ \ (int) index_of_first_course_on_page,\n \"results\" : [\n \ \ {\n \"course\": {\n \"id\": (int) course_id,\n\ \ \"display_name\": (str) course_display_name\n \ \ },\n },\n ...\n ],\n }\n\nResponse\ \ Error Codes:\n- 403: The requester cannot access resource." tags: - notifications parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/NotificationCourseEnrollment' /notifications/mark-seen/{app_name}/: put: operationId: notifications_mark-seen_update description: API view for marking user's all notifications seen for a provided app_name. tags: - notifications parameters: - name: app_name in: path required: true schema: type: string responses: '200': description: '' patch: operationId: notifications_mark-seen_partial_update description: API view for marking user's all notifications seen for a provided app_name. tags: - notifications parameters: - name: app_name in: path required: true schema: type: string responses: '200': description: '' /notifications/preferences/update-all/: post: operationId: notifications_preferences_update-all_create description: Update all notification preferences for the current user. tags: - notifications responses: '201': description: '' /notifications/preferences/update/{username}/{patch}/: get: operationId: notifications_preferences_update_read description: 'View to update user preferences from encrypted username and patch. username and patch must be string' tags: - notifications parameters: - name: username in: path required: true schema: type: string - name: patch in: path required: true schema: type: string responses: '200': description: '' post: operationId: notifications_preferences_update_create description: 'View to update user preferences from encrypted username and patch. username and patch must be string' tags: - notifications parameters: - name: username in: path required: true schema: type: string - name: patch in: path required: true schema: type: string responses: '201': description: '' /notifications/read/: patch: operationId: notifications_read_partial_update description: 'Marks all notifications or single notification read for the given app name or notification id for the authenticated user.' tags: - notifications responses: '200': description: '' /ora_staff_grader/assessments/feedback/from/: get: operationId: ora_staff_grader_assessments_feedback_get_from summary: View for fetching assessment feedback for a submission. description: "**Methods**\n\n* (GET) `api/ora_staff_grader/assessments/feedback/from`\n\ \ List all assessments received by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n* (GET) `api/ora_staff_grader/assessments/feedback/to`\n\ \ List all assessments given by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n**Query Params**:\n\n* `oraLocation` (str): ORA\ \ location for XBlock handling\n* `submissionUUID` (str): The ORA submission\ \ UUID\n\n**Response**:\n\n {\n assessments (List[dict]): [\n \ \ {\n \"assessment_id: (str) Assessment id\n \ \ \"scorer_name: (str) Scorer name\n \"scorer_username:\ \ (str) Scorer username\n \"scorer_email: (str) Scorer email\n\ \ \"assessment_date: (str) Assessment date\n \ \ \"assessment_scores (List[dict]) [\n {\n \ \ \"criterion_name: (str) Criterion name\n \ \ \"score_earned: (int) Score earned\n \"score_type:\ \ (str) Score type\n }\n ]\n \ \ \"problem_step (str) Problem step (Self, Peer, or Staff)\n \ \ \"feedback: (str) Feedback of the assessment\n }\n \ \ ]\n }\n\n**Errors**:\n\n* `MissingParamResponse` (HTTP 400) for missing\ \ params\n* `BadOraLocationResponse` (HTTP 400) for bad ORA location\n* `XBlockInternalError`\ \ (HTTP 500) for an issue with ORA\n* `UnknownError` (HTTP 500) for other\ \ errors" tags: - ora_staff_grader parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /ora_staff_grader/assessments/feedback/to/: get: operationId: ora_staff_grader_assessments_feedback_get_to summary: View for fetching assessment feedback for a submission. description: "**Methods**\n\n* (GET) `api/ora_staff_grader/assessments/feedback/from`\n\ \ List all assessments received by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n* (GET) `api/ora_staff_grader/assessments/feedback/to`\n\ \ List all assessments given by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n**Query Params**:\n\n* `oraLocation` (str): ORA\ \ location for XBlock handling\n* `submissionUUID` (str): The ORA submission\ \ UUID\n\n**Response**:\n\n {\n assessments (List[dict]): [\n \ \ {\n \"assessment_id: (str) Assessment id\n \ \ \"scorer_name: (str) Scorer name\n \"scorer_username:\ \ (str) Scorer username\n \"scorer_email: (str) Scorer email\n\ \ \"assessment_date: (str) Assessment date\n \ \ \"assessment_scores (List[dict]) [\n {\n \ \ \"criterion_name: (str) Criterion name\n \ \ \"score_earned: (int) Score earned\n \"score_type:\ \ (str) Score type\n }\n ]\n \ \ \"problem_step (str) Problem step (Self, Peer, or Staff)\n \ \ \"feedback: (str) Feedback of the assessment\n }\n \ \ ]\n }\n\n**Errors**:\n\n* `MissingParamResponse` (HTTP 400) for missing\ \ params\n* `BadOraLocationResponse` (HTTP 400) for bad ORA location\n* `XBlockInternalError`\ \ (HTTP 500) for an issue with ORA\n* `UnknownError` (HTTP 500) for other\ \ errors" tags: - ora_staff_grader parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /ora_staff_grader/assessments/feedback/{id}/: get: operationId: ora_staff_grader_assessments_feedback_read summary: View for fetching assessment feedback for a submission. description: "**Methods**\n\n* (GET) `api/ora_staff_grader/assessments/feedback/from`\n\ \ List all assessments received by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n* (GET) `api/ora_staff_grader/assessments/feedback/to`\n\ \ List all assessments given by a user (according to\n their submissionUUID)\ \ in an ORA assignment.\n\n**Query Params**:\n\n* `oraLocation` (str): ORA\ \ location for XBlock handling\n* `submissionUUID` (str): The ORA submission\ \ UUID\n\n**Response**:\n\n {\n assessments (List[dict]): [\n \ \ {\n \"assessment_id: (str) Assessment id\n \ \ \"scorer_name: (str) Scorer name\n \"scorer_username:\ \ (str) Scorer username\n \"scorer_email: (str) Scorer email\n\ \ \"assessment_date: (str) Assessment date\n \ \ \"assessment_scores (List[dict]) [\n {\n \ \ \"criterion_name: (str) Criterion name\n \ \ \"score_earned: (int) Score earned\n \"score_type:\ \ (str) Score type\n }\n ]\n \ \ \"problem_step (str) Problem step (Self, Peer, or Staff)\n \ \ \"feedback: (str) Feedback of the assessment\n }\n \ \ ]\n }\n\n**Errors**:\n\n* `MissingParamResponse` (HTTP 400) for missing\ \ params\n* `BadOraLocationResponse` (HTTP 400) for bad ORA location\n* `XBlockInternalError`\ \ (HTTP 500) for an issue with ORA\n* `UnknownError` (HTTP 500) for other\ \ errors" tags: - ora_staff_grader parameters: - name: id in: path required: true schema: type: string responses: '200': description: '' /ora_staff_grader/initialize: get: operationId: ora_staff_grader_initialize_read description: GET course metadata tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/mock/initialize: get: operationId: ora_staff_grader_mock_initialize_read description: Returns initial app state tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/mock/submission: get: operationId: ora_staff_grader_mock_submission_read description: Get a submission tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/mock/submission/grade: get: operationId: ora_staff_grader_mock_submission_grade_read description: Submit a grade tags: - ora_staff_grader responses: '200': description: '' post: operationId: ora_staff_grader_mock_submission_grade_create description: Save a grade update to the data store tags: - ora_staff_grader responses: '201': description: '' /ora_staff_grader/mock/submission/lock: post: operationId: ora_staff_grader_mock_submission_lock_create description: Claim a submission lock, updating lock status tags: - ora_staff_grader responses: '201': description: '' delete: operationId: ora_staff_grader_mock_submission_lock_delete description: Delete a submission lock, updating lock status tags: - ora_staff_grader responses: '204': description: '' /ora_staff_grader/mock/submission/status: get: operationId: ora_staff_grader_mock_submission_status_read description: Get a submission status, leaving out the response tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/submission: get: operationId: ora_staff_grader_submission_read description: GET submission contents and assessment info, if any tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/submission/batch/unlock: get: operationId: ora_staff_grader_submission_batch_unlock_read description: POST delete a group of submission locks, limited to just those in the list that the user owns. tags: - ora_staff_grader responses: '200': description: '' post: operationId: ora_staff_grader_submission_batch_unlock_create description: Batch delete submission locks tags: - ora_staff_grader responses: '201': description: '' /ora_staff_grader/submission/files: get: operationId: ora_staff_grader_submission_files_read summary: GET file metadata for a submission. description: 'Used to get updated file download links to avoid signed download link expiration issues.' tags: - ora_staff_grader responses: '200': description: '' /ora_staff_grader/submission/grade: get: operationId: ora_staff_grader_submission_grade_read description: POST submit a grade for a submission tags: - ora_staff_grader responses: '200': description: '' post: operationId: ora_staff_grader_submission_grade_create description: Update a grade tags: - ora_staff_grader responses: '201': description: '' /ora_staff_grader/submission/lock: get: operationId: ora_staff_grader_submission_lock_read description: 'POST claim a submission lock for grading DELETE release a submission lock' tags: - ora_staff_grader responses: '200': description: '' post: operationId: ora_staff_grader_submission_lock_create description: Claim a submission lock tags: - ora_staff_grader responses: '201': description: '' delete: operationId: ora_staff_grader_submission_lock_delete description: Clear a submission lock tags: - ora_staff_grader responses: '204': description: '' /ora_staff_grader/submission/status: get: operationId: ora_staff_grader_submission_status_read description: GET submission grade status, lock status, and grade data tags: - ora_staff_grader responses: '200': description: '' /organizations/v0/organizations/: get: operationId: organizations_v0_organizations_list description: "Organization view to:\n - list organization data (GET .../)\n\ \ - retrieve single organization (GET .../)\n - create or\ \ update an organization via the PUT endpoint (PUT .../)" tags: - organizations parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Organization' /organizations/v0/organizations/{short_name}/: get: operationId: organizations_v0_organizations_read description: "Organization view to:\n - list organization data (GET .../)\n\ \ - retrieve single organization (GET .../)\n - create or\ \ update an organization via the PUT endpoint (PUT .../)" tags: - organizations parameters: - name: short_name in: path required: true description: Unique, short string identifier for organization. Please do not use spaces or special characters. Only allowed special characters are period (.), hyphen (-) and underscore (_). schema: type: string pattern: '[^/+]+' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Organization' put: operationId: organizations_v0_organizations_update summary: We perform both Update and Create action via the PUT method. description: "The 'active' field may not be specified via the HTTP API, since\ \ it\nis always assumed to be True. So:\n (1) new organizations created\ \ through the API are always Active, and\n (2) existing organizations updated\ \ through the API always end up Active,\n regardless of whether or\ \ not they were previously active." tags: - organizations parameters: - name: short_name in: path required: true description: Unique, short string identifier for organization. Please do not use spaces or special characters. Only allowed special characters are period (.), hyphen (-) and underscore (_). schema: type: string pattern: '[^/+]+' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Organization' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Organization' patch: operationId: organizations_v0_organizations_partial_update description: We disable PATCH because all updates and creates should use the PUT action above. tags: - organizations parameters: - name: short_name in: path required: true description: Unique, short string identifier for organization. Please do not use spaces or special characters. Only allowed special characters are period (.), hyphen (-) and underscore (_). schema: type: string pattern: '[^/+]+' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Organization' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Organization' /profile_images/v1/{username}/remove: post: operationId: profile_images_v1_remove_create description: POST /api/profile_images/v1/{username}/remove tags: - profile_images parameters: - name: username in: path required: true schema: type: string responses: '201': description: '' /profile_images/v1/{username}/upload: post: operationId: profile_images_v1_upload_create description: POST /api/profile_images/v1/{username}/upload tags: - profile_images parameters: - name: username in: path required: true schema: type: string responses: '201': description: '' /program_enrollments/v1/integration-reset: post: operationId: program_enrollments_v1_integration-reset_create description: Reset enrollment and user data for organization tags: - program_enrollments responses: '201': description: '' /program_enrollments/v1/programs/enrollments/: get: operationId: program_enrollments_v1_programs_enrollments_list description: How to respond to a GET request to this endpoint tags: - program_enrollments responses: '200': description: '' /program_enrollments/v1/programs/readonly_access/: get: operationId: program_enrollments_v1_programs_readonly_access_list description: How to respond to a GET request to this endpoint tags: - program_enrollments responses: '200': description: '' /program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/enrollments/: get: operationId: program_enrollments_v1_programs_courses_enrollments_list description: Get a list of students enrolled in a course within a program. tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' post: operationId: program_enrollments_v1_programs_courses_enrollments_create description: Enroll a list of students in a course in a program tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '201': description: '' put: operationId: program_enrollments_v1_programs_courses_enrollments_update description: Create or Update the program course enrollments of a list of learners tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' patch: operationId: program_enrollments_v1_programs_courses_enrollments_partial_update description: Modify the program course enrollments of a list of learners tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /program_enrollments/v1/programs/{program_uuid}/courses/{course_id}/grades/: get: operationId: program_enrollments_v1_programs_courses_grades_list description: Defines the GET list endpoint for ProgramCourseGrade objects. tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /program_enrollments/v1/programs/{program_uuid}/enrollments/: get: operationId: program_enrollments_v1_programs_enrollments_list description: Defines the GET list endpoint for ProgramEnrollment objects. tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' post: operationId: program_enrollments_v1_programs_enrollments_create description: Create program enrollments for a list of learners tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string responses: '201': description: '' put: operationId: program_enrollments_v1_programs_enrollments_update description: Create/update program enrollments for a list of learners tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string responses: '200': description: '' patch: operationId: program_enrollments_v1_programs_enrollments_partial_update description: Update program enrollments for a list of learners tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string responses: '200': description: '' /program_enrollments/v1/programs/{program_uuid}/overview/: get: operationId: program_enrollments_v1_programs_overview_read description: 'A view for getting data associated with a user''s course enrollments as part of a program enrollment.' tags: - program_enrollments parameters: - name: program_uuid in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseRunOverviewList' /program_enrollments/v1/users/{username}/programs/{program_uuid}/courses: get: operationId: program_enrollments_v1_users_programs_courses_list summary: Get an overview of each of a user's course enrollments associated with a program. description: "This endpoint exists to get an overview of each course-run enrollment\n\ that a user has for course-runs within a given program.\nFields included are\ \ the title, upcoming due dates, etc.\nThis API endpoint is intended for use\ \ with the\n[Program Learner Portal MFE](https://github.com/openedx/frontend-app-learner-portal-programs).\n\ \nIt is important to note that the set of enrollments that this endpoint returns\n\ is different than a user's set of *program-course-run enrollments*.\nSpecifically,\ \ this endpoint may include course runs that are *within*\nthe specified program\ \ but were not *enrolled in* via the specified program.\n\n**Example Response:**\n\ ```json\n{\n \"next\": null,\n \"previous\": null,\n \"results\"\ : [\n {\n \"course_run_id\": \"edX+AnimalsX+Aardvarks\"\ ,\n \"display_name\": \"Astonishing Aardvarks\",\n \"\ course_run_url\": \"https://courses.edx.org/courses/course-v1:edX+AnimalsX+Aardvarks/course/\"\ ,\n \"start_date\": \"2017-02-05T05:00:00Z\",\n \"end_date\"\ : \"2018-02-05T05:00:00Z\",\n \"course_run_status\": \"completed\"\ \n \"emails_enabled\": true,\n \"due_dates\": [\n \ \ {\n \"name\": \"Introduction: What even\ \ is an aardvark?\",\n \"url\": \"https://courses.edx.org/courses/course-v1:edX+AnimalsX+Aardvarks/jump_to/\n\ \ block-v1:edX+AnimalsX+Aardvarks+type@chapter+block@1414ffd5143b4b508f739b563ab468b7\"\ ,\n \"date\": \"2017-05-01T05:00:00Z\"\n \ \ },\n {\n \"name\": \"Quiz: Aardvark or\ \ Anteater?\",\n \"url\": \"https://courses.edx.org/courses/course-v1:edX+AnimalsX+Aardvarks/jump_to/\n\ \ block-v1:edX+AnimalsX+Aardvarks+type@sequential+block@edx_introduction\"\ ,\n \"date\": \"2017-03-05T00:00:00Z\"\n \ \ }\n ],\n \"micromasters_title\": \"Animals\",\n \ \ \"certificate_download_url\": \"https://courses.edx.org/certificates/123\"\ \n },\n {\n \"course_run_id\": \"edX+AnimalsX+Baboons\"\ ,\n \"display_name\": \"Breathtaking Baboons\",\n \"\ course_run_url\": \"https://courses.edx.org/courses/course-v1:edX+AnimalsX+Baboons/course/\"\ ,\n \"start_date\": \"2018-02-05T05:00:00Z\",\n \"end_date\"\ : null,\n \"course_run_status\": \"in_progress\"\n \"\ emails_enabled\": false,\n \"due_dates\": [],\n \"micromasters_title\"\ : \"Animals\",\n \"certificate_download_url\": \"https://courses.edx.org/certificates/123\"\ ,\n \"resume_course_run_url\": \"https://courses.edx.org/courses/course-v1:edX+AnimalsX+Baboons/jump_to/\n\ \ block-v1:edX+AnimalsX+Baboons+type@sequential+block@edx_introduction\"\ \n }\n ]\n}\n```" tags: - program_enrollments parameters: - name: username in: path required: true schema: type: string - name: program_uuid in: path required: true schema: type: string - name: cursor in: query required: false description: The pagination cursor value. schema: type: string - name: page_size in: query required: false description: Number of results to return per page. Defaults to 10. Maximum is 25. schema: type: integer - name: username in: path required: true description: The username of the user for which enrollment overviews will be fetched. For now, this must be the requesting user; otherwise, 403 will be returned. In the future, global staff users may be able to supply other usernames. schema: type: string - name: program_uuid in: path required: true description: UUID of a program. Enrollments will be returned for course runs in this program. schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PageOfCourseRunOverview' '401': description: The requester is not authenticated. '403': description: The requester cannot access the specified program and/or the requester may not retrieve this data for the specified user. '404': description: The requested program does not exist. /send_account_activation_email: post: operationId: send_account_activation_email_create description: Returns status code. tags: - send_account_activation_email responses: '201': description: '' /team/v0/bulk_team_membership/{course_id}: get: operationId: team_v0_bulk_team_membership_read description: Download CSV with team membership data for given course run. tags: - team parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' post: operationId: team_v0_bulk_team_membership_create description: Process uploaded CSV to modify team memberships for given course run. tags: - team parameters: - name: course_id in: path required: true schema: type: string responses: '201': description: '' /team/v0/team_membership/: get: operationId: team_v0_team_membership_list description: GET /api/team/v0/team_membership tags: - team parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Membership' post: operationId: team_v0_team_membership_create description: POST /api/team/v0/team_membership tags: - team requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Membership' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/Membership' /team/v0/team_membership/{team_id},{username}: get: operationId: team_v0_team_membership_read description: GET /api/team/v0/team_membership/{team_id},{username} tags: - team parameters: - name: team_id in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Membership' delete: operationId: team_v0_team_membership_delete description: DELETE /api/team/v0/team_membership/{team_id},{username} tags: - team parameters: - name: team_id in: path required: true schema: type: string - name: username in: path required: true schema: type: string responses: '204': description: '' /team/v0/teams/: get: operationId: team_v0_teams_list description: GET /api/team/v0/teams/ tags: - team parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/CourseTeam' post: operationId: team_v0_teams_create description: POST /api/team/v0/teams/ tags: - team requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CourseTeam' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseTeam' /team/v0/teams/{team_id}: get: operationId: team_v0_teams_read description: Retrieves the specified resource using the RetrieveModelMixin. tags: - team parameters: - name: team_id in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseTeam' patch: operationId: team_v0_teams_partial_update description: Checks for validation errors, then updates the model using the UpdateModelMixin. tags: - team parameters: - name: team_id in: path required: true schema: type: string requestBody: required: true content: application/merge-patch+json: schema: $ref: '#/components/schemas/CourseTeam' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/CourseTeam' delete: operationId: team_v0_teams_delete description: DELETE /api/team/v0/teams/{team_id} tags: - team parameters: - name: team_id in: path required: true schema: type: string responses: '204': description: '' /team/v0/teams/{team_id}/assignments: get: operationId: team_v0_teams_assignments_list description: GET v0/teams/{team_id_pattern}/assignments tags: - team parameters: - name: team_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /team/v0/topics/: get: operationId: team_v0_topics_list description: GET /api/team/v0/topics/?course_id={course_id} tags: - team parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' /team/v0/topics/{topic_id},{course_id}: get: operationId: team_v0_topics_read description: GET /api/team/v0/topics/{topic_id},{course_id}/ tags: - team parameters: - name: topic_id in: path required: true schema: type: string - name: course_id in: path required: true schema: type: string responses: '200': description: '' /third_party_auth/v0/providers/user_status: get: operationId: third_party_auth_v0_providers_user_status_list summary: GET /api/third_party_auth/v0/providers/user_status/ description: "**GET Response Values**\n```\n{\n \"accepts_logins\": true,\n\ \ \"name\": \"Google\",\n \"disconnect_url\": \"/auth/disconnect/google-oauth2/?\"\ ,\n \"connect_url\": \"/auth/login/google-oauth2/?auth_entry=account_settings&next=%2Faccount%2Fsettings\"\ ,\n \"connected\": false,\n \"id\": \"oa2-google-oauth2\"\n}\n```" tags: - third_party_auth responses: '200': description: '' /third_party_auth/v0/providers/{provider_id}/users: get: operationId: third_party_auth_v0_providers_users_list summary: Map between the third party auth account IDs (remote_id) and EdX username. description: "This API is intended to be a server-to-server endpoint. An on-campus\ \ middleware or system should consume this.\n\n**Use Case**\n\n Get a paginated\ \ list of mappings between edX users and remote user IDs for all users currently\n\ \ linked to the given backend.\n\n The list can be filtered by edx username\ \ or third party ids. The filter is limited by the max length of URL.\n \ \ It is suggested to query no more than 50 usernames or remote_ids in each\ \ request to stay within above\n limitation\n\n The page size can be\ \ changed by specifying `page_size` parameter in the request.\n\n**Example\ \ Requests**\n\n GET /api/third_party_auth/v0/providers/{provider_id}/users\n\ \n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1},{username2}\n\ \n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1}&usernames={username2}\n\ \n GET /api/third_party_auth/v0/providers/{provider_id}/users?remote_id={remote_id1},{remote_id2}\n\ \n GET /api/third_party_auth/v0/providers/{provider_id}/users?remote_id={remote_id1}&remote_id={remote_id2}\n\ \n GET /api/third_party_auth/v0/providers/{provider_id}/users?username={username1}&remote_id={remote_id1}\n\ \n**URL Parameters**\n\n * provider_id: The unique identifier of third_party_auth\ \ provider (e.g. \"saml-ubc\", \"oa2-google\", etc.\n This is not the\ \ same thing as the backend_name.). (Optional/future: We may also want to\ \ allow\n this to be an 'external domain' like 'ssl:MIT' so that this\ \ API can also search the legacy\n ExternalAuthMap table used by Standford/MIT)\n\ \n**Query Parameters**\n\n * remote_ids: Optional. List of comma separated\ \ remote (third party) user IDs to filter the result set.\n e.g. ?remote_ids=8721384623\n\ \n * usernames: Optional. List of comma separated edX usernames to filter\ \ the result set.\n e.g. ?usernames=bob123,jane456\n\n * page, page_size:\ \ Optional. Used for paging the result set, especially when getting\n \ \ an unfiltered list.\n\n**Response Values**\n\n If the request for information\ \ about the user is successful, an HTTP 200 \"OK\" response\n is returned.\n\ \n The HTTP 200 response has the following values:\n\n * count: The\ \ number of mappings for the backend.\n\n * next: The URI to the next page\ \ of the mappings.\n\n * previous: The URI to the previous page of the\ \ mappings.\n\n * num_pages: The number of pages listing the mappings.\n\ \n * results: A list of mappings returned. Each collection in the list\n\ \ contains these fields.\n\n * username: The edx username\n\n\ \ * remote_id: The Id from third party auth provider" tags: - third_party_auth parameters: - name: provider_id in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/UserMapping' /third_party_auth/v0/users/: get: operationId: third_party_auth_v0_users_list summary: Read provider information for a user. description: Allows reading the list of providers for a specified user. tags: - third_party_auth responses: '200': description: '' /third_party_auth/v0/users/{username}: get: operationId: third_party_auth_v0_users_read summary: Read provider information for a user. description: Allows reading the list of providers for a specified user. tags: - third_party_auth parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' /third_party_auth_context: get: operationId: third_party_auth_context_list description: 'Returns - dynamic registration fields - dynamic optional fields - the context for third party auth providers - user country code - the currently running pipeline.' tags: - third_party_auth_context responses: '200': description: '' /toggles/v0/state/: get: operationId: toggles_v0_state_list description: Expose toggle state report dict as a view. tags: - toggles responses: '200': description: '' /univertest/: get: operationId: univertest_list description: '' tags: - univertest responses: '200': description: '' /user/v1/account/password_reset/: get: operationId: user_v1_account_password_reset_list description: HTTP end-point for GETting a description of the password reset form. tags: - user responses: '200': description: '' /user/v1/account/password_reset/token/validate/: post: operationId: user_v1_account_password_reset_token_validate_create description: HTTP end-point to validate password reset token. tags: - user responses: '201': description: '' /user/v1/account/registration/: get: operationId: user_v1_account_registration_list description: HTTP end-points for creating a new user. tags: - user responses: '200': description: '' post: operationId: user_v1_account_registration_create summary: Create the user's account. description: 'You must send all required form fields with the request. You can optionally send a "course_id" param to indicate in analytics events that the user registered while enrolling in a particular course.' tags: - user responses: '201': description: '' /user/v1/accounts: get: operationId: user_v1_accounts_list description: 'GET /api/user/v1/accounts?username={username1,username2} GET /api/user/v1/accounts?email={user_email} (Staff Only) GET /api/user/v1/accounts?lms_user_id={lms_user_id} (Staff Only)' tags: - user responses: '200': description: '' /user/v1/accounts/cancel_retirement/: post: operationId: user_v1_accounts_cancel_retirement summary: POST /api/user/v1/accounts/cancel_retirement/ description: 'Cancels the retirement for a user''s account. This also handles the top level error handling, and permissions.' tags: - user responses: '201': description: '' /user/v1/accounts/deactivate_logout/: post: operationId: user_v1_accounts_deactivate_logout_create summary: POST /api/user/v1/accounts/deactivate_logout/ description: 'Marks the user as having no password set for deactivation purposes, and logs the user out.' tags: - user responses: '201': description: '' /user/v1/accounts/name_change/: post: operationId: user_v1_accounts_name_change_create summary: POST /api/user/v1/accounts/name_change/ description: "Request a profile name change. This creates a PendingNameChange\ \ to be verified later,\nrather than updating the user's profile name directly.\n\ \nExample request:\n {\n \"name\": \"Jon Doe\"\n }" tags: - user responses: '201': description: '' /user/v1/accounts/name_change/{username}/confirm/: post: operationId: user_v1_accounts_name_change_confirm summary: POST /api/user/v1/account/name_change/{username}/confirm description: Confirm a name change request for the specified user, and update their profile name. tags: - user parameters: - name: username in: path required: true schema: type: string responses: '201': description: '' /user/v1/accounts/replace_usernames/: post: operationId: user_v1_accounts_replace_usernames_create description: "POST /api/user/v1/accounts/replace_usernames/\n```\n{\n \"\ username_mappings\": [\n {\"current_username_1\": \"desired_username_1\"\ },\n {\"current_username_2\": \"desired_username_2\"}\n ]\n}\n```\n\ \n**POST Parameters**\n\nA POST request must include the following parameter.\n\ \n* username_mappings: Required. A list of objects that map the current username\ \ (key)\n to the desired username (value)\n\n**POST Response Values**\n\n\ As long as data validation passes, the request will return a 200 with a new\ \ mapping\nof old usernames (key) to new username (value)\n\n```\n{\n \"\ successful_replacements\": [\n {\"old_username_1\": \"new_username_1\"\ }\n ],\n \"failed_replacements\": [\n {\"old_username_2\": \"\ new_username_2\"}\n ]\n}\n```" tags: - user responses: '201': description: '' /user/v1/accounts/retire/: post: operationId: user_v1_accounts_post summary: POST /api/user/v1/accounts/retire/ description: "```\n{\n 'username': 'user_to_retire'\n}\n```\n\nRetires the\ \ user with the given username. This includes retiring this username, the\ \ associated email address,\nand any other PII associated with this user." tags: - user responses: '201': description: '' /user/v1/accounts/retire_misc/: post: operationId: user_v1_accounts_post summary: POST /api/user/v1/accounts/retire_misc/ description: "```\n{\n 'username': 'user_to_retire'\n}\n```\n\nRetires the\ \ user with the given username in the LMS." tags: - user responses: '201': description: '' /user/v1/accounts/retirement_cleanup/: post: operationId: user_v1_accounts_cleanup summary: POST /api/user/v1/accounts/retirement_cleanup/ description: "```\n{\n 'usernames': ['user1', 'user2', ...]\n}\n```\n\nDeletes\ \ a batch of retirement requests by username." tags: - user responses: '201': description: '' /user/v1/accounts/retirement_partner_report/: post: operationId: user_v1_accounts_retirement_partner_report_create summary: POST /api/user/v1/accounts/retirement_partner_report/ description: 'Returns the list of UserRetirementPartnerReportingStatus users that are not already being processed and updates their status to indicate they are currently being processed.' tags: - user responses: '201': description: '' put: operationId: user_v1_accounts_retirement_partner_report_update summary: PUT /api/user/v1/accounts/retirement_partner_report/ description: "```\n{\n 'username': 'user_to_retire'\n}\n```\n\nCreates a\ \ UserRetirementPartnerReportingStatus object for the given user\nas part\ \ of the retirement pipeline." tags: - user responses: '200': description: '' /user/v1/accounts/retirement_partner_report_cleanup/: post: operationId: user_v1_accounts_retirement_partner_cleanup summary: POST /api/user/v1/accounts/retirement_partner_report_cleanup/ description: '[{''original_username'': ''user1''}, {''original_username'': ''user2''}, ...] Deletes UserRetirementPartnerReportingStatus objects for a list of users that have been reported on.' tags: - user responses: '201': description: '' /user/v1/accounts/retirement_queue/: get: operationId: user_v1_accounts_retirement_queue summary: 'GET /api/user/v1/accounts/retirement_queue/ {''cool_off_days'': 7, ''states'': [''PENDING'', ''COMPLETE''], ''limit'': 500}' description: 'Returns the list of RetirementStatus users in the given states that were created in the retirement queue at least `cool_off_days` ago.' tags: - user responses: '200': description: '' /user/v1/accounts/retirements_by_status_and_date/: get: operationId: user_v1_accounts_retirements_by_status_and_date summary: 'GET /api/user/v1/accounts/retirements_by_status_and_date/ ?start_date=2018-09-05&end_date=2018-09-07&state=COMPLETE' description: 'Returns a list of UserRetirementStatusSerializer serialized RetirementStatus rows in the given state that were created in the retirement queue between the dates given. Date range is inclusive, so to get one day you would set both dates to that day.' tags: - user responses: '200': description: '' /user/v1/accounts/search_emails: post: operationId: user_v1_accounts_search_emails description: "POST /api/user/v1/accounts/search_emails\nContent Type: \"application/json\"\ \n{\n \"emails\": [\"edx@example.com\", \"staff@example.com\"]\n}" tags: - user responses: '201': description: '' /user/v1/accounts/update_retirement_status/: patch: operationId: user_v1_accounts_update_retirement_status_partial_update summary: PATCH /api/user/v1/accounts/update_retirement_status/ description: "```\n{\n 'username': 'user_to_retire',\n 'new_state': 'LOCKING_COMPLETE',\n\ \ 'response': 'User account locked and logged out.'\n}\n```\n\nUpdates\ \ the RetirementStatus row for the given user to the new\nstatus, and append\ \ any messages to the message log.\n\nNote that this implementation DOES NOT\ \ use the \"merge patch\" implementation seen in AccountViewSet.\nThe content\ \ type for this request is 'application/json'." tags: - user responses: '200': description: '' /user/v1/accounts/{username}: get: operationId: user_v1_accounts_read description: GET /api/user/v1/accounts/{username}/ tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' patch: operationId: user_v1_accounts_partial_update summary: PATCH /api/user/v1/accounts/{username}/ description: Note that this implementation is the "merge patch" implementation proposed in tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' /user/v1/accounts/{username}/deactivate/: post: operationId: user_v1_accounts_deactivate_create summary: POST /api/user/v1/accounts/{username}/deactivate/ description: Marks the user as having no password set for deactivation purposes. tags: - user parameters: - name: username in: path required: true schema: type: string responses: '201': description: '' /user/v1/accounts/{username}/image: post: operationId: user_v1_accounts_image_create description: POST /api/user/v1/accounts/{username}/image tags: - user parameters: - name: username in: path required: true schema: type: string responses: '201': description: '' delete: operationId: user_v1_accounts_image_delete description: DELETE /api/user/v1/accounts/{username}/image tags: - user parameters: - name: username in: path required: true schema: type: string responses: '204': description: '' /user/v1/accounts/{username}/retirement_status/: get: operationId: user_v1_accounts_retirement_status_read description: 'GET /api/user/v1/accounts/{username}/retirement_status/ Returns the RetirementStatus of a given user, or 404 if that row doesn''t exist.' tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' /user/v1/accounts/{username}/verification_status/: get: operationId: user_v1_accounts_verification_status_list description: IDVerification Status endpoint tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' /user/v1/accounts/{username}/verifications/: get: operationId: user_v1_accounts_verifications_list description: IDVerificationStatusDeetails endpoint to retrieve more details about ID Verification status tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/IDVerificationDetails' /user/v1/forum_roles/{name}/users/: get: operationId: user_v1_forum_roles_users_list description: Forum roles are represented by a list of user dicts tags: - user parameters: - name: name in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/user_api.User' /user/v1/me: get: operationId: user_v1_get description: GET /api/user/v1/me tags: - user responses: '200': description: '' /user/v1/preferences/email_opt_in/: post: operationId: user_v1_preferences_email_opt_in_create summary: Post function for updating the email opt in preference. description: 'Allows the modification or creation of the email opt in preference at an organizational level.' tags: - user responses: '201': description: '' /user/v1/preferences/time_zones/: get: operationId: user_v1_preferences_time_zones_list summary: '**Use Cases**' description: "Retrieves a list of all time zones, by default, or common time\ \ zones for country, if given\n\n The country is passed in as its ISO 3166-1\ \ Alpha-2 country code as an\n optional 'country_code' argument. The country\ \ code is also case-insensitive.\n\n**Example Requests**\n\n GET /api/user/v1/preferences/time_zones/\n\ \n GET /api/user/v1/preferences/time_zones/?country_code=FR\n\n**Example\ \ GET Response**\n\n If the request is successful, an HTTP 200 \"OK\" response\ \ is returned along with a\n list of time zone dictionaries for all time\ \ zones or just for time zones commonly\n used in a country, if given.\n\ \n Each time zone dictionary contains the following values.\n\n \ \ * time_zone: The name of the time zone.\n * description: The display\ \ version of the time zone" tags: - user responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/CountryTimeZone' /user/v1/preferences/{pref_key}/users/: get: operationId: user_v1_preferences_users_list description: DRF class for listing a user's preferences tags: - user parameters: - name: pref_key in: path required: true schema: type: string - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/user_api.User' /user/v1/preferences/{username}: get: operationId: user_v1_preferences_read description: GET /api/user/v1/preferences/{username}/ tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' patch: operationId: user_v1_preferences_partial_update description: PATCH /api/user/v1/preferences/{username}/ tags: - user parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' /user/v1/preferences/{username}/{preference_key}: get: operationId: user_v1_preferences_read description: GET /api/user/v1/preferences/{username}/{preference_key} tags: - user parameters: - name: username in: path required: true schema: type: string - name: preference_key in: path required: true schema: type: string responses: '200': description: '' put: operationId: user_v1_preferences_update description: PUT /api/user/v1/preferences/{username}/{preference_key} tags: - user parameters: - name: username in: path required: true schema: type: string - name: preference_key in: path required: true schema: type: string responses: '200': description: '' delete: operationId: user_v1_preferences_delete description: DELETE /api/user/v1/preferences/{username}/{preference_key} tags: - user parameters: - name: username in: path required: true schema: type: string - name: preference_key in: path required: true schema: type: string responses: '204': description: '' /user/v1/user_prefs/: get: operationId: user_v1_user_prefs_list description: DRF class for interacting with the UserPreference ORM tags: - user parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/UserPreference' /user/v1/user_prefs/{id}/: get: operationId: user_v1_user_prefs_read description: DRF class for interacting with the UserPreference ORM tags: - user parameters: - name: id in: path required: true description: A unique integer value identifying this user preference. schema: type: integer responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UserPreference' /user/v1/users/: get: operationId: user_v1_users_list description: DRF class for interacting with the User ORM object tags: - user parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/user_api.User' /user/v1/users/{id}/: get: operationId: user_v1_users_read description: DRF class for interacting with the User ORM object tags: - user parameters: - name: id in: path required: true description: A unique integer value identifying this пользователь. schema: type: integer responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/user_api.User' /user/v1/validation/registration: post: operationId: user_v1_validation_registration_create summary: POST /api/user/v1/validation/registration/ description: "Expects request of the form\n```\n{\n \"name\": \"Dan the Validator\"\ ,\n \"username\": \"mslm\",\n \"email\": \"mslm@gmail.com\",\n \"\ confirm_email\": \"mslm@gmail.com\",\n \"password\": \"password123\",\n\ \ \"country\": \"PK\"\n}\n```\nwhere each key is the appropriate form field\ \ name and the value is\nuser input. One may enter individual inputs if needed.\ \ Some inputs\ncan get extra verification checks if entered along with others,\n\ like when the password may not equal the username." tags: - user responses: '201': description: '' /user/v2/account/registration/: get: operationId: user_v2_account_registration_list description: HTTP end-points for creating a new user. tags: - user responses: '200': description: '' post: operationId: user_v2_account_registration_create summary: Create the user's account. description: 'You must send all required form fields with the request. You can optionally send a "course_id" param to indicate in analytics events that the user registered while enrolling in a particular course.' tags: - user responses: '201': description: '' /user/{api_version}/account/login_session/: get: operationId: user_account_login_session_list description: HTTP end-points for logging in users. tags: - user parameters: - name: api_version in: path required: true schema: type: string responses: '200': description: '' post: operationId: user_account_login_session_create summary: POST /user/{api_version}/account/login_session/ description: Returns 200 on success, and a detailed error message otherwise. tags: - user parameters: - name: api_version in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: email: type: string password: type: string responses: '200': description: '' content: application/json: schema: type: object properties: success: type: boolean value: type: string error_code: type: string '400': description: '' content: application/json: schema: type: object properties: success: type: boolean value: type: string error_code: type: string '403': description: '' content: application/json: schema: type: object properties: success: type: boolean value: type: string error_code: type: string /user_tours/discussion_tours/{tour_id}/: get: operationId: user_tours_discussion_tours_read description: Return a list of all tours in the database. tags: - user_tours parameters: - name: tour_id in: path required: true schema: type: string responses: '200': description: '' put: operationId: user_tours_discussion_tours_update description: Update an existing tour with the data in the request body. tags: - user_tours parameters: - name: tour_id in: path required: true schema: type: string responses: '200': description: '' /user_tours/v1/{username}: get: operationId: user_tours_v1_read summary: Retrieve the User Tour for the given username. description: "Allows staff users to retrieve any user's User Tour.\n\nReturns\n\ \ 200 with the following fields:\n course_home_tour_status (str):\ \ one of UserTour.CourseHomeChoices\n show_courseware_tour (bool):\ \ indicates if courseware tour should be shown.\n\n 400 if there is a not\ \ allowed request (requesting a user you don't have access to)\n 401 if\ \ unauthorized request\n 403 if tours are disabled\n 404 if the UserTour\ \ does not exist (shouldn't happen, but safety first)" tags: - user_tours parameters: - name: username in: path required: true schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UserTour' put: operationId: user_tours_v1_update description: Unsupported method. tags: - user_tours parameters: - name: username in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserTour' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UserTour' patch: operationId: user_tours_v1_partial_update summary: Patch the User Tour for the request.user. description: Supports updating the `course_home_tour_status` and `show_courseware_tour` fields. tags: - user_tours parameters: - name: username in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserTour' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/UserTour' /val/v0/videos/: get: operationId: val_v0_videos_list description: GETs or POST video objects tags: - val parameters: - name: page in: query required: false description: A page number within the paginated result set. schema: type: integer - name: page_size in: query required: false description: Number of results to return per page. schema: type: integer responses: '200': description: '' content: application/json: schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Video' post: operationId: val_v0_videos_create description: GETs or POST video objects tags: - val requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Video' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/Video' /val/v0/videos/course-transcripts/{course_id}/: get: operationId: val_v0_videos_course-transcripts_read description: Returns all transcript data for a course when given a course_id. tags: - val parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /val/v0/videos/courses/{course_id}/video-ids: get: operationId: val_v0_videos_courses_video-ids_list description: Returns all video_ids for a course when given a course_id. tags: - val parameters: - name: course_id in: path required: true schema: type: string responses: '200': description: '' /val/v0/videos/missing-hls/: post: operationId: val_v0_videos_missing-hls_create summary: 'Retrieve video IDs that are missing HLS profiles. This endpoint supports 2 types of input data:' description: "1. If we want a batch of video ids which are missing HLS profile\ \ irrespective of their courses, the request\n data should be in following\ \ format:\n {\n 'batch_size': 50,\n 'offset':\ \ 0\n }\n And response will be in following format:\n {\n\ \ 'videos': ['video_id1', 'video_id2', 'video_id3', ... , video_id50],\n\ \ 'total': 300,\n 'offset': 50,\n 'batch_size':\ \ 50\n }\n\n2. If we want all the videos which are missing HLS profiles\ \ in a set of specific courses, the request data\n should be in following\ \ format:\n {\n 'courses': [\n 'course_id1',\n\ \ 'course_id2',\n ...\n ]\n \ \ }\n And response will be in following format:\n {\n \ \ 'videos': ['video_id1', 'video_id2', 'video_id3', ...]\n }" tags: - val responses: '201': description: '' put: operationId: val_v0_videos_missing-hls_update summary: Update a single profile for a given video. description: "Example request data:\n ```\n {\n 'edx_video_id':\ \ '1234'\n 'profile': 'hls',\n 'encode_data': {\n \ \ 'url': 'foo.com/qwe.m3u8'\n 'file_size': 34\n 'bitrate':\ \ 12\n }\n }\n ```" tags: - val responses: '200': description: '' /val/v0/videos/status/: patch: operationId: val_v0_videos_status_partial_update description: Update the status of a video. tags: - val responses: '200': description: '' /val/v0/videos/video-images/update/: post: operationId: val_v0_videos_video-images_update_create description: Update a course video image instance with auto generated image names. tags: - val responses: '201': description: '' /val/v0/videos/video-transcripts/: post: operationId: val_v0_videos_video-transcripts_create description: Creates a video transcript instance with the given information. tags: - val responses: '201': description: '' patch: operationId: val_v0_videos_video-transcripts_partial_update description: Partially update a video transcript, only supporting updating the `provider` field. tags: - val responses: '200': description: '' delete: operationId: val_v0_videos_video-transcripts_delete description: Delete a video transcript instance with the given information. tags: - val responses: '204': description: '' /val/v0/videos/video-transcripts/create/: post: operationId: val_v0_videos_video-transcripts_create_create description: Creates a video transcript instance with the given information. tags: - val responses: '201': description: '' patch: operationId: val_v0_videos_video-transcripts_create_partial_update description: Partially update a video transcript, only supporting updating the `provider` field. tags: - val responses: '200': description: '' delete: operationId: val_v0_videos_video-transcripts_create_delete description: Delete a video transcript instance with the given information. tags: - val responses: '204': description: '' /val/v0/videos/{edx_video_id}: get: operationId: val_v0_videos_read description: Gets a video instance given its edx_video_id tags: - val parameters: - name: edx_video_id in: path required: true schema: type: string pattern: ^[a-zA-Z0-9\-_]*$ responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Video' put: operationId: val_v0_videos_update description: Gets a video instance given its edx_video_id tags: - val parameters: - name: edx_video_id in: path required: true schema: type: string pattern: ^[a-zA-Z0-9\-_]*$ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Video' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Video' patch: operationId: val_v0_videos_partial_update description: Gets a video instance given its edx_video_id tags: - val parameters: - name: edx_video_id in: path required: true schema: type: string pattern: ^[a-zA-Z0-9\-_]*$ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Video' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/Video' delete: operationId: val_v0_videos_delete description: Gets a video instance given its edx_video_id tags: - val parameters: - name: edx_video_id in: path required: true schema: type: string pattern: ^[a-zA-Z0-9\-_]*$ responses: '204': description: '' /xblock/v2/xblocks/{usage_key}/: get: operationId: xblock_v2_xblocks_read summary: Get metadata about the specified block. description: "Accepts the following query parameters:\n\n* \"include\": a comma-separated\ \ list of keys to include.\n Valid keys are \"index_dictionary\" and \"student_view_data\"\ ." tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}/fields/: get: operationId: xblock_v2_xblocks_fields_list description: retrieves the xblock, returning display_name, data, and metadata tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string responses: '200': description: '' post: operationId: xblock_v2_xblocks_fields_create description: edits the xblock, saving changes to data and metadata only (display_name included in metadata) tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string responses: '201': description: '' /xblock/v2/xblocks/{usage_key}/handler_url/{handler_name}/: get: operationId: xblock_v2_xblocks_handler_url_read summary: 'Get an absolute URL which can be used (without any authentication) to call the given XBlock handler.' description: The URL will expire but is guaranteed to be valid for a minimum of 2 days. tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: handler_name in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}/olx/: get: operationId: xblock_v2_xblocks_olx_list description: Get the OLX (XML serialization) of the specified XBlock tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}/view/{view_name}/: get: operationId: xblock_v2_xblocks_view_read description: Get the HTML, JS, and CSS needed to render the given XBlock. tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: view_name in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}@{version}/: get: operationId: xblock_v2_xblocks_read summary: Get metadata about the specified block. description: "Accepts the following query parameters:\n\n* \"include\": a comma-separated\ \ list of keys to include.\n Valid keys are \"index_dictionary\" and \"student_view_data\"\ ." tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}@{version}/fields/: get: operationId: xblock_v2_xblocks_fields_list description: retrieves the xblock, returning display_name, data, and metadata tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string responses: '200': description: '' post: operationId: xblock_v2_xblocks_fields_create description: edits the xblock, saving changes to data and metadata only (display_name included in metadata) tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string responses: '201': description: '' /xblock/v2/xblocks/{usage_key}@{version}/handler_url/{handler_name}/: get: operationId: xblock_v2_xblocks_handler_url_read summary: 'Get an absolute URL which can be used (without any authentication) to call the given XBlock handler.' description: The URL will expire but is guaranteed to be valid for a minimum of 2 days. tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string - name: handler_name in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}@{version}/olx/: get: operationId: xblock_v2_xblocks_olx_list description: Get the OLX (XML serialization) of the specified XBlock tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string responses: '200': description: '' /xblock/v2/xblocks/{usage_key}@{version}/view/{view_name}/: get: operationId: xblock_v2_xblocks_view_read description: Get the HTML, JS, and CSS needed to render the given XBlock. tags: - xblock parameters: - name: usage_key in: path required: true schema: type: string - name: version in: path required: true schema: type: string - name: view_name in: path required: true schema: type: string responses: '200': description: '' components: schemas: Bookmark: required: - course_id - usage_id type: object properties: id: title: Id description: 'The identifier string for the bookmark: {user_id},{usage_id}.' type: string readOnly: true course_id: title: Course id description: The identifier string of the bookmark's course. type: string usage_id: title: Usage id description: The identifier string of the bookmark's XBlock. type: string block_type: title: Block type type: string readOnly: true created: title: Создано type: string format: date-time readOnly: true CohortUsersAPI: required: - username type: object properties: username: title: Имя пользователя description: Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 email: title: Адрес электронной почты type: string format: email maxLength: 254 name: title: Name type: string readOnly: true commerce.CourseMode: required: - name - price type: object properties: name: title: Name type: string minLength: 1 currency: title: Currency type: string maxLength: 8 minLength: 1 price: title: Price type: integer sku: title: SKU description: 'НЕОБЯЗАТЕЛЬНО: поле SKU (единица учёта запасов) для внешнего сервиса электронной коммерции. Оставьте пустым, если курс ещё не был добавлен в сервис электронной коммерции.' type: string maxLength: 255 nullable: true bulk_sku: title: Bulk SKU description: Это основная часть SKU (единица учёта запасов) этого режима в службе внешней электронной коммерции. type: string maxLength: 255 nullable: true expires: title: Expires type: string format: date-time nullable: true android_sku: title: Android SKU description: 'OPTIONAL: This is the Android SKU registered on play store for this mode of the course. Leave this blank if the course has not yet been migrated to the ecommerce service.' type: string maxLength: 255 nullable: true ios_sku: title: IOS SKU description: 'OPTIONAL: This is the iOS SKU registered on app store for this mode of the course. Leave this blank if the course has not yet been migrated to the ecommerce service.' type: string maxLength: 255 nullable: true commerce.Course: required: - id - modes type: object properties: id: title: Id type: string minLength: 1 name: title: Name type: string readOnly: true minLength: 1 verification_deadline: title: Verification deadline type: string format: date-time nullable: true modes: type: array items: $ref: '#/components/schemas/commerce.CourseMode' CourseDeadlinesMobile: type: object properties: dates_banner_info: title: Dates banner info type: string readOnly: true has_ended: title: Has ended type: string readOnly: true CourseTab: required: - tab_id type: object properties: tab_id: title: Tab id type: string minLength: 1 title: title: Title type: string readOnly: true url: title: Url type: string readOnly: true CourseModeSerrializer: required: - slug - name type: object properties: slug: title: Slug type: string minLength: 1 name: title: Name type: string minLength: 1 CourseHomeMetadata: required: - celebrations - course_access - studio_access - course_id - is_enrolled - is_self_paced - is_staff - number - org - original_user_is_staff - start - tabs - title - username - user_timezone - can_view_certificate - course_modes - is_new_discussion_sidebar_view_enabled - has_course_author_access type: object properties: verified_mode: title: Verified mode type: string readOnly: true celebrations: title: Celebrations type: object additionalProperties: type: string nullable: true course_access: title: Course access type: object additionalProperties: type: string nullable: true studio_access: title: Studio access type: boolean course_id: title: Course id type: string minLength: 1 is_enrolled: title: Is enrolled type: boolean is_self_paced: title: Is self paced type: boolean is_staff: title: Is staff type: boolean number: title: Number type: string minLength: 1 org: title: Org type: string minLength: 1 original_user_is_staff: title: Original user is staff type: boolean start: title: Start type: string format: date-time tabs: type: array items: $ref: '#/components/schemas/CourseTab' title: title: Title type: string minLength: 1 username: title: Username type: string minLength: 1 user_timezone: title: User timezone type: string minLength: 1 can_view_certificate: title: Can view certificate type: boolean course_modes: type: array items: $ref: '#/components/schemas/CourseModeSerrializer' is_new_discussion_sidebar_view_enabled: title: Is new discussion sidebar view enabled type: boolean has_course_author_access: title: Has course author access type: boolean DateSummary: required: - complete - date - date_type - description - link_text - title - extra_info type: object properties: assignment_type: title: Assignment type type: string minLength: 1 complete: title: Complete type: boolean nullable: true date: title: Date type: string format: date-time date_type: title: Date type type: string minLength: 1 description: title: Description type: string minLength: 1 learner_has_access: title: Learner has access type: string readOnly: true link: title: Link type: string readOnly: true link_text: title: Link text type: string minLength: 1 title: title: Title type: string minLength: 1 extra_info: title: Extra info type: string minLength: 1 first_component_block_id: title: First component block id type: string readOnly: true DatesTab: required: - course_date_blocks - has_ended - learner_is_full_access - user_timezone type: object properties: dates_banner_info: title: Dates banner info type: string readOnly: true course_date_blocks: type: array items: $ref: '#/components/schemas/DateSummary' has_ended: title: Has ended type: boolean learner_is_full_access: title: Learner is full access type: boolean user_timezone: title: User timezone type: string minLength: 1 CourseBlock: type: object properties: blocks: title: Blocks type: string readOnly: true CertificateData: required: - cert_status - cert_web_view_url - download_url - certificate_available_date type: object properties: cert_status: title: Cert status type: string minLength: 1 cert_web_view_url: title: Cert web view url type: string minLength: 1 download_url: title: Download url type: string minLength: 1 certificate_available_date: title: Certificate available date type: string format: date-time CourseGoals: required: - selected_goal type: object properties: selected_goal: title: Selected goal type: object additionalProperties: type: string nullable: true weekly_learning_goal_enabled: title: Weekly learning goal enabled type: boolean default: false CourseTool: required: - analytics_id - title type: object properties: analytics_id: title: Analytics id type: string minLength: 1 title: title: Title type: string minLength: 1 url: title: Url type: string readOnly: true DatesWidget: required: - course_date_blocks - dates_tab_link - user_timezone type: object properties: course_date_blocks: type: array items: $ref: '#/components/schemas/DateSummary' dates_tab_link: title: Dates tab link type: string minLength: 1 user_timezone: title: User timezone type: string minLength: 1 EnrollAlert: required: - can_enroll - extra_text type: object properties: can_enroll: title: Can enroll type: boolean extra_text: title: Extra text type: string minLength: 1 ResumeCourse: required: - has_visited_course - url type: object properties: has_visited_course: title: Has visited course type: boolean url: title: Url type: string format: uri minLength: 1 OutlineTab: required: - access_expiration - cert_data - course_blocks - course_goals - course_tools - dates_widget - enroll_alert - enrollment_mode - enable_proctored_exams - handouts_html - has_ended - offer - resume_course - welcome_message_html - user_has_passing_grade type: object properties: dates_banner_info: title: Dates banner info type: string readOnly: true verified_mode: title: Verified mode type: string readOnly: true access_expiration: title: Access expiration type: object additionalProperties: type: string nullable: true cert_data: $ref: '#/components/schemas/CertificateData' course_blocks: $ref: '#/components/schemas/CourseBlock' course_goals: $ref: '#/components/schemas/CourseGoals' course_tools: type: array items: $ref: '#/components/schemas/CourseTool' dates_widget: $ref: '#/components/schemas/DatesWidget' enroll_alert: $ref: '#/components/schemas/EnrollAlert' enrollment_mode: title: Enrollment mode type: string minLength: 1 enable_proctored_exams: title: Enable proctored exams type: boolean handouts_html: title: Handouts html type: string minLength: 1 has_ended: title: Has ended type: boolean offer: title: Offer type: object additionalProperties: type: string nullable: true resume_course: $ref: '#/components/schemas/ResumeCourse' welcome_message_html: title: Welcome message html type: string minLength: 1 user_has_passing_grade: title: User has passing grade type: boolean CourseGrade: required: - letter_grade - percent - is_passing type: object properties: letter_grade: title: Letter grade type: string minLength: 1 percent: title: Percent type: number is_passing: title: Is passing type: boolean GradingPolicy: required: - grade_range type: object properties: assignment_policies: title: Assignment policies type: string readOnly: true grade_range: title: Grade range type: object additionalProperties: type: string nullable: true SubsectionScores: required: - assignment_type - display_name - has_graded_assignment - num_points_earned - num_points_possible - percent_graded - show_correctness type: object properties: assignment_type: title: Assignment type type: string minLength: 1 block_key: title: Block key type: string readOnly: true display_name: title: Display name type: string minLength: 1 has_graded_assignment: title: Has graded assignment type: boolean override: title: Override type: string readOnly: true learner_has_access: title: Learner has access type: string readOnly: true num_points_earned: title: Num points earned type: number num_points_possible: title: Num points possible type: number percent_graded: title: Percent graded type: number problem_scores: title: Problem scores type: string readOnly: true show_correctness: title: Show correctness type: string minLength: 1 show_grades: title: Show grades type: string readOnly: true url: title: Url type: string readOnly: true SectionScores: required: - display_name - subsections type: object properties: display_name: title: Display name type: string minLength: 1 subsections: type: array items: $ref: '#/components/schemas/SubsectionScores' VerificationData: required: - link - status - status_date type: object properties: link: title: Link type: string format: uri minLength: 1 status: title: Status type: string minLength: 1 status_date: title: Status date type: string format: date-time ProgressTab: required: - access_expiration - certificate_data - completion_summary - course_grade - credit_course_requirements - end - enrollment_mode - grading_policy - has_scheduled_content - section_scores - studio_url - username - user_has_passing_grade - verification_data - disable_progress_graph type: object properties: verified_mode: title: Verified mode type: string readOnly: true access_expiration: title: Access expiration type: object additionalProperties: type: string nullable: true certificate_data: $ref: '#/components/schemas/CertificateData' completion_summary: title: Completion summary type: object additionalProperties: type: string nullable: true course_grade: $ref: '#/components/schemas/CourseGrade' credit_course_requirements: title: Credit course requirements type: object additionalProperties: type: string nullable: true end: title: End type: string format: date-time enrollment_mode: title: Enrollment mode type: string minLength: 1 grading_policy: $ref: '#/components/schemas/GradingPolicy' has_scheduled_content: title: Has scheduled content type: boolean section_scores: type: array items: $ref: '#/components/schemas/SectionScores' studio_url: title: Studio url type: string minLength: 1 username: title: Username type: string minLength: 1 user_has_passing_grade: title: User has passing grade type: boolean verification_data: $ref: '#/components/schemas/VerificationData' disable_progress_graph: title: Disable progress graph type: boolean Lti: required: - lti_config type: object properties: lti_1p1_client_key: title: Lti 1p1 client key description: Client key provided by the LTI tool provider. type: string maxLength: 255 lti_1p1_client_secret: title: Lti 1p1 client secret description: Client secret provided by the LTI tool provider. type: string maxLength: 255 lti_1p1_launch_url: title: Lti 1p1 launch url description: The URL of the external tool that initiates the launch. type: string maxLength: 255 version: title: Version type: string enum: - lti_1p1 - lti_1p3 lti_config: title: Lti config type: object CourseLiveConfiguration: required: - provider_type type: object properties: course_key: title: Course key type: string readOnly: true minLength: 1 provider_type: title: LTI provider description: The LTI provider's id type: string maxLength: 50 minLength: 1 enabled: title: Enabled description: If disabled, the LTI in the associated course will be disabled. type: boolean lti_configuration: $ref: '#/components/schemas/Lti' pii_sharing_allowed: title: Pii sharing allowed type: string readOnly: true free_tier: title: Free tier description: True, if LTI credential are provided by Org globally type: boolean course_modes.CourseMode: required: - course_id - mode_slug - mode_display_name - currency type: object properties: course_id: title: Course id type: string minLength: 1 mode_slug: title: Mode slug type: string minLength: 1 mode_display_name: title: Mode display name type: string minLength: 1 min_price: title: Min price type: integer currency: title: Currency type: string minLength: 1 expiration_datetime: title: Expiration datetime type: string format: date-time expiration_datetime_is_explicit: title: Expiration datetime is explicit type: boolean description: title: Description type: string minLength: 1 sku: title: Sku type: string minLength: 1 bulk_sku: title: Bulk sku type: string minLength: 1 _AbsolutMedia: type: object properties: uri: title: Uri type: string readOnly: true uri_absolute: title: Uri absolute type: string readOnly: true _Media: type: object properties: uri: title: Uri type: string readOnly: true Image: required: - raw - small - large type: object properties: raw: title: Raw type: string format: uri minLength: 1 small: title: Small type: string format: uri minLength: 1 large: title: Large type: string format: uri minLength: 1 _CourseApiMediaCollection: required: - banner_image - course_image - course_video - image type: object properties: banner_image: $ref: '#/components/schemas/_AbsolutMedia' course_image: $ref: '#/components/schemas/_Media' course_video: $ref: '#/components/schemas/_Media' image: $ref: '#/components/schemas/Image' Course: required: - effort - end - enrollment_start - enrollment_end - id - media - name - number - org - short_description - start - start_display - start_type - pacing - mobile_available - invitation_only type: object properties: blocks_url: title: Blocks url type: string readOnly: true effort: title: Effort type: string minLength: 1 end: title: End type: string format: date-time enrollment_start: title: Enrollment start type: string format: date-time enrollment_end: title: Enrollment end type: string format: date-time id: title: Id type: string minLength: 1 media: $ref: '#/components/schemas/_CourseApiMediaCollection' name: title: Name type: string minLength: 1 number: title: Number type: string minLength: 1 org: title: Org type: string minLength: 1 short_description: title: Short description type: string minLength: 1 start: title: Start type: string format: date-time start_display: title: Start display type: string minLength: 1 start_type: title: Start type type: string minLength: 1 pacing: title: Pacing type: string minLength: 1 mobile_available: title: Mobile available type: boolean hidden: title: Hidden type: string readOnly: true invitation_only: title: Invitation only type: boolean course_id: title: Course id type: string readOnly: true minLength: 1 CourseDetail: required: - effort - end - enrollment_start - enrollment_end - id - media - name - number - org - short_description - start - start_display - start_type - pacing - mobile_available - invitation_only type: object properties: blocks_url: title: Blocks url type: string readOnly: true effort: title: Effort type: string minLength: 1 end: title: End type: string format: date-time enrollment_start: title: Enrollment start type: string format: date-time enrollment_end: title: Enrollment end type: string format: date-time id: title: Id type: string minLength: 1 media: $ref: '#/components/schemas/_CourseApiMediaCollection' name: title: Name type: string minLength: 1 number: title: Number type: string minLength: 1 org: title: Org type: string minLength: 1 short_description: title: Short description type: string minLength: 1 start: title: Start type: string format: date-time start_display: title: Start display type: string minLength: 1 start_type: title: Start type type: string minLength: 1 pacing: title: Pacing type: string minLength: 1 mobile_available: title: Mobile available type: boolean hidden: title: Hidden type: string readOnly: true invitation_only: title: Invitation only type: boolean course_id: title: Course id type: string readOnly: true minLength: 1 overview: title: Overview type: string readOnly: true courseware_api: type: object properties: uri: title: Uri type: string readOnly: true CourseProgram: required: - slug - title - url - uuid type: object properties: progress: title: Progress type: string readOnly: true slug: title: Slug type: string minLength: 1 title: title: Title type: string minLength: 1 url: title: Url type: string format: uri minLength: 1 uuid: title: Uuid type: string format: uuid CourseInfo: required: - access_expiration - content_type_gating_enabled - course_goals - effort - end - enrollment - enrollment_start - enrollment_end - entrance_exam_data - id - license - language - media - name - offer - related_programs - short_description - start - start_display - start_type - pacing - user_timezone - show_calculator - can_access_proctored_exams - notes - marketing_url - celebrations - user_has_passing_grade - course_exit_page_is_active - certificate_data - verify_identity_url - verification_status - linkedin_add_to_profile_url - is_integrity_signature_enabled - user_needs_integrity_signature - learning_assistant_enabled type: object properties: access_expiration: title: Access expiration type: object additionalProperties: type: string nullable: true content_type_gating_enabled: title: Content type gating enabled type: boolean course_goals: $ref: '#/components/schemas/CourseGoals' effort: title: Effort type: string minLength: 1 end: title: End type: string format: date-time enrollment: title: Enrollment type: object additionalProperties: type: string nullable: true enrollment_start: title: Enrollment start type: string format: date-time enrollment_end: title: Enrollment end type: string format: date-time entrance_exam_data: title: Entrance exam data type: object additionalProperties: type: string nullable: true id: title: Id type: string minLength: 1 license: title: License type: string minLength: 1 language: title: Language type: string minLength: 1 nullable: true media: $ref: '#/components/schemas/courseware_api' name: title: Name type: string minLength: 1 offer: title: Offer type: object additionalProperties: type: string nullable: true related_programs: type: array items: $ref: '#/components/schemas/CourseProgram' short_description: title: Short description type: string minLength: 1 start: title: Start type: string format: date-time start_display: title: Start display type: string minLength: 1 start_type: title: Start type type: string minLength: 1 pacing: title: Pacing type: string minLength: 1 user_timezone: title: User timezone type: string minLength: 1 show_calculator: title: Show calculator type: boolean can_access_proctored_exams: title: Can access proctored exams type: boolean notes: title: Notes type: object additionalProperties: type: string nullable: true marketing_url: title: Marketing url type: string minLength: 1 celebrations: title: Celebrations type: object additionalProperties: type: string nullable: true user_has_passing_grade: title: User has passing grade type: boolean course_exit_page_is_active: title: Course exit page is active type: boolean certificate_data: $ref: '#/components/schemas/CertificateData' verify_identity_url: title: Verify identity url type: string format: uri minLength: 1 verification_status: title: Verification status type: string minLength: 1 linkedin_add_to_profile_url: title: Linkedin add to profile url type: string format: uri minLength: 1 is_integrity_signature_enabled: title: Is integrity signature enabled type: boolean user_needs_integrity_signature: title: User needs integrity signature type: boolean learning_assistant_enabled: title: Learning assistant enabled type: boolean CreditCourse: required: - course_key type: object properties: course_key: title: Course key type: string enabled: title: Enabled type: boolean CreditEligibility: required: - username type: object properties: username: title: Username type: string maxLength: 255 minLength: 1 course_key: title: Course key type: string readOnly: true deadline: title: Deadline description: Крайний срок подачи заявки и оформления кредита. type: string format: date-time CreditProvider: required: - id - display_name - url - status_url - description type: object properties: id: title: Id type: string minLength: 1 display_name: title: Display name description: Видимое пользователям название организации-кредитора type: string maxLength: 255 minLength: 1 url: title: Url type: string format: uri minLength: 1 status_url: title: Status url type: string format: uri minLength: 1 description: title: Description type: string minLength: 1 enable_integration: title: Enable integration description: При значении «true» кредитор будет получать автоматические оповещения о том, что пользователь запрашивает кредит. Чтобы эта функция работала, в настройках безопасной авторизации необходимо задать секретный ключ для кредитора. type: boolean fulfillment_instructions: title: Fulfillment instructions description: Текст или HTML-код с дальнейшими инструкциями по оформлению зачётных единиц. Он появится на странице с квитанцией только после оплаты. type: string nullable: true thumbnail_url: title: Thumbnail url description: Ссылка на миниатюру образовательной организации, предоставляющей зачётные баллы. type: string format: uri maxLength: 255 minLength: 1 BlackoutDate: required: - start - end type: object properties: start: title: Start description: The ISO 8601 timestamp for the start of the blackout period type: string format: date-time end: title: End description: The ISO 8601 timestamp for the end of the blackout period type: string format: date-time ReasonCodeSeralizer: required: - code - label type: object properties: code: title: Code description: A code for the an edit or close reason type: string minLength: 1 label: title: Label description: A user-friendly name text for the close or edit reason type: string minLength: 1 CourseMetadataSerailizer: required: - id - blackouts - thread_list_url - following_thread_list_url - topics_url - allow_anonymous - allow_anonymous_to_peers - user_roles - user_is_privileged - provider - enable_in_context - group_at_subsection - post_close_reasons - edit_reasons type: object properties: id: title: Id description: The identifier of the course type: string blackouts: description: A list of objects representing blackout periods (during which discussions are read-only except for privileged users). type: array items: $ref: '#/components/schemas/BlackoutDate' thread_list_url: title: Thread list url description: The URL of the list of all threads in the course. type: string format: uri minLength: 1 following_thread_list_url: title: Following thread list url description: thread_list_url with parameter following=True type: string format: uri minLength: 1 topics_url: title: Topics url description: The URL of the topic listing for the course. type: string format: uri minLength: 1 allow_anonymous: title: Allow anonymous description: A boolean indicating whether anonymous posts are allowed or not. type: boolean allow_anonymous_to_peers: title: Allow anonymous to peers description: A boolean indicating whether posts anonymous to peers are allowed or not. type: boolean user_roles: description: A list of all the roles the requesting user has for this course. type: array items: type: string minLength: 1 user_is_privileged: title: User is privileged description: A boolean indicating if the current user has a privileged role type: boolean provider: title: Provider description: The discussion provider used by this course type: string minLength: 1 enable_in_context: title: Enable in context description: A boolean indicating whether in-context discussion is enabled for the course type: boolean group_at_subsection: title: Group at subsection description: A boolean indicating whether discussions should be grouped at subsection type: boolean post_close_reasons: description: A list of reasons that can be specified by moderators for closing a post type: array items: $ref: '#/components/schemas/ReasonCodeSeralizer' edit_reasons: description: A list of reasons that can be specified by moderators for editing a post, response, or comment type: array items: $ref: '#/components/schemas/ReasonCodeSeralizer' DiscussionTopicSerializerV2: type: object properties: id: title: Id description: Provider-specific unique id for the topic type: string readOnly: true minLength: 1 usage_key: title: Usage key description: Usage context for the topic type: string readOnly: true minLength: 1 name: title: Name description: Topic name type: string readOnly: true minLength: 1 thread_counts: title: Thread counts description: Mapping of thread counts by type of thread type: object readOnly: true enabled_in_context: title: Enabled in context description: Whether this topic is enabled in its context type: boolean readOnly: true VerifiedName: required: - username - verified_name - profile_name type: object properties: id: title: ID type: integer readOnly: true created: title: Создано type: string format: date-time readOnly: true username: title: Username type: string minLength: 1 verified_name: title: Verified name type: string minLength: 1 profile_name: title: Profile name type: string minLength: 1 verification_attempt_id: title: Verification attempt id type: integer nullable: true verification_attempt_status: title: Verification attempt status type: string minLength: 1 nullable: true proctored_exam_attempt_id: title: Proctored exam attempt id type: integer nullable: true platform_verification_attempt_id: title: Platform verification attempt id type: integer nullable: true platform_verification_attempt_status: title: Platform verification attempt status type: string minLength: 1 nullable: true status: title: Status type: string minLength: 1 nullable: true UpdateVerifiedName: required: - username - status type: object properties: id: title: ID type: integer readOnly: true created: title: Создано type: string format: date-time readOnly: true username: title: Username type: string minLength: 1 verified_name: title: Verified name type: string minLength: 1 profile_name: title: Profile name type: string minLength: 1 verification_attempt_id: title: Verification attempt id type: integer nullable: true verification_attempt_status: title: Verification attempt status type: string minLength: 1 nullable: true proctored_exam_attempt_id: title: Proctored exam attempt id type: integer nullable: true platform_verification_attempt_id: title: Platform verification attempt id type: integer nullable: true platform_verification_attempt_status: title: Platform verification attempt status type: string minLength: 1 nullable: true status: title: Status type: string minLength: 1 VerifiedNameConfig: required: - username type: object properties: change_date: title: Change date type: string format: date-time readOnly: true username: title: Username type: string minLength: 1 use_verified_name_for_certs: title: Use verified name for certs type: boolean nullable: true CourseEnrollmentsApiList: required: - course_id type: object properties: created: title: Created type: string format: date-time readOnly: true nullable: true mode: title: Mode type: string maxLength: 100 minLength: 1 is_active: title: Is active type: boolean user: title: User type: string readOnly: true course_id: title: Course id type: string minLength: 1 CourseEntitlement: required: - user - course_uuid - mode type: object properties: user: title: User type: string pattern: ^[\w.@+-]+$ uuid: title: Uuid type: string format: uuid readOnly: true course_uuid: title: Course uuid description: UUID for the Course, not the Course Run type: string format: uuid enrollment_course_run: title: Enrollment course run type: string readOnly: true minLength: 1 expired_at: title: Expired at description: The date that an entitlement expired, if NULL the entitlement has not expired. type: string format: date-time nullable: true created: title: Создано type: string format: date-time readOnly: true modified: title: Изменено type: string format: date-time readOnly: true mode: title: Mode description: The mode of the Course that will be applied on enroll. type: string maxLength: 100 minLength: 1 refund_locked: title: Refund locked type: boolean order_number: title: Order number type: string maxLength: 128 minLength: 1 nullable: true support_details: title: Support details type: string readOnly: true ExperimentData: required: - experiment_id - key - value type: object properties: id: title: ID type: integer readOnly: true experiment_id: title: Experiment ID type: integer maximum: 65535 minimum: 0 user: title: User type: string pattern: ^[\w.@+-]+$ readOnly: true default: '' key: title: Key type: string maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 created: title: Создано type: string format: date-time readOnly: true modified: title: Изменено type: string format: date-time readOnly: true ExperimentDataCreate: required: - experiment_id - key - value type: object properties: id: title: ID type: integer readOnly: true experiment_id: title: Experiment ID type: integer maximum: 65535 minimum: 0 user: title: User type: string pattern: ^[\w.@+-]+$ default: '' key: title: Key type: string maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 created: title: Создано type: string format: date-time readOnly: true modified: title: Изменено type: string format: date-time readOnly: true ExperimentKeyValue: required: - experiment_id - key - value type: object properties: id: title: ID type: integer readOnly: true experiment_id: title: Experiment ID type: integer maximum: 65535 minimum: 0 key: title: Key type: string maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 created: title: Создано type: string format: date-time readOnly: true modified: title: Изменено type: string format: date-time readOnly: true ReportDownload: description: Report Download required: - url - name - link type: object properties: url: title: Url description: URL from which report can be downloaded. type: string format: uri minLength: 1 name: title: Name description: Name of report. type: string minLength: 1 link: title: Link description: HTML anchor tag that contains the name and link. type: string minLength: 1 ReportDownloadsList: required: - downloads type: object properties: downloads: description: List of report downloads type: array items: $ref: '#/components/schemas/ReportDownload' ProblemResponseReportPostParams: required: - problem_locations type: object properties: problem_locations: description: 'A list of usage keys for the blocks to include in the report. ' type: array items: description: A usage key location for a section or a problem. If the location is a block that contains other blocks, (such as the course, section, subsection, or unit blocks) then all blocks under that block will be included in the report. type: string minLength: 1 problem_types_filter: description: 'A list of problem/block types to generate the report for. This field can be omitted if the report should include details of allblock types. ' type: array items: type: string minLength: 1 ProblemResponsesReportStatus: required: - status - task_id type: object properties: status: title: Status description: User-friendly text describing current status of report generation. type: string minLength: 1 task_id: title: Task id description: A unique id for the report generation task. It can be used to query the latest report generation status. type: string format: uuid InstructorTask: required: - status - task_type - task_id - created - task_input - requester - task_state - duration_sec - task_message type: object properties: status: title: Status description: Current status of task. type: string minLength: 1 task_type: title: Task type description: Identifies the kind of task being performed, e.g. rescoring. type: string minLength: 1 task_id: title: Task id description: The celery ID for the task. type: string minLength: 1 created: title: Created description: The date and time when the task was created. type: string format: date-time task_input: title: Task input description: The input parameters for the task. The format and content of this data will depend on the kind of task being performed. For instanceit may contain the problem locations for a problem resources task. type: object additionalProperties: type: string nullable: true requester: title: Requester description: The username of the user who initiated this task. type: string minLength: 1 task_state: title: Task state description: The last knows state of the celery task. type: string minLength: 1 duration_sec: title: Duration sec description: Task duration information, if known type: string minLength: 1 task_message: title: Task message description: User-friendly task status information, if available. type: string minLength: 1 InstructorTasksList: required: - tasks type: object properties: tasks: description: List of instructor tasks. type: array items: $ref: '#/components/schemas/InstructorTask' ScheduledBulkEmail: required: - task - task_due type: object properties: id: title: ID type: integer readOnly: true course_email: title: Course email type: string readOnly: true task: title: Task type: integer task_due: title: Task due type: string format: date-time LtiAgsLineItem: required: - resourceId - scoreMaximum - label type: object properties: id: title: Id type: string readOnly: true resourceId: title: Resourceid type: string minLength: 1 scoreMaximum: title: Scoremaximum type: integer label: title: Label type: string maxLength: 100 minLength: 1 tag: title: Tag type: string maxLength: 50 resourceLinkId: title: Resourcelinkid type: string startDateTime: title: Startdatetime type: string format: date-time endDateTime: title: Enddatetime type: string format: date-time GCMDevice: required: - registration_id type: object properties: id: title: ID type: integer name: title: Имя type: string maxLength: 255 nullable: true registration_id: title: Registration ID type: string minLength: 1 device_id: title: Device id description: 'ANDROID_ID / TelephonyManager.getDeviceId() (e.g: 0x01)' type: integer nullable: true active: title: Is active description: Inactive devices will not be sent notifications type: boolean date_created: title: Creation date type: string format: date-time readOnly: true nullable: true cloud_message_type: title: Cloud Message Type description: You should choose FCM, GCM is deprecated type: string enum: - FCM - GCM application_id: title: Application ID description: Opaque application identity, should be filled in for multiple key/certificate access type: string maxLength: 64 nullable: true mobile_api.User: required: - username type: object properties: id: title: ID type: integer readOnly: true username: title: Имя пользователя description: Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 email: title: Адрес электронной почты type: string format: email maxLength: 254 name: title: Name type: string readOnly: true course_enrollments: title: Course enrollments type: string readOnly: true CourseEnrollment: type: object properties: audit_access_expires: title: Audit access expires type: string readOnly: true created: title: Created type: string format: date-time readOnly: true nullable: true mode: title: Mode type: string maxLength: 100 minLength: 1 is_active: title: Is active type: boolean course: title: Course type: string readOnly: true certificate: title: Certificate type: string readOnly: true course_modes: title: Course modes type: string readOnly: true Notification: required: - app_name - notification_type type: object properties: id: title: ID type: integer readOnly: true app_name: title: App name type: string maxLength: 64 minLength: 1 notification_type: title: Notification type type: string maxLength: 64 minLength: 1 content_context: title: Content context type: object content: title: Content type: string readOnly: true content_url: title: Content url type: string format: uri maxLength: 200 nullable: true course_id: title: Course id type: string maxLength: 255 nullable: true last_read: title: Last read type: string format: date-time nullable: true last_seen: title: Last seen type: string format: date-time nullable: true created: title: Создано type: string format: date-time readOnly: true CourseOverview: required: - id type: object properties: id: title: Id type: string maxLength: 255 minLength: 1 display_name: title: Display name type: string minLength: 1 nullable: true NotificationCourseEnrollment: required: - course type: object properties: course: $ref: '#/components/schemas/CourseOverview' Organization: required: - name - short_name type: object properties: id: title: ID type: integer readOnly: true created: title: Создано type: string format: date-time readOnly: true modified: title: Изменено type: string format: date-time readOnly: true name: title: Name type: string maxLength: 255 minLength: 1 short_name: title: Short Name description: Unique, short string identifier for organization. Please do not use spaces or special characters. Only allowed special characters are period (.), hyphen (-) and underscore (_). type: string maxLength: 255 minLength: 1 description: title: Description type: string nullable: true logo: title: Logo description: Please add only .PNG files for logo images. This logo will be used on certificates. type: string readOnly: true format: uri nullable: true active: title: Active type: boolean logo_url: title: Logo url type: string minLength: 1 DueDate: required: - name - url - date type: object properties: name: title: Name type: string minLength: 1 url: title: Url type: string minLength: 1 date: title: Date type: string format: date-time CourseRunOverview: required: - course_run_id - display_name - course_run_url - start_date - end_date - course_run_status - due_dates type: object properties: course_run_id: title: Course run id description: ID for the course run. type: string minLength: 1 display_name: title: Display name description: Display name of the course run. type: string minLength: 1 resume_course_run_url: title: Resume course run url description: The absolute url that takes the user back to their position in the course run; if absent, user has not made progress in the course. type: string minLength: 1 course_run_url: title: Course run url description: The absolute url for the course run. type: string minLength: 1 start_date: title: Start date description: Start date for the course run; null if no start date. type: string format: date-time end_date: title: End date description: End date for the course run; null if no end date. type: string format: date-time course_run_status: title: Course run status description: The user's status of the course run. type: string enum: - in_progress - upcoming - completed emails_enabled: title: Emails enabled description: Boolean representing whether emails are enabled for the course;if absent, the bulk email feature is either not enable at the platformlevel or is not enabled for the course; if True or False, bulk emailfeature is enabled, and value represents whether or not user wantsto receive emails. type: boolean due_dates: description: List of subsection due dates for the course run. Due dates are only returned if the course run is in progress. type: array items: $ref: '#/components/schemas/DueDate' micromasters_title: title: Micromasters title description: Title of the MicroMasters program that the course run is a part of; if absent, the course run is not a part of a MicroMasters program. type: string minLength: 1 certificate_download_url: title: Certificate download url description: URL to download a certificate, if available; if absent, certificate is not downloadable. type: string minLength: 1 CourseRunOverviewList: required: - course_runs type: object properties: course_runs: type: array items: $ref: '#/components/schemas/CourseRunOverview' PageOfCourseRunOverview: required: - results type: object properties: previous: title: Previous description: Link to the previous page or results, or null if this is the first. type: string format: uri minLength: 1 next: title: Next description: Link to the next page of results, or null if this is the last. type: string format: uri minLength: 1 results: description: The list of result objects on this page. type: array items: $ref: '#/components/schemas/CourseRunOverview' Membership: required: - user - team type: object properties: user: title: User type: string team: title: Team type: string date_joined: title: Date joined type: string format: date-time readOnly: true last_activity_at: title: Last activity at type: string format: date-time readOnly: true UserMembership: required: - user type: object properties: user: title: User type: string date_joined: title: Date joined type: string format: date-time readOnly: true last_activity_at: title: Last activity at type: string format: date-time readOnly: true CourseTeam: required: - name - description - country type: object properties: id: title: Id type: string readOnly: true minLength: 1 discussion_topic_id: title: Discussion topic id type: string format: slug pattern: ^[-a-zA-Z0-9_]+$ readOnly: true minLength: 1 name: title: Name type: string maxLength: 255 minLength: 1 course_id: title: Course id type: string readOnly: true minLength: 1 topic_id: title: Topic id type: string maxLength: 255 date_created: title: Date created type: string format: date-time readOnly: true description: title: Description type: string maxLength: 300 minLength: 1 country: title: Country type: string language: title: Language description: Код альтернативного языка команды по стандарту ISO 639-1. type: string enum: - aa - ab - af - ak - sq - am - ar - an - hy - as - av - ae - ay - az - ba - bm - eu - be - bn - bh - bi - bs - br - bg - my - ca - ch - ce - zh - zh_HANS - zh_HANT - cu - cv - kw - co - cr - cs - da - dv - nl - dz - en - eo - et - ee - fo - fj - fi - fr - fy - ff - ka - de - gd - ga - gl - gv - el - gn - gu - ht - ha - he - hz - hi - ho - hr - hu - ig - is - io - ii - iu - ie - ia - id - ik - it - jv - ja - kl - kn - ks - kr - kk - km - ki - rw - ky - kv - kg - ko - kj - ku - lo - la - lv - li - ln - lt - lb - lu - lg - mk - mh - ml - mi - mr - ms - mg - mt - mn - na - nv - nr - nd - ng - ne - nn - nb - 'no' - ny - oc - oj - or - om - os - pa - fa - pi - pl - pt - ps - qu - rm - ro - rn - ru - sg - sa - si - sk - sl - se - sm - sn - sd - so - st - es - sc - sr - ss - su - sw - sv - ty - ta - tt - te - tg - tl - th - bo - ti - to - tn - ts - tk - tr - tw - ug - uk - ur - uz - ve - vi - vo - cy - wa - wo - xh - yi - yo - za - zu last_activity_at: title: Last activity at type: string format: date-time readOnly: true membership: type: array items: $ref: '#/components/schemas/UserMembership' readOnly: true organization_protected: title: Organization protected type: boolean UserMapping: type: object properties: username: title: Username type: string readOnly: true remote_id: title: Remote id type: string readOnly: true IDVerificationDetails: required: - status - expiration_datetime - updated_at type: object properties: type: title: Type type: string readOnly: true status: title: Status type: string minLength: 1 expiration_datetime: title: Expiration datetime type: string format: date-time message: title: Message type: string readOnly: true updated_at: title: Updated at type: string format: date-time receipt_id: title: Receipt id type: string readOnly: true user_api.User: type: object properties: id: title: ID type: integer readOnly: true url: title: Url type: string format: uri readOnly: true email: title: Адрес электронной почты type: string format: email readOnly: true minLength: 1 name: title: Name type: string readOnly: true username: title: Имя пользователя description: Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. type: string readOnly: true minLength: 1 preferences: title: Preferences type: string readOnly: true CountryTimeZone: required: - time_zone - description type: object properties: time_zone: title: Time zone type: string minLength: 1 description: title: Description type: string minLength: 1 UserPreference: required: - user - key - value type: object properties: user: $ref: '#/components/schemas/user_api.User' key: title: Key type: string pattern: '[-_a-zA-Z0-9]+' maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 url: title: Url type: string format: uri readOnly: true UserTour: type: object properties: course_home_tour_status: title: Course home tour status type: string enum: - show-existing-user-tour - show-new-user-tour - no-tour show_courseware_tour: title: Show courseware tour type: boolean EncodedVideo: required: - url - file_size - bitrate - profile type: object properties: created: title: Created type: string format: date-time modified: title: Modified type: string format: date-time url: title: Url type: string maxLength: 200 minLength: 1 file_size: title: File size type: integer minimum: 0 bitrate: title: Bitrate type: integer minimum: 0 profile: title: Profile type: string pattern: ^[a-zA-Z0-9\-_]*$ Video: required: - encoded_videos - edx_video_id - duration - status type: object properties: encoded_videos: type: array items: $ref: '#/components/schemas/EncodedVideo' courses: type: array items: type: string uniqueItems: true url: title: Url type: string readOnly: true created: title: Created type: string format: date-time edx_video_id: title: Edx video id type: string pattern: ^[a-zA-Z0-9\-_]*$ maxLength: 100 minLength: 1 client_video_id: title: Client video id type: string maxLength: 255 duration: title: Duration type: number minimum: 0 status: title: Status type: string maxLength: 255 minLength: 1 error_description: title: Error Description type: string nullable: true securitySchemes: Basic: type: http scheme: basic security: - Basic: []