Package: openedx-rest-api-client
The REST API client for Open edX REST API allows users to communicate with various edX REST APIs.
It is based onhttps://github.com/edx/edx-rest-api-client, whith a few differences:It does not depend on DjangoWhat is called ‘the client’ in edX’s version is now called ‘session’.As the edX’s version relies on Django’s cache, now the token is stored in memory under the scope of the session objectThe client here encompasses the session, and one function per REST API entry pointPart of the code is also taken from Opencraft’simplementation of the openedx client.Testing$ make validateUsageTheOpenedxRESTAPIClientobject starts a session with the LMS and provides methods to access the Open edX endpoints.# create clientclient=OpenedxRESTAPIClient('https://lms.example.com','client_id','client_secret')# get a list of all coursescourses=client.list_all_courses()Function Referencelist_all_coursesGet the full list of courses visible to the requesting user.
Calls the /api/courses/v1/courses LMS endpointArgs:org: filter by organizationReturns:List of dict in the form:[
   {
      "blocks_url": "https://lms.example.com/api/courses/v1/blocks/?course_id=course-v1%3A<org>%2B<code>%2B<edition>",
      "effort":"01:00",
      "end":"None",
      "enrollment_start":"None",
      "enrollment_end":"None",
      "id":"course-v1:<org>+<code>+<run>",
      "media":{
         "course_image":{
            "uri":"<img path>"
         },
         "course_video":{
            "uri":"None"
         },
         "image":{
            "raw":"<img url>",
            "small":"<img url>",
            "large":"<img url>"
         }
      },
      "name":"Course name",
      "number":"<edition>",
      "org":"<org>",
      "short_description":"",
      "start":"2018-01-11T00:00:00Z",
      "start_display":"11 de Enero de 2018",
      "start_type":"timestamp",
      "pacing":"instructor",
      "mobile_available":true,
      "hidden":false,
      "invitation_only":false,
      "course_id":"course-v1:<org>+<code>+<edition>"
   },
   ...
]change_enrollmentEnroll or unenroll (depending on the value of action) the list of emails in the list of courses.
Calls the /api/bulk_enroll/v1/bulk_enroll/ LMS endpointArgs:emails: list of emails to enrollcourses: list of course ids to enrollaction: can be ‘enroll’ or ‘unenroll’url: url of the LMS (base or site). If not specified, uses the base url of the session. Defaults to the LMS base.auto_enroll: if true, the users will be automatically enrolled as soon as they register. Defaults to true.email_students: if true, an email will be sent with the update. Defaults to true.cohorts: List of cohort names to add the students to.Returns:dict in the form:{
   "action":"enroll",
   "courses":{
      "course-v1:ORG+CODE+EDITION":{
         "action":"enroll",
         "results":[
            {
               "identifier":"mail@example.com",
               "after":{
                  "enrollment":true,
                  "allowed":false,
                  "user":true,
                  "auto_enroll":false
               },
               "before":{
                  "enrollment":false,
                  "allowed":false,
                  "user":true,
                  "auto_enroll":false
               }
            },
            ...
         ],
         "auto_enroll":true
      },
      ...
   },
   "email_students":true,
   "auto_enroll":true
}Account validationValidates the account registration form. Calls the/api/user/v1/validation/registrationAPI endpoint.Args:url: url of the LMS (base or site). If not specified, uses the base url of the session. Defaults to the LMS base.**kwargs: dict with form parameters to validate. E.g.:{
    email=<email>,
    username=<username>,
    name=<name>,
    password=<password>,
    honor_code=<honor_code>,
    terms_of_service=<terms_of_service>,
}Returns:
dict in the form:{
    'validation_decisions': {
        <field name>: <validation result, or empty if success>,
        ...
    },
    'username_suggestions': [<username suggestions * 3>]
}Account registrationRegisters a new user account. Calls the/api/user/v1/account/registration/API endpoint.Args:email: email to registerusername: username to registername: full name of the userpassword: passwordurl: url of the LMS (base or site). If not specified, uses the base url of the session.Defaults to the LMS base.Additional default fields accepted:name: full name of the userlevel_of_education *: one of:‘p’: ‘Doctorate’‘m’: “Master’s or professional degree”‘b’: “Bachelor’s degree”‘a’: “Associate degree”‘hs’: “Secondary/high school”‘jhs’: “Junior secondary/junior high/middle school”‘el’: “Elementary/primary school”‘none’: “No formal education”‘other’: “Other education”gender *: can be ‘m’, ‘f’, or ‘o’mailing_address *city *country: ISO3166-1 two letters country codes as used in django_countries.countries *goals *year_of_birth *: numeric 4-digit year of birthhonor_code *: Bool. If mandatory and not set will not create the account.terms_of_service *: Bool. If unset, will be set equally to honor_codemarketing_emails_opt_in *: Bool. If set, will add a is_marketable user attribute (see Student > User Attributes in Django admin)provider: Oauth2 provider informationsocial_auth_provider: Oauth2 provider information* Can be set as hidden, optional or mandatory in REGISTRATION_EXTRA_FIELDS setting.Returns:
Dict with the form:If successful:{
    'success': True,
    'redirect_url': <redirection url to finish the authorization and go to the dashboard>
}If error:{
    <field name>: [
        {'user_message': <error message>}
    ]
    'error_code': <error code>,
    'username_suggestions': [<username suggestions> * 3]
}How to ContributeTo contribute, please send a message toandres@aulasneo.com