swagger: '2.0' info: title: Open edX API description: APIs for access to Open edX information contact: email: oscm@edx.org version: v1 basePath: /api consumes: - application/json produces: - application/json securityDefinitions: Basic: type: basic security: - Basic: [] paths: /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=\"\ \nto only include bookmarks from a particular course.\n\nThe bookmarks are\ \ always sorted in descending order by creation date.\n\nEach page in the\ \ list contains 10 bookmarks by default. The page\nsize can be altered by\ \ passing parameter \"page_size=\".\n\nTo include the optional\ \ fields pass the values in \"fields\" parameter\nas a comma separated list.\ \ Possible values are:\n\n* \"display_name\"\n* \"path\"\n\n**Example Requests**\n\ \nGET /api/bookmarks/v1/bookmarks/?course_id={course_id1}&fields=display_name,path" parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer - name: course_id in: query description: The id of the course to limit the list type: string - name: fields in: query description: 'The fields to return: display_name, path.' type: string responses: '200': description: '' tags: - bookmarks 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\"\ .\n\nHttp400 is returned if the format of the request is not correct,\nthe\ \ usage_id is invalid or a block corresponding to the usage_id\ncould not\ \ be found.\n\n**Example Requests**\n\nPOST /api/bookmarks/v1/bookmarks/\n\ Request data: {\"usage_id\": }" parameters: [] responses: '201': description: '' tags: - bookmarks parameters: [] /bookmarks/v1/bookmarks/{username},{usage_id}/: get: operationId: bookmarks_v1_bookmarks_read summary: Get a specific bookmark for a user. description: "**Example Requests**\n\nGET /api/bookmarks/v1/bookmarks/{username},{usage_id}?fields=display_name,path" parameters: [] responses: '200': description: '' tags: - bookmarks delete: operationId: bookmarks_v1_bookmarks_delete description: DELETE /api/bookmarks/v1/bookmarks/{username},{usage_id} parameters: [] responses: '204': description: '' tags: - bookmarks parameters: - name: usage_id in: path required: true type: string - name: username in: path required: true type: string /certificates/v0/certificates/{username}/: get: operationId: certificates_v0_certificates_read summary: Get a paginated list of bookmarks 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 }]" parameters: - name: username in: path description: The users to get certificates for type: string required: true responses: '200': description: '' tags: - certificates parameters: - name: username in: path required: true type: string /certificates/v0/certificates/{username}/courses/{course_id}/: get: operationId: certificates_v0_certificates_courses_read description: Gets a certificate information. parameters: [] responses: '200': description: '' tags: - certificates parameters: - name: course_id in: path required: true type: string - name: username in: path required: true type: string /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. parameters: [] responses: '200': description: '' schema: type: object properties: {} tags: - cohorts post: operationId: cohorts_v1_courses_cohorts_create description: Endpoint to create a new cohort, must not include cohort_id. parameters: - name: data in: body required: true schema: type: object properties: {} responses: '201': description: '' schema: type: object properties: {} tags: - cohorts patch: operationId: cohorts_v1_courses_cohorts_partial_update description: Endpoint to update a cohort name and/or assignment type. parameters: - name: data in: body required: true schema: type: object properties: {} responses: '200': description: '' schema: type: object properties: {} tags: - cohorts parameters: - name: cohort_id in: path required: true type: string - name: course_key_string in: path required: true type: string /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. parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CohortUsersAPI' tags: - cohorts post: operationId: cohorts_v1_courses_cohorts_users_create description: Add given users to the cohort. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CohortUsersAPI' responses: '201': description: '' schema: $ref: '#/definitions/CohortUsersAPI' tags: - cohorts delete: operationId: cohorts_v1_courses_cohorts_users_delete description: Removes and user from a specific cohort. parameters: [] responses: '204': description: '' tags: - cohorts parameters: - name: cohort_id in: path required: true type: string - name: course_key_string in: path required: true type: string - name: username in: path required: true type: string /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\"\ )\ncontaining cohort assignments for users. This method spawns a celery task\n\ to do the assignments, and a CSV file with results is provided via data downloads." parameters: [] responses: '201': description: '' tags: - cohorts parameters: - name: course_key_string in: path required: true type: string /cohorts/v1/settings/{course_key_string}: get: operationId: cohorts_v1_settings_read description: Endpoint to fetch the course cohort settings. parameters: [] responses: '200': description: '' schema: type: object properties: {} tags: - cohorts put: operationId: cohorts_v1_settings_update description: Endpoint to set the course cohort settings. parameters: - name: data in: body required: true schema: type: object properties: {} responses: '200': description: '' schema: type: object properties: {} tags: - cohorts parameters: - name: course_key_string in: path required: true type: string /commerce/v0/baskets/: post: operationId: commerce_v0_baskets_create description: Attempt to enroll the user. parameters: [] responses: '201': description: '' tags: - commerce parameters: [] /commerce/v0/baskets/{basket_id}/order/: get: operationId: commerce_v0_baskets_order_list description: HTTP handler. parameters: [] responses: '200': description: '' tags: - commerce parameters: - name: basket_id in: path required: true type: string /commerce/v1/courses/: get: operationId: commerce_v1_courses_list description: List courses and modes. parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/commerce.Course' tags: - commerce parameters: [] /commerce/v1/courses/{course_id}/: get: operationId: commerce_v1_courses_read description: Retrieve, update, or create courses/modes. parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/commerce.Course' tags: - commerce put: operationId: commerce_v1_courses_update description: Retrieve, update, or create courses/modes. parameters: - name: data in: body required: true schema: $ref: '#/definitions/commerce.Course' responses: '200': description: '' schema: $ref: '#/definitions/commerce.Course' tags: - commerce patch: operationId: commerce_v1_courses_partial_update description: Retrieve, update, or create courses/modes. parameters: - name: data in: body required: true schema: $ref: '#/definitions/commerce.Course' responses: '200': description: '' schema: $ref: '#/definitions/commerce.Course' tags: - commerce parameters: - name: course_id in: path required: true type: string /commerce/v1/orders/{number}/: get: operationId: commerce_v1_orders_read description: HTTP handler. parameters: [] responses: '200': description: '' tags: - commerce parameters: - name: number in: path required: true type: string /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." parameters: [] responses: '201': description: '' tags: - completion parameters: [] /completion/v1/subsection-completion/{username}/{course_key}/(P{subsection_id}[/]*): get: operationId: completion_v1_subsection-completion_]*)_list description: Returns completion for a (user, subsection, course). parameters: [] responses: '200': description: '' tags: - completion parameters: - name: course_key in: path required: true type: string - name: subsection_id in: path required: true type: string - name: username in: path required: true type: string ? /course_experience/v1/course_deadlines_info/(P{course_key_string}[/+]+{var}[/+]+api/course_experience/v1/course_deadlines_info/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: course_experience_v1_course_deadlines_info_+]+api_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." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseDeadlinesMobile' tags: - course_experience parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string /course_experience/v1/reset_course_deadlines: post: operationId: course_experience_v1_reset_course_deadlines_create description: '' parameters: [] responses: '201': description: '' tags: - course_experience parameters: [] /course_goals/v0/course_goals/: get: operationId: course_goals_v0_course_goals_list summary: API calls to create and update a course goal. description: "Validates incoming data to ensure that course_key maps to an actual\n\ course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\ \ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\ \ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\ \ data: {\"course_key\": , \"goal_key\": \"\", \"user\"\ : \"\"}\n\nReturns Http400 response if the course_key does not map\ \ to a known\ncourse or if the goal_key does not map to a valid goal key." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/CourseGoal' tags: - course_goals post: operationId: course_goals_v0_course_goals_create description: Create a new goal if one does not exist, otherwise update the existing goal. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseGoal' responses: '201': description: '' schema: $ref: '#/definitions/CourseGoal' tags: - course_goals parameters: [] /course_goals/v0/course_goals/{id}/: get: operationId: course_goals_v0_course_goals_read summary: API calls to create and update a course goal. description: "Validates incoming data to ensure that course_key maps to an actual\n\ course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\ \ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\ \ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\ \ data: {\"course_key\": , \"goal_key\": \"\", \"user\"\ : \"\"}\n\nReturns Http400 response if the course_key does not map\ \ to a known\ncourse or if the goal_key does not map to a valid goal key." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseGoal' tags: - course_goals put: operationId: course_goals_v0_course_goals_update summary: API calls to create and update a course goal. description: "Validates incoming data to ensure that course_key maps to an actual\n\ course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\ \ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\ \ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\ \ data: {\"course_key\": , \"goal_key\": \"\", \"user\"\ : \"\"}\n\nReturns Http400 response if the course_key does not map\ \ to a known\ncourse or if the goal_key does not map to a valid goal key." parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseGoal' responses: '200': description: '' schema: $ref: '#/definitions/CourseGoal' tags: - course_goals patch: operationId: course_goals_v0_course_goals_partial_update summary: API calls to create and update a course goal. description: "Validates incoming data to ensure that course_key maps to an actual\n\ course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\ \ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\ \ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\ \ data: {\"course_key\": , \"goal_key\": \"\", \"user\"\ : \"\"}\n\nReturns Http400 response if the course_key does not map\ \ to a known\ncourse or if the goal_key does not map to a valid goal key." parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseGoal' responses: '200': description: '' schema: $ref: '#/definitions/CourseGoal' tags: - course_goals delete: operationId: course_goals_v0_course_goals_delete summary: API calls to create and update a course goal. description: "Validates incoming data to ensure that course_key maps to an actual\n\ course and that the goal_key is a valid option.\n\n**Use Case**\n * Create\ \ a new goal for a user.\n * Update an existing goal for a user\n\n**Example\ \ Requests**\n POST /api/course_goals/v0/course_goals/\n Request\ \ data: {\"course_key\": , \"goal_key\": \"\", \"user\"\ : \"\"}\n\nReturns Http400 response if the course_key does not map\ \ to a known\ncourse or if the goal_key does not map to a valid goal key." parameters: [] responses: '204': description: '' tags: - course_goals parameters: - name: id in: path description: A unique integer value identifying this course goal. required: true type: integer ? /course_home/v1/course_metadata/(P{course_key_string}[/+]+{var}[/+]+api/course_home/v1/course_metadata/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: course_home_v1_course_metadata_+]+api_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 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\n**Returns**\n\n * 200 on success\ \ with above fields.\n * 404 if the course is not available or cannot be\ \ seen." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseHomeMetadata' tags: - course_home parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /course_home/v1/dates/(P{course_key_string}[/+]+{var}[/+]+api/course_home/v1/dates/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: course_home_v1_dates_+]+api_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 * 404 if the course is not\ \ available or cannot be seen." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/DatesTab' tags: - course_home parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string /course_home/v1/dismiss_welcome_message: post: operationId: course_home_v1_dismiss_welcome_message_create description: '' parameters: [] responses: '201': description: '' tags: - course_home parameters: [] ? /course_home/v1/outline/(P{course_key_string}[/+]+{var}[/+]+api/course_home/v1/outline/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: course_home_v1_outline_+]+api_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 the following fields:\n\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 course_goals:\n goal_options:\ \ (list) A list of goals where each goal is represented as a tuple (goal_key,\ \ goal_string)\n selected_goal:\n key: (str) The unique\ \ id given to the user's selected goal.\n text: (str) The display\ \ text for the user's selected goal.\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 handouts_html:\ \ (str) Raw HTML for the handouts section of the course info\n has_ended:\ \ (bool) Indicates whether course has ended\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\n**Returns**\n\n * 200\ \ on success with above fields.\n * 403 if the user is not authenticated.\n\ \ * 404 if the course is not available or cannot be seen." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/OutlineTab' tags: - course_home parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /course_home/v1/progress/(P{course_key_string}[/+]+{var}[/+]+api/course_home/v1/progress/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: course_home_v1_progress_+]+api_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\n**Response Values**\n\ \n Body consists of the following fields:\n\n certificate_data: Object\ \ containing information about the user's certificate status\n cert_web_view_url:\ \ (str) the url to view the certificate\n download_url: (str) the url\ \ to download the certificate\n is_downloadable: (bool) true if the\ \ status is downloadable and the download url is not None\n is_requestable:\ \ (bool) true if status is requesting and request_cert_url is not None\n \ \ msg: (str) message for the certificate status\n title: (str)\ \ title of the certificate status\n credit_course_requirements: An object\ \ containing the following fields\n dashboard_url: (str) the url to\ \ the user's dashboard\n eligibility_status: (str) the user's eligibility\ \ to receive a course credit\n requirements: object containing the\ \ following fields\n display_name: (str) the name of the requirement\ \ that should be displayed\n namespace: (str) the type that the\ \ requirement is\n min_grade: (float) the percentage formatted\ \ minimum grade needed for this requirement\n status: (str) the\ \ status of the requirement\n status_date: (str) the date the status\ \ was set\n credit_support_url: (str) the url to the support docs for purchasing\ \ a credit\n courseware_summary: 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 \ \ display_name: (str) a str of what the name of the Subsection is for\ \ displaying on the site\n due: (str) a DateTime string for when\ \ the Subsection is due\n format: (str) the format, if any, of\ \ the Subsection (Homework, Exam, etc)\n graded: (bool) whether\ \ or not the Subsection is graded\n graded_total: an object containing\ \ the following fields\n earned: (float) the amount of points\ \ the user earned\n possible: (float) the amount of points\ \ the user could have earned\n percent_graded: (float) the percentage\ \ of the points the user received for the subsection\n show_correctness:\ \ (str) a str representing whether to show the problem/practice scores based\ \ on due date\n show_grades: (bool) a bool for whether to show\ \ grades based on the access the user has\n url: (str) the absolute\ \ path url to the Subsection\n enrollment_mode: (str) a str representing\ \ the enrollment the user has ('audit', 'verified', ...)\n studio_url:\ \ (str) a str of the link to the grading in studio for the course\n user_timezone:\ \ (str) The user's preferred timezone\n verification_data: an object containing\n\ \ link: (str) the link to either start or retry verification\n \ \ status: (str) the status of the verification\n status_date: (str)\ \ the date time string of when the verification status was set\n\n\n\n**Returns**\n\ \n * 200 on success with above fields.\n * 302 if the user is not enrolled.\n\ \ * 403 if the user is not authenticated.\n * 404 if the course is not\ \ available or cannot be seen." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/ProgressTab' tags: - course_home parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string /course_home/v1/save_course_goal: post: operationId: course_home_v1_save_course_goal_create description: '' parameters: [] responses: '201': description: '' tags: - course_home parameters: [] /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." parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/course_modes.CourseMode' tags: - course_modes 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." parameters: - name: data in: body required: true schema: $ref: '#/definitions/course_modes.CourseMode' responses: '201': description: '' schema: $ref: '#/definitions/course_modes.CourseMode' tags: - course_modes parameters: - name: course_id in: path required: true type: string /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." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/course_modes.CourseMode' consumes: - application/merge-patch+json tags: - course_modes patch: operationId: course_modes_v1_courses_partial_update description: Performs a partial update of a CourseMode instance. parameters: - name: data in: body required: true schema: $ref: '#/definitions/course_modes.CourseMode' responses: '200': description: '' schema: $ref: '#/definitions/course_modes.CourseMode' consumes: - application/merge-patch+json tags: - course_modes 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." parameters: [] responses: '204': description: '' consumes: - application/merge-patch+json tags: - course_modes parameters: - name: course_id in: path required: true type: string - name: mode_slug in: path required: true type: string /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." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - courses parameters: [] ? /courses/v1/blocks/(P{usage_key_string}{var}|api/courses/v1/blocks/(P{usage_key_string}(:i4x://[/]+/[/]+/[/]+/[@]+(:@[/]+))|{var}) : get: operationId: courses_v1_blocks_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 LMS. 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.\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." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - courses parameters: - name: usage_key_string in: path required: true type: string - name: var in: path required: true type: string /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 }" parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: type: string tags: - courses parameters: [] /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**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 ]" parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Course' tags: - courses parameters: [] ? /courses/v1/courses/(P{course_key_string}[/+]+{var}[/+]+api/courses/v1/courses/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: courses_v1_courses_+]+api_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\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 }" parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseDetail' tags: - courses parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string /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." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - courses parameters: [] ? /courses/v2/blocks/(P{usage_key_string}{var}|api/courses/v2/blocks/(P{usage_key_string}(:i4x://[/]+/[/]+/[/]+/[@]+(:@[/]+))|{var}) : get: operationId: courses_v2_blocks_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 LMS. 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.\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." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - courses parameters: - name: usage_key_string in: path required: true type: string - name: var in: path required: true type: string ? /courseware/celebration/(P{course_key_string}[/+]+{var}[/+]+api/courseware/celebration/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : post: operationId: courseware_celebration_+]+api_courseware_celebration_+]+(_|+)[_]+)_create description: Handle a POST request. parameters: [] responses: '201': description: '' tags: - courseware parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /courseware/course/(P{course_key_string}[/+]+{var}[/+]+api/courseware/course/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: courseware_course_+]+api_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 * 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\ \ * 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 * tabs: Course tabs\n * enrollment:\ \ Enrollment status of authenticated user\n * mode: `audit`, `verified`,\ \ etc\n * is_active: boolean\n * can_load_course: Whether the user\ \ can view the course (AccessResponse object)\n * is_staff: Whether the\ \ effective user has staff access to the course\n * original_user_is_staff:\ \ Whether the original user has staff access to the course\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\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." parameters: [] responses: '200': description: '' tags: - courseware parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /courseware/resume/(P{course_key_string}[/+]+{var}[/+]+api/courseware/resume/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: courseware_resume_+]+api_courseware_resume_+]+(_|+)[_]+)_list description: Return response to a GET request. parameters: [] responses: '200': description: '' tags: - courseware parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /courseware/sequence/(P{usage_key_string}{var}|api/courseware/sequence/(P{usage_key_string}(:i4x://[/]+/[/]+/[/]+/[@]+(:@[/]+))|{var}) : get: operationId: courseware_sequence_courseware_sequence__[_]+_[_]+_[_]+_[@]+(:@[_read description: Return response to a GET request. parameters: [] responses: '200': description: '' tags: - courseware parameters: - name: usage_key_string in: path required: true type: string - name: var in: path required: true type: string /credit/v1/courses/: get: operationId: credit_v1_courses_list description: CreditCourse endpoints. parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/CreditCourse' tags: - credit post: operationId: credit_v1_courses_create description: CreditCourse endpoints. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CreditCourse' responses: '201': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - credit parameters: [] /credit/v1/courses/{course_key}/: get: operationId: credit_v1_courses_read description: CreditCourse endpoints. parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - credit put: operationId: credit_v1_courses_update description: Create/update course modes for a course. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CreditCourse' responses: '200': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - credit patch: operationId: credit_v1_courses_partial_update description: CreditCourse endpoints. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CreditCourse' responses: '200': description: '' schema: $ref: '#/definitions/CreditCourse' tags: - credit parameters: - name: course_key in: path required: true type: string pattern: (?:[^/+]+(/|\+)[^/+]+(/|\+)[^/?]+) /credit/v1/eligibility/: get: operationId: credit_v1_eligibility_list description: Returns eligibility for a user-course combination. parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/CreditEligibility' tags: - credit parameters: [] /credit/v1/providers/: get: operationId: credit_v1_providers_list description: Credit provider endpoints. parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/CreditProvider' tags: - credit parameters: [] /credit/v1/providers/{provider_id}/: get: operationId: credit_v1_providers_read description: Credit provider endpoints. parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CreditProvider' tags: - credit parameters: - name: provider_id in: path description: Unique identifier for this credit provider. Only alphanumeric characters and hyphens (-) are allowed. The identifier is case-sensitive. required: true type: string pattern: '[a-z,A-Z,0-9,\-]+' /credit/v1/providers/{provider_id}/callback/: post: operationId: credit_v1_providers_callback_create description: POST handler. parameters: [] responses: '201': description: '' tags: - credit parameters: - name: provider_id in: path required: true type: string /credit/v1/providers/{provider_id}/request/: post: operationId: credit_v1_providers_request_create description: POST handler. parameters: [] responses: '201': description: '' tags: - credit parameters: - name: provider_id in: path required: true type: string /demographics/v1/demographics/status/: get: operationId: demographics_v1_demographics_status_list summary: GET /api/user/v1/accounts/demographics/status description: This is a Web API to determine the status of demographics related features parameters: [] responses: '200': description: '' tags: - demographics patch: operationId: demographics_v1_demographics_status_partial_update summary: PATCH /api/user/v1/accounts/demographics/status description: This is a Web API to update fields that are dependent on user interaction. parameters: [] responses: '200': description: '' tags: - demographics parameters: [] /discounts/course/(P{course_key_string}[/+]+{var}[/+]+api/discounts/course/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+): get: operationId: discounts_course_+]+api_discounts_course_+]+(_|+)[_]+)_list description: Return the discount percent, if the user has appropriate permissions. parameters: [] responses: '200': description: '' tags: - discounts parameters: - name: course_key_string in: path required: true type: string - name: var in: path required: true type: string ? /discounts/user/{user_id}/course/(P{course_key_string}[/+]+{var}[/+]+api/discounts/user/{user_id}/course/(P{course_key_string}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: discounts_user_course_+]+api_discounts_user_course_+]+(_|+)[_]+)_list description: Return the discount percent, if the user has appropriate permissions. parameters: [] responses: '200': description: '' tags: - discounts parameters: - name: course_key_string in: path required: true type: string - name: user_id in: path required: true type: string - name: var in: path required: true type: string /discussion/v1/accounts/replace_username: post: operationId: discussion_v1_accounts_replace_username_create description: Implements the username replacement endpoint parameters: [] responses: '201': description: '' tags: - discussion parameters: [] /discussion/v1/accounts/retire_forum: post: operationId: discussion_v1_accounts_retire_forum_create description: Implements the retirement endpoint. parameters: [] responses: '201': description: '' tags: - discussion parameters: [] /discussion/v1/comments/: get: operationId: discussion_v1_comments_list description: "Implements the GET method for the list endpoint as described in\ \ the\nclass docstring." parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion post: operationId: discussion_v1_comments_create description: "Implements the POST method for the list endpoint as described\ \ in the\nclass docstring." parameters: [] responses: '201': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion parameters: [] /discussion/v1/comments/{comment_id}/: get: operationId: discussion_v1_comments_read description: Implements the GET method for comments against response ID parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion patch: operationId: discussion_v1_comments_partial_update description: "Implements the PATCH method for the instance endpoint as described\ \ in\nthe class docstring." parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion delete: operationId: discussion_v1_comments_delete description: "Implements the DELETE method for the instance endpoint as described\ \ in\nthe class docstring" parameters: [] responses: '204': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion parameters: - name: comment_id in: path required: true type: string ? /discussion/v1/course_topics/(P{course_id}[/+]+{var}[/+]+api/discussion/v1/course_topics/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+) : get: operationId: discussion_v1_course_topics_+]+api_discussion_v1_course_topics_+]+(_|+)[_]+)_list description: Implements the GET method as described in the class docstring. parameters: [] responses: '200': description: '' tags: - discussion parameters: - name: course_id in: path required: true type: string - name: var in: path required: true type: string /discussion/v1/courses/(P{course_id}[/+]+{var}[/+]+api/discussion/v1/courses/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+): get: operationId: discussion_v1_courses_+]+api_discussion_v1_courses_+]+(_|+)[_]+)_list description: Implements the GET method as described in the class docstring. parameters: [] responses: '200': description: '' tags: - discussion parameters: - name: course_id in: path required: true type: string - name: var in: path required: true type: string /discussion/v1/courses/{course_id}/roles/{rolename}/: get: operationId: discussion_v1_courses_roles_read description: Implement a handler for the GET method. parameters: [] responses: '200': description: '' tags: - discussion post: operationId: discussion_v1_courses_roles_create description: Implement a handler for the POST method. parameters: [] responses: '201': description: '' tags: - discussion parameters: - name: course_id in: path required: true type: string - name: rolename in: path required: true type: string /discussion/v1/courses/{course_id}/settings: get: operationId: discussion_v1_courses_settings_list description: Implement a handler for the GET method. parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion patch: operationId: discussion_v1_courses_settings_partial_update description: Implement a handler for the PATCH method. parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion parameters: - name: course_id in: path required: true type: string /discussion/v1/threads/: get: operationId: discussion_v1_threads_list description: "Implements the GET method for the list endpoint as described in\ \ the\nclass docstring." parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion post: operationId: discussion_v1_threads_create description: "Implements the POST method for the list endpoint as described\ \ in the\nclass docstring." parameters: [] responses: '201': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion parameters: [] /discussion/v1/threads/{thread_id}/: get: operationId: discussion_v1_threads_read description: Implements the GET method for thread ID parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion patch: operationId: discussion_v1_threads_partial_update description: "Implements the PATCH method for the instance endpoint as described\ \ in\nthe class docstring." parameters: [] responses: '200': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion delete: operationId: discussion_v1_threads_delete description: "Implements the DELETE method for the instance endpoint as described\ \ in\nthe class docstring" parameters: [] responses: '204': description: '' consumes: - application/json - application/merge-patch+json tags: - discussion parameters: - name: thread_id in: path required: true type: string /edx_proctoring/proctoring_review_callback/: post: operationId: edx_proctoring_proctoring_review_callback_create description: Post callback handler parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: [] /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 parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string /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 parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string - name: exam_id in: path required: true type: string /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 parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: [] /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.\nCourse and\ \ Global staff can view both timed and proctored exam allowances." parameters: [] responses: '200': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance parameters: [] responses: '200': description: '' tags: - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. parameters: [] responses: '204': description: '' tags: - edx_proctoring parameters: [] /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. parameters: [] responses: '200': description: '' tags: - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_attempt_create description: HTTP POST handler. To create an exam attempt. parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: [] /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 the status of the exam attempt.\nCourse\ \ and Global staff can view both timed and proctored exam attempts." parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string /edx_proctoring/v1/proctored_exam/attempt/course_id/{course_id}/search/{search_by}: get: operationId: edx_proctoring_v1_proctored_exam_attempt_course_id_search_read description: "HTTP GET Handler. Returns the status of the exam attempt.\nCourse\ \ and Global staff can view both timed and proctored exam attempts." parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string - name: search_by in: path required: true type: string /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. parameters: [] responses: '200': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_attempt_update description: HTTP POST handler. To stop an exam. parameters: [] responses: '200': description: '' tags: - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_attempt_delete description: HTTP DELETE handler. Removes an exam attempt. parameters: [] responses: '204': description: '' tags: - edx_proctoring parameters: - name: attempt_id in: path required: true type: string /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_acknowledge flag for the specific attempt parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: attempt_id in: path required: true type: string /edx_proctoring/v1/proctored_exam/attempt/{external_id}/ready: post: operationId: edx_proctoring_v1_proctored_exam_attempt_ready_create description: Post callback handler parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: - name: external_id in: path required: true type: string /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\nan attempt." parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: - name: external_id in: path required: true type: string /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()" parameters: [] responses: '200': description: '' tags: - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_create description: Http POST handler. Creates an exam. parameters: [] responses: '201': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_update description: "HTTP PUT handler. To update an exam.\ncalls the update_exam" parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: [] /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()" parameters: [] responses: '200': description: '' tags: - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_create description: Http POST handler. Creates an exam. parameters: [] responses: '201': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_update description: "HTTP PUT handler. To update an exam.\ncalls the update_exam" parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string /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()" parameters: [] responses: '200': description: '' tags: - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_create description: Http POST handler. Creates an exam. parameters: [] responses: '201': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_course_id_content_id_update description: "HTTP PUT handler. To update an exam.\ncalls the update_exam" parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: content_id in: path required: true type: string - name: course_id in: path required: true type: string /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()" parameters: [] responses: '200': description: '' tags: - edx_proctoring post: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_create description: Http POST handler. Creates an exam. parameters: [] responses: '201': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_exam_exam_id_update description: "HTTP PUT handler. To update an exam.\ncalls the update_exam" parameters: [] responses: '200': description: '' tags: - edx_proctoring parameters: - name: exam_id in: path required: true type: string /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.\nCourse and\ \ Global staff can view both timed and proctored exam allowances." parameters: [] responses: '200': description: '' tags: - edx_proctoring put: operationId: edx_proctoring_v1_proctored_exam_allowance_update description: HTTP GET handler. Adds or updates Allowance parameters: [] responses: '200': description: '' tags: - edx_proctoring delete: operationId: edx_proctoring_v1_proctored_exam_allowance_delete description: HTTP DELETE handler. Removes Allowance. parameters: [] responses: '204': description: '' tags: - edx_proctoring parameters: - name: course_id in: path required: true type: string /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\nfrom all configured\ \ backends" parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: - name: user_id in: path required: true type: string /edx_proctoring/v1/retire_user/{user_id}/: post: operationId: edx_proctoring_v1_retire_user_create description: Obfuscates all PII for a given user_id parameters: [] responses: '201': description: '' tags: - edx_proctoring parameters: - name: user_id in: path required: true type: string /edxnotes/v1/retire_user/: post: operationId: edxnotes_v1_retire_user_create description: Implements the retirement endpoint. parameters: [] responses: '201': description: '' tags: - edxnotes parameters: [] /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. parameters: [] responses: '200': description: '' tags: - enrollment parameters: - name: course_id in: path required: true type: string /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\nparameter. If the username does not match that\ \ of the currently logged in user, only\ncourses for which the currently logged\ \ in user has the Staff or Admin role are listed.\nAs a result, a course team\ \ member can find out which of their own courses a particular\nlearner is\ \ enrolled in.\n\nOnly the Staff or Admin role (granted on the Django administrative\ \ console as the staff\nor instructor permission) in individual courses gives\ \ the requesting user access to\nenrollment data. Permissions granted at the\ \ organizational level do not give a user\naccess to enrollment data for all\ \ of that organization's courses.\n\nUsers who have the global staff permission\ \ can access all enrollment data for all\ncourses." parameters: [] responses: '200': description: '' tags: - enrollment 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\ngo through `add_enrollment()`, which allows\ \ creation of new and reactivation of old enrollments." parameters: [] responses: '201': description: '' tags: - enrollment parameters: [] /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\nupdates of the current enrollment for a particular\ \ course." parameters: [] responses: '200': description: '' tags: - enrollment parameters: - name: course_id in: path required: true type: string /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\nupdates of the current enrollment for a particular\ \ course." parameters: [] responses: '200': description: '' tags: - enrollment parameters: - name: course_id in: path required: true type: string - name: username in: path required: true type: string /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**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 * 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." parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string responses: '200': description: '' schema: required: - results type: object properties: next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/CourseEnrollmentsApiList' tags: - enrollment parameters: [] /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 parameters: [] responses: '200': description: '' tags: - enrollment parameters: [] /enrollment/v1/unenroll/: post: operationId: enrollment_v1_unenroll_create description: Unenrolls the specified user from all courses. parameters: [] responses: '201': description: '' tags: - enrollment parameters: [] /entitlements/v1/entitlements/: get: operationId: entitlements_v1_entitlements_list description: "Override the list method to expire records that are past the\n\ policy and requested via the API before returning those records." parameters: - name: uuid in: query description: '' required: false type: string - name: user in: query description: '' required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/CourseEntitlement' tags: - entitlements post: operationId: entitlements_v1_entitlements_create description: ViewSet for the Entitlements API. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseEntitlement' responses: '201': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - entitlements parameters: [] /entitlements/v1/entitlements/{uuid}/: get: operationId: entitlements_v1_entitlements_read description: "Override the retrieve method to expire a record that is past the\n\ policy and is requested via the API before returning that record." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - entitlements put: operationId: entitlements_v1_entitlements_update description: ViewSet for the Entitlements API. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseEntitlement' responses: '200': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - entitlements patch: operationId: entitlements_v1_entitlements_partial_update description: ViewSet for the Entitlements API. parameters: - name: data in: body required: true schema: $ref: '#/definitions/CourseEntitlement' responses: '200': description: '' schema: $ref: '#/definitions/CourseEntitlement' tags: - entitlements delete: operationId: entitlements_v1_entitlements_delete description: ViewSet for the Entitlements API. parameters: [] responses: '204': description: '' tags: - entitlements parameters: - name: uuid in: path required: true 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}' /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\nprovided course_run_id from the data. This is called on a specific\ \ entitlement\nUUID so the course_run_id has to correspond to the Course that\ \ is assigned to\nthe Entitlement.\n\nWhen this API is called for a user who\ \ is already enrolled in a run that User\nwill be unenrolled from their current\ \ run and enrolled in the new run if it is\navailable." parameters: [] responses: '201': description: '' tags: - entitlements 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\na refund" parameters: [] responses: '204': description: '' tags: - entitlements parameters: - name: uuid in: path required: true type: string format: uuid /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. parameters: [] responses: '200': description: '' tags: - experiments parameters: [] /experiments/v0/custom/userMetadata/{username},{course_id}: get: operationId: experiments_v0_custom_userMetadata_read description: Return user-metadata for the given course and user parameters: [] responses: '200': description: '' tags: - experiments parameters: - name: course_id in: path required: true type: string - name: username in: path required: true type: string /experiments/v0/data/: get: operationId: experiments_v0_data_list description: '' parameters: - name: experiment_id in: query description: '' required: false type: number - name: key in: query description: '' required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/ExperimentData' tags: - experiments post: operationId: experiments_v0_data_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentDataCreate' responses: '201': description: '' schema: $ref: '#/definitions/ExperimentDataCreate' tags: - experiments put: operationId: experiments_v0_data_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - experiments parameters: [] /experiments/v0/data/{id}/: get: operationId: experiments_v0_data_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - experiments put: operationId: experiments_v0_data_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - experiments patch: operationId: experiments_v0_data_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentData' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentData' tags: - experiments delete: operationId: experiments_v0_data_delete description: '' parameters: [] responses: '204': description: '' tags: - experiments parameters: - name: id in: path description: A unique integer value identifying this Experiment Data. required: true type: integer /experiments/v0/key-value/: get: operationId: experiments_v0_key-value_list description: '' parameters: - name: experiment_id in: query description: '' required: false type: number - name: key in: query description: '' required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/ExperimentKeyValue' tags: - experiments post: operationId: experiments_v0_key-value_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentKeyValue' responses: '201': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - experiments parameters: [] /experiments/v0/key-value/{id}/: get: operationId: experiments_v0_key-value_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - experiments put: operationId: experiments_v0_key-value_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentKeyValue' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - experiments patch: operationId: experiments_v0_key-value_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ExperimentKeyValue' responses: '200': description: '' schema: $ref: '#/definitions/ExperimentKeyValue' tags: - experiments delete: operationId: experiments_v0_key-value_delete description: '' parameters: [] responses: '204': description: '' tags: - experiments parameters: - name: id in: path description: A unique integer value identifying this Experiment Key-Value Pair. required: true type: integer /grades/v1/courses/: get: operationId: grades_v1_courses_list description: Gets a course progress status. parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - grades parameters: [] /grades/v1/courses/{course_id}/: get: operationId: grades_v1_courses_read description: Gets a course progress status. parameters: [] responses: '200': description: '' tags: - grades parameters: - name: course_id in: path required: true type: string /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.\nCalls the view function if has access, otherwise raises a 403." parameters: [] responses: '200': description: '' tags: - grades parameters: - name: course_id in: path required: true type: string /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.\nCalls the view function if has access, otherwise raises a 403." parameters: [] responses: '201': description: '' tags: - grades parameters: - name: course_id in: path required: true type: string /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.\nCalls the view function if has access, otherwise raises a 403." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - grades parameters: - name: course_id in: path required: true type: string /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." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - grades parameters: - name: course_id in: path required: true type: string /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\na specific users specific subsection grade." parameters: [] responses: '200': description: '' tags: - grades parameters: - name: subsection_id in: path required: true type: string /learning_sequences/v1/course_outline/{course_key_str}: get: operationId: learning_sequences_v1_course_outline_read summary: The CourseOutline, customized for a given user. description: Currently restricted to global staff. parameters: [] responses: '200': description: '' tags: - learning_sequences parameters: - name: course_key_str in: path required: true type: string /organizations/v0/organizations/: get: operationId: organizations_v0_organizations_list description: "Organization view to:\n - fetch list organization data or single\ \ organization using organization short name.\n - create or update an organization\ \ via the PUT endpoint." parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Organization' tags: - organizations parameters: [] /organizations/v0/organizations/{short_name}/: get: operationId: organizations_v0_organizations_read description: "Organization view to:\n - fetch list organization data or single\ \ organization using organization short name.\n - create or update an organization\ \ via the PUT endpoint." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Organization' tags: - organizations put: operationId: organizations_v0_organizations_update description: We perform both Update and Create action via the PUT method. parameters: - name: data in: body required: true schema: $ref: '#/definitions/Organization' responses: '200': description: '' schema: $ref: '#/definitions/Organization' tags: - organizations patch: operationId: organizations_v0_organizations_partial_update description: We disable PATCH because all updates and creates should use the PUT action above. parameters: - name: data in: body required: true schema: $ref: '#/definitions/Organization' responses: '200': description: '' schema: $ref: '#/definitions/Organization' tags: - organizations parameters: - name: short_name in: path description: Please do not use spaces or special characters. Only allowed special characters are period (.), hyphen (-) and underscore (_). required: true type: string /profile_images/v1/{username}/remove: post: operationId: profile_images_v1_remove_create description: POST /api/profile_images/v1/{username}/remove parameters: [] responses: '201': description: '' tags: - profile_images parameters: - name: username in: path required: true type: string /profile_images/v1/{username}/upload: post: operationId: profile_images_v1_upload_create description: POST /api/profile_images/v1/{username}/upload parameters: [] responses: '201': description: '' consumes: - multipart/form-data - application/x-www-form-urlencoded tags: - profile_images parameters: - name: username in: path required: true type: string /program_enrollments/v1/integration-reset: post: operationId: program_enrollments_v1_integration-reset_create description: Reset enrollment and user data for organization parameters: [] responses: '201': description: '' tags: - program_enrollments parameters: [] /program_enrollments/v1/programs/enrollments/: get: operationId: program_enrollments_v1_programs_enrollments_list description: How to respond to a GET request to this endpoint parameters: [] responses: '200': description: '' tags: - program_enrollments parameters: [] /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 parameters: [] responses: '200': description: '' tags: - program_enrollments parameters: [] /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. parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - program_enrollments post: operationId: program_enrollments_v1_programs_courses_enrollments_create description: Enroll a list of students in a course in a program parameters: [] responses: '201': description: '' tags: - program_enrollments put: operationId: program_enrollments_v1_programs_courses_enrollments_update description: Create or Update the program course enrollments of a list of learners parameters: [] responses: '200': description: '' tags: - program_enrollments patch: operationId: program_enrollments_v1_programs_courses_enrollments_partial_update description: Modify the program course enrollments of a list of learners parameters: [] responses: '200': description: '' tags: - program_enrollments parameters: - name: course_id in: path required: true type: string - name: program_uuid in: path required: true type: string /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. parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - program_enrollments parameters: - name: course_id in: path required: true type: string - name: program_uuid in: path required: true type: string /program_enrollments/v1/programs/{program_uuid}/enrollments/: get: operationId: program_enrollments_v1_programs_enrollments_list description: Defines the GET list endpoint for ProgramEnrollment objects. parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - program_enrollments post: operationId: program_enrollments_v1_programs_enrollments_create description: Create program enrollments for a list of learners parameters: [] responses: '201': description: '' tags: - program_enrollments put: operationId: program_enrollments_v1_programs_enrollments_update description: Create/update program enrollments for a list of learners parameters: [] responses: '200': description: '' tags: - program_enrollments patch: operationId: program_enrollments_v1_programs_enrollments_partial_update description: Update program enrollments for a list of learners parameters: [] responses: '200': description: '' tags: - program_enrollments parameters: - name: program_uuid in: path required: true type: string /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\n\ as part of a program enrollment." parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/CourseRunOverviewList' tags: - program_enrollments parameters: - name: program_uuid in: path required: true type: string /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/edx/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```" parameters: - name: cursor in: query description: The pagination cursor value. required: false type: string - name: page_size in: query description: Number of results to return per page. Defaults to 10. Maximum is 25. type: integer - name: username in: path 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. type: string required: true - name: program_uuid in: path description: UUID of a program. Enrollments will be returned for course runs in this program. type: string required: true responses: '200': description: '' schema: $ref: '#/definitions/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. tags: - program_enrollments parameters: - name: program_uuid in: path required: true type: string - name: username in: path required: true type: string /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. parameters: [] responses: '200': description: '' tags: - team post: operationId: team_v0_bulk_team_membership_create description: Process uploaded CSV to modify team memberships for given course run. parameters: [] responses: '201': description: '' tags: - team parameters: - name: course_id in: path required: true type: string /team/v0/team_membership/: get: operationId: team_v0_team_membership_list description: GET /api/team/v0/team_membership parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - team post: operationId: team_v0_team_membership_create description: POST /api/team/v0/team_membership parameters: [] responses: '201': description: '' tags: - team parameters: [] /team/v0/team_membership/{team_id},{username}: get: operationId: team_v0_team_membership_read description: GET /api/team/v0/team_membership/{team_id},{username} parameters: [] responses: '200': description: '' tags: - team delete: operationId: team_v0_team_membership_delete description: DELETE /api/team/v0/team_membership/{team_id},{username} parameters: [] responses: '204': description: '' tags: - team parameters: - name: team_id in: path required: true type: string - name: username in: path required: true type: string /team/v0/teams/: get: operationId: team_v0_teams_list description: GET /api/team/v0/teams/ parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - team post: operationId: team_v0_teams_create description: POST /api/team/v0/teams/ parameters: [] responses: '201': description: '' tags: - team parameters: [] /team/v0/teams/{team_id}: get: operationId: team_v0_teams_read description: Retrieves the specified resource using the RetrieveModelMixin. parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - team patch: operationId: team_v0_teams_partial_update description: Checks for validation errors, then updates the model using the UpdateModelMixin. parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - team delete: operationId: team_v0_teams_delete description: DELETE /api/team/v0/teams/{team_id} parameters: [] responses: '204': description: '' consumes: - application/merge-patch+json tags: - team parameters: - name: team_id in: path required: true type: string /team/v0/teams/{team_id}/assignments: get: operationId: team_v0_teams_assignments_list description: GET v0/teams/{team_id_pattern}/assignments parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - team parameters: - name: team_id in: path required: true type: string /team/v0/topics/: get: operationId: team_v0_topics_list description: GET /api/team/v0/topics/?course_id={course_id} parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' tags: - team parameters: [] /team/v0/topics/{topic_id},{course_id}: get: operationId: team_v0_topics_read description: GET /api/team/v0/topics/{topic_id},{course_id}/ parameters: [] responses: '200': description: '' tags: - team parameters: - name: course_id in: path required: true type: string - name: topic_id in: path required: true type: string /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```" parameters: [] responses: '200': description: '' tags: - third_party_auth parameters: [] /third_party_auth/v0/providers/{provider_id}{var}/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" parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/UserMapping' tags: - third_party_auth parameters: - name: provider_id in: path required: true type: string - name: var in: path required: true type: string /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. parameters: [] responses: '200': description: '' tags: - third_party_auth parameters: [] /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. parameters: [] responses: '200': description: '' tags: - third_party_auth parameters: - name: username in: path required: true type: string /third_party_auth_context: get: operationId: third_party_auth_context_list description: Returns the context for third party auth providers and the currently running pipeline. parameters: [] responses: '200': description: '' tags: - third_party_auth_context parameters: [] /toggles/v0/state/: get: operationId: toggles_v0_state_list description: An endpoint for displaying the state of toggles in edx-platform. parameters: [] responses: '200': description: '' tags: - toggles parameters: [] /user/v1/account/login_session/: get: operationId: user_v1_account_login_session_list description: HTTP end-points for logging in users. parameters: [] responses: '200': description: '' tags: - user post: operationId: user_v1_account_login_session_create summary: Log in a user. description: "See `login_user` for details.\n\nExample Usage:\n\n POST /api/user/v1/login_session\n\ \ with POST params `email`, `password`.\n\n 200 {'success': true}" parameters: [] responses: '201': description: '' tags: - user parameters: [] /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. parameters: [] responses: '200': description: '' tags: - user parameters: [] /user/v1/account/registration/: get: operationId: user_v1_account_registration_list description: HTTP end-points for creating a new user. parameters: [] responses: '200': description: '' tags: - user post: operationId: user_v1_account_registration_create summary: Create the user's account. description: "You must send all required form fields with the request.\n\nYou\ \ can optionally send a \"course_id\" param to indicate in analytics\nevents\ \ that the user registered while enrolling in a particular course." parameters: [] responses: '201': description: '' tags: - user parameters: [] /user/v1/accounts: get: operationId: user_v1_accounts_list description: "GET /api/user/v1/accounts?username={username1,username2}\nGET\ \ /api/user/v1/accounts?email={user_email}" parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user parameters: [] /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,\n\ and logs the user out." parameters: [] responses: '201': description: '' tags: - user parameters: [] /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```" parameters: [] responses: '201': description: '' tags: - user parameters: [] /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\nretiring this username, the\ \ associated email address, and\nany other PII associated with this user." parameters: [] responses: '201': description: '' tags: - user parameters: [] /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." parameters: [] responses: '201': description: '' tags: - user parameters: [] /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." parameters: [] responses: '201': description: '' tags: - user parameters: [] /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\n\ that are not already being processed and updates their status\nto indicate\ \ they are currently being processed." parameters: [] responses: '201': description: '' tags: - user 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." parameters: [] responses: '200': description: '' tags: - user parameters: [] /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'},\ \ ...]\n\nDeletes UserRetirementPartnerReportingStatus objects for a list\ \ of users\nthat have been reported on." parameters: [] responses: '201': description: '' tags: - user parameters: [] /user/v1/accounts/retirement_queue/: get: operationId: user_v1_accounts_retirement_queue summary: "GET /api/user/v1/accounts/retirement_queue/\n{'cool_off_days': 7,\ \ 'states': ['PENDING', 'COMPLETE']}" description: "Returns the list of RetirementStatus users in the given states\ \ that were\ncreated in the retirement queue at least `cool_off_days` ago." parameters: [] responses: '200': description: '' tags: - user parameters: [] /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/\n?start_date=2018-09-05&end_date=2018-09-07&state=COMPLETE" description: "Returns a list of UserRetirementStatusSerializer serialized\n\ RetirementStatus rows in the given state that were created in the\nretirement\ \ queue between the dates given. Date range is inclusive,\nso to get one day\ \ you would set both dates to that day." parameters: [] responses: '200': description: '' tags: - user parameters: [] /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\"\nimplementation seen in AccountViewSet. Slumber,\ \ the project\nwe use to power edx-rest-api-client, does not currently support\n\ it. The content type for this request is 'application/json'." parameters: [] responses: '200': description: '' tags: - user parameters: [] /user/v1/accounts/{username}: get: operationId: user_v1_accounts_read description: GET /api/user/v1/accounts/{username}/ parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user 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 parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user parameters: - name: username in: path required: true type: string /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. parameters: [] responses: '201': description: '' tags: - user parameters: - name: username in: path required: true type: string /user/v1/accounts/{username}/image: post: operationId: user_v1_accounts_image_create description: POST /api/user/v1/accounts/{username}/image parameters: [] responses: '201': description: '' consumes: - multipart/form-data - application/x-www-form-urlencoded tags: - user delete: operationId: user_v1_accounts_image_delete description: DELETE /api/user/v1/accounts/{username}/image parameters: [] responses: '204': description: '' consumes: - multipart/form-data - application/x-www-form-urlencoded tags: - user parameters: - name: username in: path required: true type: string /user/v1/accounts/{username}/retirement_status/: get: operationId: user_v1_accounts_retirement_status_read description: "GET /api/user/v1/accounts/{username}/retirement_status/\nReturns\ \ the RetirementStatus of a given user, or 404 if that row\ndoesn't exist." parameters: [] responses: '200': description: '' tags: - user parameters: - name: username in: path required: true type: string /user/v1/accounts/{username}/verification_status/: get: operationId: user_v1_accounts_verification_status_read description: IDVerificationStatus detail endpoint. parameters: [] responses: '200': description: '' tags: - user parameters: - name: username in: path required: true type: string /user/v1/accounts/{username}/verifications/: get: operationId: user_v1_accounts_verifications_list description: IDVerificationStatusDeetails endpoint to retrieve more details about ID Verification status parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/IDVerificationDetails' tags: - user parameters: - name: username in: path required: true type: string /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 parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/user_api.User' tags: - user parameters: - name: name in: path required: true type: string /user/v1/me: get: operationId: user_v1_get description: GET /api/user/v1/me parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user parameters: [] /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\norganizational level." parameters: [] responses: '201': description: '' tags: - user parameters: [] /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" parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/CountryTimeZone' tags: - user parameters: [] /user/v1/preferences/{pref_key}/users/: get: operationId: user_v1_preferences_users_list description: DRF class for listing a user's preferences parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/user_api.User' tags: - user parameters: - name: pref_key in: path required: true type: string /user/v1/preferences/{username}: get: operationId: user_v1_preferences_read description: GET /api/user/v1/preferences/{username}/ parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user patch: operationId: user_v1_preferences_partial_update description: PATCH /api/user/v1/preferences/{username}/ parameters: [] responses: '200': description: '' consumes: - application/merge-patch+json tags: - user parameters: - name: username in: path required: true type: string /user/v1/preferences/{username}/{preference_key}: get: operationId: user_v1_preferences_read description: GET /api/user/v1/preferences/{username}/{preference_key} parameters: [] responses: '200': description: '' tags: - user put: operationId: user_v1_preferences_update description: PUT /api/user/v1/preferences/{username}/{preference_key} parameters: [] responses: '200': description: '' tags: - user delete: operationId: user_v1_preferences_delete description: DELETE /api/user/v1/preferences/{username}/{preference_key} parameters: [] responses: '204': description: '' tags: - user parameters: - name: preference_key in: path required: true type: string - name: username in: path required: true type: string /user/v1/user_prefs/: get: operationId: user_v1_user_prefs_list description: DRF class for interacting with the UserPreference ORM parameters: - name: key in: query description: '' required: false type: string - name: user in: query description: '' required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/UserPreference' tags: - user parameters: [] /user/v1/user_prefs/{id}/: get: operationId: user_v1_user_prefs_read description: DRF class for interacting with the UserPreference ORM parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/UserPreference' tags: - user parameters: - name: id in: path description: A unique integer value identifying this user preference. required: true type: integer /user/v1/users/: get: operationId: user_v1_users_list description: DRF class for interacting with the User ORM object parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/user_api.User' tags: - user parameters: [] /user/v1/users/{id}/: get: operationId: user_v1_users_read description: DRF class for interacting with the User ORM object parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/user_api.User' tags: - user parameters: - name: id in: path description: A unique integer value identifying this user. required: true type: integer /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." parameters: [] responses: '201': description: '' tags: - user parameters: [] /user/v2/account/registration/: get: operationId: user_v2_account_registration_list description: HTTP end-points for creating a new user. parameters: [] responses: '200': description: '' tags: - user post: operationId: user_v2_account_registration_create summary: Create the user's account. description: "You must send all required form fields with the request.\n\nYou\ \ can optionally send a \"course_id\" param to indicate in analytics\nevents\ \ that the user registered while enrolling in a particular course." parameters: [] responses: '201': description: '' tags: - user parameters: [] /val/v0/videos/: get: operationId: val_v0_videos_list description: GETs or POST video objects parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Video' tags: - val post: operationId: val_v0_videos_create description: GETs or POST video objects parameters: - name: data in: body required: true schema: $ref: '#/definitions/Video' responses: '201': description: '' schema: $ref: '#/definitions/Video' tags: - val parameters: [] /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 }" parameters: [] responses: '201': description: '' tags: - val 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 ```" parameters: [] responses: '200': description: '' tags: - val parameters: [] /val/v0/videos/status/: patch: operationId: val_v0_videos_status_partial_update description: Update the status of a video. parameters: [] responses: '200': description: '' tags: - val parameters: [] /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. parameters: [] responses: '201': description: '' tags: - val parameters: [] /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. parameters: [] responses: '201': description: '' tags: - val parameters: [] /val/v0/videos/{edx_video_id}: get: operationId: val_v0_videos_read description: Gets a video instance given its edx_video_id parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Video' tags: - val put: operationId: val_v0_videos_update description: Gets a video instance given its edx_video_id parameters: - name: data in: body required: true schema: $ref: '#/definitions/Video' responses: '200': description: '' schema: $ref: '#/definitions/Video' tags: - val patch: operationId: val_v0_videos_partial_update description: Gets a video instance given its edx_video_id parameters: - name: data in: body required: true schema: $ref: '#/definitions/Video' responses: '200': description: '' schema: $ref: '#/definitions/Video' tags: - val delete: operationId: val_v0_videos_delete description: Gets a video instance given its edx_video_id parameters: [] responses: '204': description: '' tags: - val parameters: - name: edx_video_id in: path required: true type: string pattern: ^[a-zA-Z0-9\-_]*$ /xblock/v2/xblocks/{usage_key_str}/: get: operationId: xblock_v2_xblocks_read summary: Get metadata about the specified block. description: "Accepts an \"include\" query parameter which must be a comma separated\ \ list of keys to include. Valid keys are\n\"index_dictionary\" and \"student_view_data\"\ ." parameters: [] responses: '200': description: '' tags: - xblock parameters: - name: usage_key_str in: path required: true type: string /xblock/v2/xblocks/{usage_key_str}/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\nthe given XBlock handler." description: The URL will expire but is guaranteed to be valid for a minimum of 2 days. parameters: [] responses: '200': description: '' tags: - xblock parameters: - name: handler_name in: path required: true type: string - name: usage_key_str in: path required: true type: string /xblock/v2/xblocks/{usage_key_str}/view/{view_name}/: get: operationId: xblock_v2_xblocks_view_read description: Get the HTML, JS, and CSS needed to render the given XBlock. parameters: [] responses: '200': description: '' tags: - xblock parameters: - name: usage_key_str in: path required: true type: string - name: view_name in: path required: true type: string definitions: CohortUsersAPI: required: - username type: object properties: username: title: Username description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 email: title: Email address 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: 'OPTIONAL: This is the SKU (stock keeping unit) of this mode in the external ecommerce service. Leave this blank if the course has not yet been migrated to the ecommerce service.' type: string maxLength: 255 x-nullable: true bulk_sku: title: Bulk SKU description: This is the bulk SKU (stock keeping unit) of this mode in the external ecommerce service. type: string maxLength: 255 x-nullable: true expires: title: Expires type: string format: date-time x-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 x-nullable: true modes: type: array items: $ref: '#/definitions/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 CourseGoal: required: - user - course_key type: object properties: user: title: User type: string pattern: ^[\w.@+-]+$ course_key: title: Course key type: string maxLength: 255 minLength: 1 goal_key: title: Goal key type: string enum: - certify - complete - explore - unsure 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 CourseHomeMetadata: required: - course_id - is_enrolled - is_self_paced - is_staff - number - org - original_user_is_staff - tabs - title type: object properties: 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 tabs: type: array items: $ref: '#/definitions/CourseTab' title: title: Title type: string minLength: 1 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 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 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: '#/definitions/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: title: Course blocks type: object properties: blocks: title: Blocks type: string readOnly: true CourseGoals: title: Course goals required: - goal_options - selected_goal type: object properties: goal_options: type: array items: type: string selected_goal: title: Selected goal type: object additionalProperties: type: string 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: title: Dates widget required: - course_date_blocks - dates_tab_link - user_timezone type: object properties: course_date_blocks: type: array items: $ref: '#/definitions/DateSummary' dates_tab_link: title: Dates tab link type: string minLength: 1 user_timezone: title: User timezone type: string minLength: 1 EnrollAlert: title: Enroll alert 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: title: Resume course 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: - course_blocks - course_expired_html - course_goals - course_tools - dates_widget - enroll_alert - handouts_html - has_ended - offer_html - resume_course - welcome_message_html type: object properties: dates_banner_info: title: Dates banner info type: string readOnly: true course_blocks: $ref: '#/definitions/CourseBlock' course_expired_html: title: Course expired html type: string minLength: 1 course_goals: $ref: '#/definitions/CourseGoals' course_tools: type: array items: $ref: '#/definitions/CourseTool' dates_widget: $ref: '#/definitions/DatesWidget' enroll_alert: $ref: '#/definitions/EnrollAlert' handouts_html: title: Handouts html type: string minLength: 1 has_ended: title: Has ended type: boolean offer_html: title: Offer html type: string minLength: 1 resume_course: $ref: '#/definitions/ResumeCourse' welcome_message_html: title: Welcome message html type: string minLength: 1 CertificateData: title: Certificate data required: - cert_status - cert_web_view_url - download_url - msg - title 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 msg: title: Msg type: string minLength: 1 title: title: Title type: string minLength: 1 CreditRequirement: required: - display_name - status - status_date type: object properties: display_name: title: Display name type: string minLength: 1 min_grade: title: Min grade type: string readOnly: true status: title: Status type: string minLength: 1 status_date: title: Status date type: string format: date-time CreditCourseRequirements: title: Credit course requirements required: - eligibility_status - requirements type: object properties: dashboard_url: title: Dashboard url type: string readOnly: true eligibility_status: title: Eligibility status type: string minLength: 1 requirements: type: array items: $ref: '#/definitions/CreditRequirement' GradedTotal: title: Graded total required: - earned - possible type: object properties: earned: title: Earned type: number possible: title: Possible type: number Subsection: required: - display_name - due - format - graded - graded_total - percent_graded - show_correctness type: object properties: display_name: title: Display name type: string minLength: 1 due: title: Due type: string format: date-time format: title: Format type: string minLength: 1 graded: title: Graded type: boolean graded_total: $ref: '#/definitions/GradedTotal' 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 Chapter: required: - display_name - subsections type: object properties: display_name: title: Display name type: string minLength: 1 subsections: type: array items: $ref: '#/definitions/Subsection' VerificationData: title: Verification data 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: - certificate_data - credit_course_requirements - credit_support_url - courseware_summary - enrollment_mode - studio_url - user_timezone - verification_data type: object properties: certificate_data: $ref: '#/definitions/CertificateData' credit_course_requirements: $ref: '#/definitions/CreditCourseRequirements' credit_support_url: title: Credit support url type: string format: uri minLength: 1 courseware_summary: type: array items: $ref: '#/definitions/Chapter' enrollment_mode: title: Enrollment mode type: string minLength: 1 studio_url: title: Studio url type: string minLength: 1 user_timezone: title: User timezone type: string minLength: 1 verification_data: $ref: '#/definitions/VerificationData' 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 _Media: title: Course image type: object properties: uri: title: Uri type: string readOnly: true Image: title: 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: title: Media required: - course_image - course_video - image type: object properties: course_image: $ref: '#/definitions/_Media' course_video: $ref: '#/definitions/_Media' image: $ref: '#/definitions/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: '#/definitions/_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: '#/definitions/_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 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: Deadline for purchasing and requesting credit. 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: Name of the credit provider displayed to users 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: When true, automatically notify the credit provider when a user requests credit. In order for this to work, a shared secret key MUST be configured for the credit provider in secure auth settings. type: boolean fulfillment_instructions: title: Fulfillment instructions description: Plain text or html content for displaying further steps on receipt page *after* paying for the credit to get credit for a credit course against a credit provider. type: string x-nullable: true thumbnail_url: title: Thumbnail url description: Thumbnail image url of the credit provider. type: string format: uri maxLength: 255 minLength: 1 CourseEnrollmentsApiList: required: - course_id type: object properties: created: title: Created type: string format: date-time readOnly: 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 x-nullable: true created: title: Created type: string format: date-time readOnly: true modified: title: Modified 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 x-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 key: title: Key type: string maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 created: title: Created type: string format: date-time readOnly: true modified: title: Modified 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.@+-]+$ key: title: Key type: string maxLength: 255 minLength: 1 value: title: Value type: string minLength: 1 created: title: Created type: string format: date-time readOnly: true modified: title: Modified 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: Created type: string format: date-time readOnly: true modified: title: Modified type: string format: date-time readOnly: true Organization: required: - name - short_name type: object properties: id: title: ID type: integer readOnly: true created: title: Created type: string format: date-time readOnly: true modified: title: Modified type: string format: date-time readOnly: true name: title: Name type: string maxLength: 255 minLength: 1 short_name: title: Short Name description: 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 x-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 x-nullable: true format: uri 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: '#/definitions/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: '#/definitions/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: '#/definitions/CourseRunOverview' 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 user_api.User: type: object properties: id: title: ID type: integer readOnly: true url: title: Url type: string format: uri readOnly: true email: title: Email address type: string format: email readOnly: true minLength: 1 name: title: Name type: string readOnly: true username: title: Username description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. 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: '#/definitions/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 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: '#/definitions/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 x-nullable: true