Merge pull request #25020 from jramnai/registration-api
[ADD] /user_api endpoints in api-docs
This commit is contained in:
1057
docs/swagger.yaml
Executable file → Normal file
1057
docs/swagger.yaml
Executable file → Normal file
@@ -16,90 +16,6 @@ securityDefinitions:
|
||||
security:
|
||||
- Basic: []
|
||||
paths:
|
||||
/badges/v1/assertions/user/{username}/:
|
||||
get:
|
||||
operationId: badges_v1_assertions_user_read
|
||||
summary: '**Use Cases**'
|
||||
description: "Request a list of assertions for a user, optionally constrained\
|
||||
\ to a course.\n\n**Example Requests**\n\n GET /api/badges/v1/assertions/user/{username}/\n\
|
||||
\n**Response Values**\n\n Body comprised of a list of objects with the\
|
||||
\ following fields:\n\n * badge_class: The badge class the assertion was\
|
||||
\ awarded for. Represented as an object\n with the following fields:\n\
|
||||
\ * slug: The identifier for the badge class\n * issuing_component:\
|
||||
\ The software component responsible for issuing this badge.\n * display_name:\
|
||||
\ The display name of the badge.\n * course_id: The course key of the\
|
||||
\ course this badge is scoped to, or null if it isn't scoped to a course.\n\
|
||||
\ * description: A description of the award and its significance.\n\
|
||||
\ * criteria: A description of what is needed to obtain this award.\n\
|
||||
\ * image_url: A URL to the icon image used to represent this award.\n\
|
||||
\ * image_url: The baked assertion image derived from the badge_class icon--\
|
||||
\ contains metadata about the award\n in its headers.\n * assertion_url:\
|
||||
\ The URL to the OpenBadges BadgeAssertion object, for verification by compatible\
|
||||
\ tools\n and software.\n\n**Params**\n\n * slug (optional): The identifier\
|
||||
\ for a particular badge class to filter by.\n * issuing_component (optional):\
|
||||
\ The issuing component for a particular badge class to filter by\n (requires\
|
||||
\ slug to have been specified, or this will be ignored.) If slug is provided\
|
||||
\ and this is not,\n assumes the issuing_component should be empty.\n\
|
||||
\ * course_id (optional): Returns assertions that were awarded as part\
|
||||
\ of a particular course. If slug is\n provided, and this field is not\
|
||||
\ specified, assumes that the target badge has an empty course_id field.\n\
|
||||
\ '*' may be used to get all badges with the specified slug, issuing_component\
|
||||
\ combination across all courses.\n\n**Returns**\n\n * 200 on success,\
|
||||
\ with a list of Badge Assertion objects.\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\n\n\
|
||||
\ {\n \"count\": 7,\n \"previous\": null,\n \"num_pages\"\
|
||||
: 1,\n \"results\": [\n {\n \"badge_class\"\
|
||||
: {\n \"slug\": \"special_award\",\n \
|
||||
\ \"issuing_component\": \"openedx__course\",\n \"display_name\"\
|
||||
: \"Very Special Award\",\n \"course_id\": \"course-v1:edX+DemoX+Demo_Course\"\
|
||||
,\n \"description\": \"Awarded for people who did something\
|
||||
\ incredibly special\",\n \"criteria\": \"Do something\
|
||||
\ incredibly special.\",\n \"image\": \"http://example.com/media/badge_classes/badges/special_xdpqpBv_9FYOZwN.png\"\
|
||||
\n },\n \"image_url\": \"http://badges.example.com/media/issued/cd75b69fc1c979fcc1697c8403da2bdf.png\"\
|
||||
,\n \"assertion_url\": \"http://badges.example.com/public/assertions/07020647-e772-44dd-98b7-d13d34335ca6\"\
|
||||
\n },\n ...\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/BadgeAssertion'
|
||||
tags:
|
||||
- badges
|
||||
parameters:
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/bookmarks/v1/bookmarks/:
|
||||
get:
|
||||
operationId: bookmarks_v1_bookmarks_list
|
||||
@@ -180,137 +96,6 @@ paths:
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/bulk_enroll/v1/bulk_enroll:
|
||||
post:
|
||||
operationId: bulk_enroll_v1_bulk_enroll_create
|
||||
summary: '**Use Case**'
|
||||
description: "Enroll multiple users in one or more courses.\n\n**Example Request**\n\
|
||||
\n POST /api/bulk_enroll/v1/bulk_enroll/ {\n \"auto_enroll\": true,\n\
|
||||
\ \"email_students\": true,\n \"action\": \"enroll\",\n \
|
||||
\ \"courses\": \"course-v1:edX+Demo+123,course-v1:edX+Demo2+456\",\n \
|
||||
\ \"cohorts\": \"cohortA,cohortA\",\n \"identifiers\": \"brandon@example.com,yamilah@example.com\"\
|
||||
\n }\n\n **POST Parameters**\n\n A POST request can include the\
|
||||
\ following parameters.\n\n * auto_enroll: When set to `true`, students\
|
||||
\ will be enrolled as soon\n as they register.\n * email_students:\
|
||||
\ When set to `true`, students will be sent email\n notifications upon\
|
||||
\ enrollment.\n * action: Can either be set to \"enroll\" or \"unenroll\"\
|
||||
. This determines the behavior\n * cohorts: Optional. If provided, the\
|
||||
\ number of items in the list should be equal to\n the number of courses.\
|
||||
\ first cohort coressponds with the first course and so on.\n The learners\
|
||||
\ will be added to the corresponding cohort.\n\n**Response Values**\n\n \
|
||||
\ If the supplied course data is valid and the enrollments were\n successful,\
|
||||
\ an HTTP 200 \"OK\" response is returned.\n\n The HTTP 200 response body\
|
||||
\ contains a list of response data for each\n enrollment. (See the `instructor.views.api.students_update_enrollment`\n\
|
||||
\ docstring for the specifics of the response data available for each\n\
|
||||
\ enrollment)\n\n If a cohorts list is provided, additional 'cohort'\
|
||||
\ keys will be added\n to the 'before' and 'after' states."
|
||||
parameters: []
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
tags:
|
||||
- bulk_enroll
|
||||
parameters: []
|
||||
/ccx/v0/ccx/:
|
||||
get:
|
||||
operationId: ccx_v0_ccx_list
|
||||
summary: Gets a list of CCX Courses for a given Master Course.
|
||||
description: Additional parameters are allowed for pagination purposes.
|
||||
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/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
post:
|
||||
operationId: ccx_v0_ccx_create
|
||||
description: Creates a new CCX course for a given Master Course.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
responses:
|
||||
'201':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
parameters: []
|
||||
/ccx/v0/ccx/{ccx_course_id}/:
|
||||
get:
|
||||
operationId: ccx_v0_ccx_read
|
||||
description: Gets a CCX Course information.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
patch:
|
||||
operationId: ccx_v0_ccx_partial_update
|
||||
description: Modifies a CCX course.
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/CCXCourse'
|
||||
tags:
|
||||
- ccx
|
||||
delete:
|
||||
operationId: ccx_v0_ccx_delete
|
||||
description: Deletes a CCX course.
|
||||
parameters: []
|
||||
responses:
|
||||
'204':
|
||||
description: ''
|
||||
tags:
|
||||
- ccx
|
||||
parameters:
|
||||
- name: ccx_course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/certificates/v0/certificates/{username}/:
|
||||
get:
|
||||
operationId: certificates_v0_certificates_read
|
||||
@@ -2856,17 +2641,6 @@ paths:
|
||||
tags:
|
||||
- edxnotes
|
||||
parameters: []
|
||||
/embargo/v1/course_access/:
|
||||
get:
|
||||
operationId: embargo_v1_course_access_list
|
||||
description: GET /api/embargo/v1/course_access/
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- embargo
|
||||
parameters: []
|
||||
/enrollment/v1/course/{course_id}:
|
||||
get:
|
||||
operationId: enrollment_v1_course_read
|
||||
@@ -2891,8 +2665,8 @@ paths:
|
||||
\ 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\
|
||||
\ 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\
|
||||
@@ -3215,6 +2989,25 @@ paths:
|
||||
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
|
||||
@@ -3643,226 +3436,6 @@ paths:
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/course_info/{course_id}/handouts:
|
||||
get:
|
||||
operationId: mobile_course_info_handouts_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get the HTML for course handouts.\n\n**Example Request**\n\n \
|
||||
\ GET /api/mobile/v0.5/course_info/{course_id}/handouts\n\n**Response Values**\n\
|
||||
\n If the request is successful, the request returns an HTTP 200 \"OK\"\
|
||||
\n response along with the following value.\n\n * handouts_html: The\
|
||||
\ HTML for course handouts."
|
||||
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:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/course_info/{course_id}/updates:
|
||||
get:
|
||||
operationId: mobile_course_info_updates_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get the content for course updates.\n\n**Example Request**\n\n\
|
||||
\ GET /api/mobile/v0.5/course_info/{course_id}/updates\n\n**Response Values**\n\
|
||||
\n If the request is successful, the request returns an HTTP 200 \"OK\"\
|
||||
\n response along with an array of course updates. Each course update\n\
|
||||
\ contains the following values.\n\n * content: The content, as\
|
||||
\ an HTML string, of the course update.\n * date: The date of the course\
|
||||
\ update.\n * id: The unique identifier of the update.\n * status:\
|
||||
\ Whether the update is visible or not."
|
||||
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:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/my_user_info:
|
||||
get:
|
||||
operationId: mobile_my_user_info_list
|
||||
description: Redirect to the currently-logged-in user's info page
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/mobile/{api_version}/users/{username}:
|
||||
get:
|
||||
operationId: mobile_users_read
|
||||
summary: '**Use Case**'
|
||||
description: "Get information about the specified user and access other resources\n\
|
||||
\ the user has permissions for.\n\n Users are redirected to this endpoint\
|
||||
\ after they sign in.\n\n You can use the **course_enrollments** value\
|
||||
\ in the response to get a\n list of courses the user is enrolled in.\n\
|
||||
\n**Example Request**\n\n GET /api/mobile/{version}/users/{username}\n\n\
|
||||
**Response Values**\n\n If the request is successful, the request returns\
|
||||
\ an HTTP 200 \"OK\" response.\n\n The HTTP 200 response has the following\
|
||||
\ values.\n\n * course_enrollments: The URI to list the courses the currently\
|
||||
\ signed\n in user is enrolled in.\n * email: The email address of\
|
||||
\ the currently signed in user.\n * id: The ID of the user.\n * name:\
|
||||
\ The full name of the currently signed in user.\n * username: The username\
|
||||
\ of the currently signed in user."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
$ref: '#/definitions/mobile_api.User'
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
|
||||
only.
|
||||
required: true
|
||||
type: string
|
||||
pattern: ^[\w.@+-]+$
|
||||
/mobile/{api_version}/users/{username}/course_enrollments/:
|
||||
get:
|
||||
operationId: mobile_users_course_enrollments_list
|
||||
summary: '**Use Case**'
|
||||
description: "Get information about the courses that the currently signed in\
|
||||
\ user is\n enrolled in.\n\n v1 differs from v0.5 version by returning\
|
||||
\ ALL enrollments for\n a user rather than only the enrollments the user\
|
||||
\ has access to (that haven't expired).\n An additional attribute \"expiration\"\
|
||||
\ has been added to the response, which lists the date\n when access to\
|
||||
\ the course will expire or null if it doesn't expire.\n\n**Example Request**\n\
|
||||
\n GET /api/mobile/v1/users/{username}/course_enrollments/\n\n**Response\
|
||||
\ Values**\n\n If the request for information about the user is successful,\
|
||||
\ the\n request returns an HTTP 200 \"OK\" response.\n\n The HTTP 200\
|
||||
\ response has the following values.\n\n * expiration: The course expiration\
|
||||
\ date for given user course pair\n or null if the course does not expire.\n\
|
||||
\ * certificate: Information about the user's earned certificate in the\n\
|
||||
\ course.\n * course: A collection of the following data about the\
|
||||
\ course.\n\n * courseware_access: A JSON representation with access information\
|
||||
\ for the course,\n including any access errors.\n\n * course_about:\
|
||||
\ The URL to the course about page.\n * course_sharing_utm_parameters:\
|
||||
\ Encoded UTM parameters to be included in course sharing url\n * course_handouts:\
|
||||
\ The URI to get data for course handouts.\n * course_image: The path\
|
||||
\ to the course image.\n * course_updates: The URI to get data for course\
|
||||
\ updates.\n * discussion_url: The URI to access data for course discussions\
|
||||
\ if\n it is enabled, otherwise null.\n * end: The end date of\
|
||||
\ the course.\n * id: The unique ID of the course.\n * name: The\
|
||||
\ name of the course.\n * number: The course number.\n * org: The\
|
||||
\ organization that created the course.\n * start: The date and time\
|
||||
\ when the course starts.\n * start_display:\n If start_type is\
|
||||
\ a string, then the advertised_start date for the course.\n If start_type\
|
||||
\ is a timestamp, then a formatted date for the start of the course.\n \
|
||||
\ If start_type is empty, then the value is None and it indicates that\
|
||||
\ the course has not yet started.\n * start_type: One of either \"string\"\
|
||||
, \"timestamp\", or \"empty\"\n * subscription_id: A unique \"clean\"\
|
||||
\ (alphanumeric with '_') ID of\n the course.\n * video_outline:\
|
||||
\ The URI to get the list of all videos that the user\n can access\
|
||||
\ in the course.\n\n * created: The date the course was created.\n *\
|
||||
\ is_active: Whether the course is currently active. Possible values\n \
|
||||
\ are true or false.\n * mode: The type of certificate registration for\
|
||||
\ this course (honor or\n certified).\n * url: URL to the downloadable\
|
||||
\ version of the certificate, if exists."
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/CourseEnrollment'
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
? /mobile/{api_version}/users/{username}/course_status_info/(P{course_id}[/+]+{var}[/+]+api/mobile/{api_version}/users/{username}/course_status_info/(P{course_id}[/+]+(/|+)[/+]+{var}[/]+)
|
||||
: get:
|
||||
operationId: mobile_users_course_status_info_+]+api_mobile_users_course_status_info_+]+(_|+)[_]+)_list
|
||||
description: Get the ID of the module that the specified user last visited in
|
||||
the specified course.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
patch:
|
||||
operationId: mobile_users_course_status_info_+]+api_mobile_users_course_status_info_+]+(_|+)[_]+)_partial_update
|
||||
description: Update the ID of the module that the specified user last visited
|
||||
in the specified course.
|
||||
parameters: []
|
||||
responses:
|
||||
'200':
|
||||
description: ''
|
||||
tags:
|
||||
- mobile
|
||||
parameters:
|
||||
- name: api_version
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: course_id
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: username
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
- name: var
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
/organizations/v0/organizations/:
|
||||
get:
|
||||
operationId: organizations_v0_organizations_list
|
||||
@@ -4612,6 +4185,18 @@ paths:
|
||||
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
|
||||
@@ -4623,6 +4208,63 @@ paths:
|
||||
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
|
||||
@@ -4925,6 +4567,51 @@ paths:
|
||||
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
|
||||
@@ -4938,6 +4625,90 @@ paths:
|
||||
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
|
||||
@@ -5003,6 +4774,134 @@ paths:
|
||||
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
|
||||
@@ -5021,6 +4920,29 @@ paths:
|
||||
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
|
||||
@@ -5268,116 +5190,6 @@ paths:
|
||||
required: true
|
||||
type: string
|
||||
definitions:
|
||||
BadgeClass:
|
||||
title: Badge class
|
||||
required:
|
||||
- slug
|
||||
- display_name
|
||||
- description
|
||||
- criteria
|
||||
type: object
|
||||
properties:
|
||||
slug:
|
||||
title: Slug
|
||||
type: string
|
||||
format: slug
|
||||
pattern: ^[-a-zA-Z0-9_]+$
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
issuing_component:
|
||||
title: Issuing component
|
||||
type: string
|
||||
format: slug
|
||||
pattern: ^[-a-zA-Z0-9_]+$
|
||||
default: ''
|
||||
maxLength: 50
|
||||
display_name:
|
||||
title: Display name
|
||||
type: string
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
course_id:
|
||||
title: Course id
|
||||
type: string
|
||||
maxLength: 255
|
||||
description:
|
||||
title: Description
|
||||
type: string
|
||||
minLength: 1
|
||||
criteria:
|
||||
title: Criteria
|
||||
type: string
|
||||
minLength: 1
|
||||
image_url:
|
||||
title: Image url
|
||||
type: string
|
||||
readOnly: true
|
||||
format: uri
|
||||
BadgeAssertion:
|
||||
required:
|
||||
- image_url
|
||||
- assertion_url
|
||||
type: object
|
||||
properties:
|
||||
badge_class:
|
||||
$ref: '#/definitions/BadgeClass'
|
||||
image_url:
|
||||
title: Image url
|
||||
type: string
|
||||
format: uri
|
||||
maxLength: 200
|
||||
minLength: 1
|
||||
assertion_url:
|
||||
title: Assertion url
|
||||
type: string
|
||||
format: uri
|
||||
maxLength: 200
|
||||
minLength: 1
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
CCXCourse:
|
||||
required:
|
||||
- master_course_id
|
||||
- display_name
|
||||
- coach_email
|
||||
- start
|
||||
- due
|
||||
- max_students_allowed
|
||||
type: object
|
||||
properties:
|
||||
ccx_course_id:
|
||||
title: Ccx course id
|
||||
type: string
|
||||
readOnly: true
|
||||
master_course_id:
|
||||
title: Master course id
|
||||
type: string
|
||||
minLength: 1
|
||||
display_name:
|
||||
title: Display name
|
||||
type: string
|
||||
minLength: 1
|
||||
coach_email:
|
||||
title: Coach email
|
||||
type: string
|
||||
format: email
|
||||
minLength: 1
|
||||
start:
|
||||
title: Start
|
||||
type: string
|
||||
due:
|
||||
title: Due
|
||||
type: string
|
||||
max_students_allowed:
|
||||
title: Max students allowed
|
||||
type: integer
|
||||
course_modules:
|
||||
title: Course modules
|
||||
type: string
|
||||
readOnly: true
|
||||
CohortUsersAPI:
|
||||
required:
|
||||
- username
|
||||
@@ -6549,64 +6361,6 @@ definitions:
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mobile_api.User:
|
||||
required:
|
||||
- username
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
title: ID
|
||||
type: integer
|
||||
readOnly: true
|
||||
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
|
||||
course_enrollments:
|
||||
title: Course enrollments
|
||||
type: string
|
||||
readOnly: true
|
||||
CourseEnrollment:
|
||||
type: object
|
||||
properties:
|
||||
audit_access_expires:
|
||||
title: Audit access expires
|
||||
type: string
|
||||
readOnly: true
|
||||
created:
|
||||
title: Created
|
||||
type: string
|
||||
format: date-time
|
||||
readOnly: true
|
||||
mode:
|
||||
title: Mode
|
||||
type: string
|
||||
maxLength: 100
|
||||
minLength: 1
|
||||
is_active:
|
||||
title: Is active
|
||||
type: boolean
|
||||
course:
|
||||
title: Course
|
||||
type: string
|
||||
readOnly: true
|
||||
certificate:
|
||||
title: Certificate
|
||||
type: string
|
||||
readOnly: true
|
||||
Organization:
|
||||
required:
|
||||
- name
|
||||
@@ -6822,6 +6576,77 @@ definitions:
|
||||
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
|
||||
|
||||
@@ -69,7 +69,7 @@ define(['backbone',
|
||||
|
||||
request = requests[1];
|
||||
expect(request.method).toBe('GET');
|
||||
expect(request.url).toBe('/user_api/v1/preferences/time_zones/?country_code=1');
|
||||
expect(request.url).toBe('/api/user/v1/preferences/time_zones/?country_code=1');
|
||||
AjaxHelpers.respondWithJson(requests, Helpers.TIME_ZONE_RESPONSE);
|
||||
|
||||
request = requests[2];
|
||||
@@ -232,7 +232,7 @@ define(['backbone',
|
||||
|
||||
request = requests[1];
|
||||
expect(request.method).toBe('GET');
|
||||
expect(request.url).toBe('/user_api/v1/preferences/time_zones/?country_code=1');
|
||||
expect(request.url).toBe('/api/user/v1/preferences/time_zones/?country_code=1');
|
||||
AjaxHelpers.respondWithJson(requests, Helpers.TIME_ZONE_RESPONSE);
|
||||
|
||||
request = requests[2];
|
||||
|
||||
@@ -95,7 +95,7 @@ define(['backbone',
|
||||
AjaxHelpers.expectRequest(
|
||||
requests,
|
||||
'GET',
|
||||
'/user_api/v1/preferences/time_zones/?country_code=GY'
|
||||
'/api/user/v1/preferences/time_zones/?country_code=GY'
|
||||
);
|
||||
AjaxHelpers.respondWithJson(requests, [
|
||||
{time_zone: 'America/Guyana', description: 'America/Guyana (ECT, UTC-0500)'},
|
||||
|
||||
@@ -5,7 +5,7 @@ define(['edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers', 'js/student_account
|
||||
describe('EmailOptInInterface', function() {
|
||||
var COURSE_KEY = 'edX/DemoX/Fall',
|
||||
EMAIL_OPT_IN = 'True',
|
||||
EMAIL_OPT_IN_URL = '/user_api/v1/preferences/email_opt_in/';
|
||||
EMAIL_OPT_IN_URL = '/api/user/v1/preferences/email_opt_in/';
|
||||
|
||||
it('Opts in for organization emails', function() {
|
||||
// Spy on Ajax requests
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
},
|
||||
FORM_DESCRIPTION = {
|
||||
method: 'post',
|
||||
submit_url: '/user_api/v1/account/login_session/',
|
||||
submit_url: '/api/user/v1/account/login_session/',
|
||||
fields: [
|
||||
{
|
||||
placeholder: 'username@domain.com',
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
},
|
||||
FORM_DESCRIPTION = {
|
||||
method: 'post',
|
||||
submit_url: '/user_api/v1/account/registration/',
|
||||
submit_url: '/api/user/v1/account/registration/',
|
||||
validation_url: '/api/user/v1/validation/registration',
|
||||
fields: [
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
var EmailOptInInterface = {
|
||||
|
||||
urls: {
|
||||
emailOptInUrl: '/user_api/v1/preferences/email_opt_in/'
|
||||
emailOptInUrl: '/api/user/v1/preferences/email_opt_in/'
|
||||
},
|
||||
|
||||
headers: {
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
var view = this;
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/user_api/v1/preferences/time_zones/',
|
||||
url: '/api/user/v1/preferences/time_zones/',
|
||||
data: {country_code: user.attributes.country},
|
||||
success: function(data) {
|
||||
var countryTimeZones = $.map(data, function(timeZoneInfo) {
|
||||
|
||||
@@ -30,7 +30,7 @@ urlpatterns = [
|
||||
url(
|
||||
r'^user_api/v1/preferences/email_opt_in/$',
|
||||
user_api_views.UpdateEmailOptInPreference.as_view(),
|
||||
name="preferences_email_opt_in"
|
||||
name="preferences_email_opt_in_legacy"
|
||||
),
|
||||
url(
|
||||
r'^user_api/v1/preferences/time_zones/$',
|
||||
|
||||
@@ -61,9 +61,9 @@ from ..tests.factories import UserPreferenceFactory
|
||||
from ..tests.test_constants import SORTED_COUNTRIES
|
||||
from .test_helpers import TestCaseForm
|
||||
|
||||
USER_LIST_URI = "/user_api/v1/users/"
|
||||
USER_PREFERENCE_LIST_URI = "/user_api/v1/user_prefs/"
|
||||
ROLE_LIST_URI = "/user_api/v1/forum_roles/Moderator/users/"
|
||||
USER_LIST_URI = "/api/user/v1/users/"
|
||||
USER_PREFERENCE_LIST_URI = "/api/user/v1/user_prefs/"
|
||||
ROLE_LIST_URI = "/api/user/v1/forum_roles/Moderator/users/"
|
||||
|
||||
|
||||
class UserAPITestCase(ApiTestCase):
|
||||
@@ -514,7 +514,7 @@ class PreferenceUsersListViewTest(UserApiTestCase):
|
||||
"""
|
||||
Test cases covering the list viewing behavior for user preferences
|
||||
"""
|
||||
LIST_URI = "/user_api/v1/preferences/key0/users/"
|
||||
LIST_URI = "/api/user/v1/preferences/key0/users/"
|
||||
|
||||
def test_options(self):
|
||||
self.assertAllowedMethods(self.LIST_URI, ["OPTIONS", "GET", "HEAD"])
|
||||
@@ -676,8 +676,8 @@ class CountryTimeZoneListViewTest(UserApiTestCase):
|
||||
"""
|
||||
Test cases covering the list viewing behavior for country time zones
|
||||
"""
|
||||
ALL_TIME_ZONES_URI = "/user_api/v1/preferences/time_zones/"
|
||||
COUNTRY_TIME_ZONES_URI = "/user_api/v1/preferences/time_zones/?country_code=cA"
|
||||
ALL_TIME_ZONES_URI = "/api/user/v1/preferences/time_zones/"
|
||||
COUNTRY_TIME_ZONES_URI = "/api/user/v1/preferences/time_zones/?country_code=cA"
|
||||
|
||||
@ddt.data(ALL_TIME_ZONES_URI, COUNTRY_TIME_ZONES_URI)
|
||||
def test_options(self, country_uri):
|
||||
|
||||
@@ -4,7 +4,8 @@ Defines the URL routes for this app.
|
||||
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import url
|
||||
from django.conf.urls import include, url
|
||||
from rest_framework import routers
|
||||
|
||||
from ..profile_images.views import ProfileImageView
|
||||
from .accounts.views import (
|
||||
@@ -17,6 +18,8 @@ from .accounts.views import (
|
||||
LMSAccountRetirementView,
|
||||
UsernameReplacementView
|
||||
)
|
||||
from . import views as user_api_views
|
||||
from .models import UserPreference
|
||||
from .preferences.views import PreferencesDetailView, PreferencesView
|
||||
from .verification_api.views import IDVerificationStatusView, IDVerificationStatusDetailsView
|
||||
|
||||
@@ -70,6 +73,10 @@ RETIREMENT_LMS_POST = LMSAccountRetirementView.as_view({
|
||||
'post': 'post',
|
||||
})
|
||||
|
||||
USER_API_ROUTER = routers.DefaultRouter()
|
||||
USER_API_ROUTER.register(r'users', user_api_views.UserViewSet)
|
||||
USER_API_ROUTER.register(r'user_prefs', user_api_views.UserPreferenceViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
r'^v1/me$',
|
||||
@@ -171,4 +178,31 @@ urlpatterns = [
|
||||
PreferencesDetailView.as_view(),
|
||||
name='preferences_detail_api'
|
||||
),
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(r'^v1/', include(USER_API_ROUTER.urls)),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^v1/preferences/(?P<pref_key>{})/users/$'.format(UserPreference.KEY_REGEX),
|
||||
user_api_views.PreferenceUsersListView.as_view()
|
||||
),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^v1/forum_roles/(?P<name>[a-zA-Z]+)/users/$',
|
||||
user_api_views.ForumRoleUsersListView.as_view()
|
||||
),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^v1/preferences/email_opt_in/$',
|
||||
user_api_views.UpdateEmailOptInPreference.as_view(),
|
||||
name="preferences_email_opt_in"
|
||||
),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^v1/preferences/time_zones/$',
|
||||
user_api_views.CountryTimeZoneListView.as_view(),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -148,9 +148,9 @@ class CountryTimeZoneListView(generics.ListAPIView):
|
||||
|
||||
**Example Requests**
|
||||
|
||||
GET /user_api/v1/preferences/time_zones/
|
||||
GET /api/user/v1/preferences/time_zones/
|
||||
|
||||
GET /user_api/v1/preferences/time_zones/?country_code=FR
|
||||
GET /api/user/v1/preferences/time_zones/?country_code=FR
|
||||
|
||||
**Example GET Response**
|
||||
|
||||
|
||||
@@ -23,13 +23,24 @@ urlpatterns = [
|
||||
url(r'^create_account$', register.RegistrationView.as_view(), name='create_account'),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^api/user/v1/account/registration/$',
|
||||
register.RegistrationView.as_view(),
|
||||
name="user_api_registration"
|
||||
),
|
||||
# `user_api` prefix is preserved for backwards compatibility.
|
||||
url(r'^user_api/v1/account/registration/$', register.RegistrationView.as_view(),
|
||||
name="user_api_registration"),
|
||||
name="user_api_registration_legacy"),
|
||||
|
||||
# V2 is created to avoid backward compatibility issue with confirm_email
|
||||
url(
|
||||
r'^api/user/v2/account/registration/$',
|
||||
register.RegistrationView.as_view(),
|
||||
name="user_api_registration_v2"
|
||||
),
|
||||
# legacy url
|
||||
url(r'^user_api/v2/account/registration/$', register.RegistrationView.as_view(),
|
||||
name="user_api_registration_v2"),
|
||||
name="user_api_registration_v2_legacy"),
|
||||
|
||||
# Moved from user_api/urls.py
|
||||
# `api/user` prefix is preserved for backwards compatibility.
|
||||
@@ -42,9 +53,14 @@ urlpatterns = [
|
||||
url(r'^login_ajax$', login.login_user, name="login_api"),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^api/user/v1/account/login_session/$',
|
||||
login.LoginSessionView.as_view(),
|
||||
name="user_api_login_session"
|
||||
),
|
||||
# `user_api` prefix is preserved for backwards compatibility.
|
||||
url(r'^user_api/v1/account/login_session/$', login.LoginSessionView.as_view(),
|
||||
name="user_api_login_session"),
|
||||
name="user_api_login_session_legacy"),
|
||||
|
||||
# Login Refresh of JWT Cookies
|
||||
url(r'^login_refresh$', login.login_refresh, name="login_refresh"),
|
||||
@@ -52,8 +68,14 @@ urlpatterns = [
|
||||
url(r'^logout$', logout.LogoutView.as_view(), name='logout'),
|
||||
|
||||
# Moved from user_api/legacy_urls.py
|
||||
url(
|
||||
r'^api/user/v1/account/password_reset/$',
|
||||
password_reset.PasswordResetView.as_view(),
|
||||
name="user_api_password_reset"
|
||||
),
|
||||
# legacy url
|
||||
url(r'^user_api/v1/account/password_reset/$', password_reset.PasswordResetView.as_view(),
|
||||
name="user_api_password_reset"),
|
||||
name="user_api_password_reset_legacy"),
|
||||
|
||||
# Password reset api views.
|
||||
url(r'^password_reset/$', password_reset.password_reset, name='password_reset'),
|
||||
@@ -65,8 +87,14 @@ urlpatterns = [
|
||||
url(r'^account/password$', password_reset.password_change_request_handler, name='password_change_request'),
|
||||
|
||||
# logistration MFE flow
|
||||
url(
|
||||
r'^api/user/v1/account/password_reset/token/validate/$',
|
||||
password_reset.PasswordResetTokenValidation.as_view(),
|
||||
name="user_api_password_reset_token_validate"
|
||||
),
|
||||
# legacy url
|
||||
url(r'^user_api/v1/account/password_reset/token/validate/$', password_reset.PasswordResetTokenValidation.as_view(),
|
||||
name="user_api_password_reset_token_validate"),
|
||||
name="user_api_password_reset_token_validate_legacy"),
|
||||
|
||||
# logistration MFE reset flow
|
||||
url(
|
||||
|
||||
@@ -581,7 +581,7 @@ class LoginSessionView(APIView):
|
||||
|
||||
Example Usage:
|
||||
|
||||
POST /user_api/v1/login_session
|
||||
POST /api/user/v1/login_session
|
||||
with POST params `email`, `password`.
|
||||
|
||||
200 {'success': true}
|
||||
|
||||
Reference in New Issue
Block a user