[gradebook2-dev] Gradebook2 webservices

Kim Huang kimhuang at oit.rutgers.edu
Mon Feb 27 06:28:52 PST 2012


Hi, Dear All,
Have you folks looked at sakai entity broker/provider(https://confluence.sakaiproject.org/display/SAKDEV/Entity+Provider+and+Broker)?  The rest of sakai tools such as assignment 2, site, chat,user provide web services to external through entity broker.  I am developing entity provider for gradebook for the local RU sakai, GB2 will be my next. I have the question of which direction I should take, either extending existing GB2 REST API or through entity broker.

Thanks,
-Kim

----- Original Message -----
From: "Thomas Amsler" <tpamsler at ucdavis.edu>
To: "Kelly Geng" <gengx at muohio.edu>
Cc: "Sakai Programming Team" <ucd-sakai-dev at smartsite.ucdavis.edu>, gradebook2-dev at collab.sakaiproject.org
Sent: Sunday, February 26, 2012 12:14:43 AM
Subject: Re: [gradebook2-dev] Gradebook2 webservices

The GB2 REST API was designe for internal use. However as you and
others have figured out, you can use that API if you have a valid user
session established. This is not optimal but will work if needed.

I think that there is a real need for augmenting the current REST API,
to make it more useful for "external" use. Maybe we can segment the
REST resources by functionality (internal, external) to allow for
different control/security (filter) structures, and implementation.

What APIs would we need to make accessible for "external" use? I would
think the primary candidates would be:

- Final Grade Submission: roster + grades
- Mobile access for student grades
- ?

If this makes sense, we probably should create a JIRA ticket (GRBK) for this.

Comments?

Best,
-- Thomas

On Sat, Feb 25, 2012 at 8:37 PM, Geng, Kelly <gengx at muohio.edu> wrote:
> Thomas,
>
> Do you have any documentation of the new web services? And do you have plan
> to provide web services for external use in the foreseeable future?
>
> Thanks,
> Kelly
>
>
> -----Original Message-----
> From: Thomas Amsler [mailto:tpamsler at ucdavis.edu]
> Sent: Friday, February 24, 2012 5:24 PM
> To: Geng, Kelly
> Cc: Jon Gorrono; Sakai Programming Team;
> gradebook2-dev at collab.sakaiproject.org
> Subject: Re: [gradebook2-dev] Gradebook2 webservices
>
> We don't have "versioned" services, so if you are going to upgrade to
> v1.7.0, you will have to make some modifications. The bigger changes have
> been discussed on the mailing list and mostly affect the
> SampleInstitutionalAdvisor.
>
> Best,
> -- Thomas
>
> On Fri, Feb 24, 2012 at 1:56 PM, Geng, Kelly <gengx at muohio.edu> wrote:
>> Hi GB2 developers,
>>
>> I'm following up on this post from 1 year ago: We have implemented a grade
>> submission middleware application utilizing Gradebook2 web services in the
>> way described in my last message of this thread. The application works with
>> 1.4.1 gb2 on our production just fine. However, we are considering of
>> upgrading to 1.7.0 the latest gb2 version. In preparation for the upgrade I
>> wanted to make sure the web services won't break for the grade submission
>> app. I noticed there are some changes. Among others, the /authorization and
>> /application are replaced by a /startup call, and it seems like you started
>> using a GB2TOKEN to replace the SessionID token you used before. You know
>> what my next question will be: do you have any backward compatibility built
>> in, or any versioning effort went in, so that we don't have to modify our
>> application?
>>
>> Thanks,
>> Kelly
>>
>>
>> -----Original Message-----
>> From: Jon Gorrono [mailto:jpgorrono at ucdavis.edu]
>> Sent: Wednesday, February 16, 2011 5:26 PM
>> To: Geng, Kelly
>> Cc: Sakai Programming Team; gradebook2-dev at collab.sakaiproject.org;
>> nicolamj at gmail.com; Jayanna, Sid
>> Subject: Re: [gradebook2-dev] Gradebook2 webservices
>>
>> yes that will work fine.. I see now you're going through the portal
>> and a specific tool in an a specific site, with an established
>> session, you get just what the browser client gets. I thought you
>> wanted to get at the data without a session...but this is a perfectly
>> valid approach... it's sort of shortcutting the deficiencies in gb2's
>> generalized REST support in the same way the browser client does. :)
>>
>> We'll have to get all the url param's into the path someday, among other
>> things.
>>
>>
>> On Mon, Feb 14, 2011 at 12:06 PM, Geng, Kelly <gengx at muohio.edu> wrote:
>>> Hi Jon,
>>>
>>> This is the curl command I was using:
>>>
>>> curl -k --cookie "gb2version=1.3.1;
>>> SaneID=134.53.x.xxx-1295626567328485;
>>> JSESSIONID=8057bae2-7b38-48e3-b808-2d72ae546a5f.myserver-02" --header
>>> "X-XSRF-Cookie:8057bae2-7b38-48e3-b808-2d72ae546a5f. myserver-02"
>>> https://myserver/portal/tool/d10a1c9e-66af-4084-ac1c-c5a07d059e8a/gra
>>> d
>>> ebook/rest/roster/87450467-8cab-4fc3-be7c-00a3e6245965/1/?sortField=S
>>> _
>>> LST_NM_FRST&sortDir=ASC&offset=0&limit=19
>>>
>>> This approach should work once we set up a session from the external
>>> system?
>>>
>>> Thanks,
>>> Kelly
>>>
>>>
>>> -----Original Message-----
>>> From: Jon Gorrono [mailto:jpgorrono at ucdavis.edu]
>>> Sent: Friday, February 11, 2011 8:56 PM
>>> To: Geng, Kelly
>>> Cc: Sakai Programming Team; gradebook2-dev at collab.sakaiproject.org;
>>> nicolamj at gmail.com; Jayanna, Sid
>>> Subject: Re: [gradebook2-dev] Gradebook2 webservices
>>>
>>> Hi, Kelly.
>>>
>>> It's interesting to me that you're not getting any errors... the
>>> getRoster methods calls the private method getSite which in short
>>> does toolManager.getCurrentPlacement().getContext()... the placement
>>> should be null if you are curl'ing directly to the REST service, eg.
>>> /sakai-gradebook2/rest.....' ... this requires
>>> gb2.security.enabled=false
>>>
>>> The only way I know for you to have a (non-null) request tool
>>> placement is to use a url like '/portal/site/xxx/page/yyy/...'
>>>
>>> Can you post a sample of the url's you are using the trigger the json
>>> response?
>>>
>>> On Thu, Feb 10, 2011 at 11:06 AM, Geng, Kelly <gengx at muohio.edu> wrote:
>>>> Hi Jon,
>>>>
>>>> This is Kelly, working on the same project(grade submission from
>>>> Sakai to
>>>> Banner) with Sid. Following your discussion, I did some test on
>>>> calling the Gradebook REST service from outside of Sakai to prove
>>>> whether our idea will work. What I did was:
>>>> -Using Curl to send the https request using the REST URL copied from
>>>> the Sakai instance, -copy the cookie value of a valid Sakai session
>>>> from the web browser, and send it along, -forged a HTTP header of
>>>> X-XSRF-Cookie(with the session id as the value) and sent it along
>>>>
>>>> I did the test for the "roster" service and I did get valid JSON
>>>> data as the response. I am planning to do more test on some other
>>>> services which we will potentially be using. At the same time, we
>>>> would like to know whether you see any potential issues with this
>>>> approach. Are there any better ways to authenticate the service
>>>> calls? Will it cause problems in future releases of Gradebook2? Any
>>>> input will be appreciated.
>>>>
>>>> Thanks,
>>>> Kelly
>>>>
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: gradebook2-dev-bounces at collab.sakaiproject.org
>>>> [mailto:gradebook2-dev-bounces at collab.sakaiproject.org] On Behalf Of
>>>> Jon Gorrono
>>>> Sent: Monday, January 31, 2011 8:41 PM
>>>> To: Jayanna, Sid
>>>> Cc: Sakai Programming Team; gradebook2-dev at collab.sakaiproject.org
>>>> Subject: Re: [gradebook2-dev] Gradebook2 webservices
>>>>
>>>> Sid,
>>>>
>>>> We found a few places where the service calls make the assumption
>>>> that there is a current site... if you are establishing a session in
>>>> sakai through some alternative method, that may not be the case....
>>>> If you run run into this case (usually a NullPointerException) in
>>>> the logs, please post a note about it.... we should probably be
>>>> finding solutions for all the cases.
>>>>
>>>> jP
>>>>
>>>> On Mon, Jan 31, 2011 at 1:56 PM, Thomas Amsler
>>>> <tpamsler at ucdavis.edu>
>>>> wrote:
>>>>> Sid,
>>>>>
>>>>> Assuming you are doing this from a browser with some sort of REST
>>>>> plugin (e.g.Chrome and cREST client), you can make the (GET, POST,
>>>>> DELETE, PUT) REST calls as long as:
>>>>>
>>>>> - You have established a valid Sakai session
>>>>> - You provide the valid path parameters
>>>>>
>>>>> All the gradebook2 REST resources are located here:
>>>>>
>>>>> https://source.sakaiproject.org/contrib/gradebook2/trunk/server/src
>>>>> / j ava/org/sakaiproject/gradebook/gwt/sakai/rest/resource/
>>>>>
>>>>> So you should be able to look at those classes and determine what
>>>>> the path parameters are. Also, if you develop gradebook2 in GWT DEV
>>>>> mode, you can use the following url:
>>>>>
>>>>> http://127.0.0.1:8888/gradebook/rest/application.wadl
>>>>>
>>>>> ... to get the Jersey generated WADL. I have attached the generated
>>>>> sample output.
>>>>>
>>>>> I hope this helps.
>>>>>
>>>>> Best,
>>>>> -- Thomas
>>>>>
>>>>>
>>>>> On Mon, Jan 31, 2011 at 12:32 PM, Jayanna, Sid
>>>>> <jayannsd at muohio.edu>
>>>>> wrote:
>>>>>> Hi Thomas,
>>>>>> Thanks for taking the time to reply to my emails.
>>>>>> If I understand the REST implementation correctly, don't
>>>>>> gradebook2 provide some kind of URI to manipulate
>>>>>> (get/post/put/delete) resources?
>>>>>> please bear with me here, I noticed on our log while working with
>>>>>> gradebook2
>>>>>> these messages (ipaddress have been masked to protect the guilty)
>>>>>> -
>>>>>> ------
>>>>>> [31/Jan/2011:14:41:46 -0500] x.x.x.x TLSv1 AES256-SHA "GET
>>>>>>
>>>>>> /portal/tool/d10a1c9e-66af-4084-ac1c-c5a07d059e8a/gradebook/rest/r
>>>>>> o
>>>>>> s
>>>>>> ter/87450467-8cab-4fc3-be7c-00a3e6245965/1/?sortField=S_LST_NM_FRS
>>>>>> T
>>>>>> &
>>>>>> sortDir=ASC&offset=0&limit=19
>>>>>> HTTP/1.1"
>>>>>> [31/Jan/2011:14:15:16 -0500] x.x.x.x TLSv1 DHE-RSA-AES256-SHA
>>>>>> "POST
>>>>>>
>>>>>> /portal/tool/d10a1c9e-66af-4084-ac1c-c5a07d059e8a/gradebook/rest/i
>>>>>> t e m/87450467-8cab-4fc3-be7c-00a3e6245965/1/
>>>>>> HTTP/1.1"
>>>>>> -----------------
>>>>>> So it appears like the GWT client is making GET/POST REST calls to
>>>>>> work with the resources on the server? but when I copy the above
>>>>>> url and try to run it from the address bar I get "ERROR: SESSIONID
>>>>>> is null".
>>>>>> So, theoretically I should be able to call the same URI from my
>>>>>> broker application to get a roster with grades, is my
>>>>>> understanding correct?
>>>>>> Also, if you can point me to some documentation of the REST
>>>>>> implementation will be very helpful.
>>>>>> Please let me know if you have any questions.
>>>>>> Thanks,
>>>>>> Sid
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Jan 28, 2011, at 4:27 PM, Thomas Amsler wrote:
>>>>>>
>>>>>> That would be one way to extend the existing Sakai (Axis) SOAP
>>>>>> service endpoints. Gradebook2 uses REST (JAX-RS) to communicate
>>>>>> between client and the server. So you could potentially expand on
>>>>>> that by providing a new REST resource that returns the required
>>>>>> data. Both approaches are valid.
>>>>>> -- Thomas
>>>>>>
>>>>>> On Fri, Jan 28, 2011 at 1:21 PM, Jayanna, Sid
>>>>>> <jayannsd at muohio.edu>
>>>>>> wrote:
>>>>>>
>>>>>> Thanks Thomas, that helps.
>>>>>>
>>>>>> So, there are no webservices listening by default which can
>>>>>> provide me the roster with grades (like a REST Get call) from the
>>>>>> broker application.
>>>>>>
>>>>>> That webservice needs to be designed on the sakai end similar to
>>>>>> the SakaiLogin.jws. Is my understanding correct?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Sid
>>>>>>
>>>>>> On Jan 28, 2011, at 4:14 PM, Thomas Amsler wrote:
>>>>>>
>>>>>> Sid,
>>>>>>
>>>>>> The details of the final grade submission handling is implemented
>>>>>> by
>>>>>>
>>>>>> and implementation of the InstitutionalAdvisor.java interface.
>>>>>> When
>>>>>>
>>>>>> the user clicks on the submit final grade menu item, it makes a
>>>>>> REST
>>>>>>
>>>>>> call to SubmitFinalGrades.java
>>>>>>
>>>>>> That class calls the
>>>>>> Gradebook2ComponentService.submitFinalGrade(...)
>>>>>>
>>>>>> method, which in turn calls the
>>>>>>
>>>>>> InstitutionalAdvisor.submitFinalGrade(...) method. So you should
>>>>>>
>>>>>> implement your version of the InstitutionalAdvisor interface and
>>>>>> use
>>>>>>
>>>>>> it via Spring injection. There is a default implementation of the
>>>>>>
>>>>>> InstitutionalAdvisor interface in SampleInstitutionalAdvisor.java
>>>>>>
>>>>>> I hope this helps.
>>>>>>
>>>>>> Best,
>>>>>>
>>>>>> -- Thomas
>>>>>>
>>>>>> On Fri, Jan 28, 2011 at 11:55 AM, Jayanna, Sid
>>>>>> <jayannsd at muohio.edu>
>>>>>> wrote:
>>>>>>
>>>>>> Hi Thomas,
>>>>>>
>>>>>> I was wondering if gradebook2 exposes any REST webservices for me
>>>>>> to consume to submit the final grades to another broker
>>>>>> application which will send it to our SIS.
>>>>>>
>>>>>> If you could point me to some resources will be very helpful.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Sid
>>>>>>
>>>>>> On Oct 6, 2010, at 2:26 PM, Thomas Amsler wrote:
>>>>>>
>>>>>> Yes
>>>>>>
>>>>>> On Wednesday, October 6, 2010, Jayanna, Sid <jayannsd at muohio.edu>
>>>>>> wrote:
>>>>>>
>>>>>> Sure, I will create my first jira.
>>>>>>
>>>>>> That will be a feature request right?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Sid
>>>>>>
>>>>>> On Oct 6, 2010, at 2:11 PM, Thomas Amsler wrote:
>>>>>>
>>>>>> As far as I know, we haven't added a tool icon for gradebook2 yet.
>>>>>> Would you mind creating a GRBK jira for this:
>>>>>>
>>>>>> http://jira.sakaiproject.org/browse/GRBK
>>>>>>
>>>>>> Best,
>>>>>>
>>>>>> -- Thomas
>>>>>>
>>>>>> On Wed, Oct 6, 2010 at 10:53 AM, Jayanna, Sid
>>>>>> <jayannsd at muohio.edu>
>>>>>> wrote:
>>>>>>
>>>>>> The reason I wanted to test gradebook2 on a nightly server is due
>>>>>> to a missing icon on my Sakai build. I am using Sakai src tag
>>>>>> 2.7.1 and
>>>>>> gradebook2 1.3.0
>>>>>>
>>>>>> I have attached a screen shot. As you can see from the screen
>>>>>> shot, the icon for gradebook2 is missing.
>>>>>>
>>>>>> I would appreciate if you can shed some light on why the icon is
>>>>>> missing.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Sid
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> [see attachment: "application.wadl", size: 20903 bytes]
>>>>>
>>>>>
>>>>> Attachments:
>>>>>
>>>>> application.wadl
>>>>>
>>>>> ________________________________
>>>>> This automatic notification message was sent by SmartSite at UCDavis
>>>>> (https://smartsite.ucdavis.edu/xsl-portal) from the UCD Sakai Dev site.
>>>>> You can modify how you receive notifications at My Workspace >
>>>>> Preferences.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Jon Gorrono
>>>> PGP Key: 0x5434509D -
>>>> http{pgp.mit.edu:11371/pks/lookup?search=0x5434509D&op=index}
>>>> GSWoT Introducer - {GSWoT:US75 5434509D Jon P. Gorrono <jpgorrono -
>>>> gswot.org>} http{sysdev.ucdavis.edu}
>>>> _______________________________________________
>>>> gradebook2-dev mailing list
>>>> gradebook2-dev at collab.sakaiproject.org
>>>> http://collab.sakaiproject.org/mailman/listinfo/gradebook2-dev
>>>>
>>>
>>>
>>>
>>> --
>>> Jon Gorrono
>>> PGP Key: 0x5434509D -
>>> http{pgp.mit.edu:11371/pks/lookup?search=0x5434509D&op=index}
>>> GSWoT Introducer - {GSWoT:US75 5434509D Jon P. Gorrono <jpgorrono -
>>> gswot.org>} http{sysdev.ucdavis.edu} ________________________________
>>> This automatic notification message was sent by SmartSite at UCDavis
>>> (https://smartsite.ucdavis.edu/xsl-portal) from the UCD Sakai Dev site.
>>> You can modify how you receive notifications at My Workspace >
>>> Preferences.
>>>
>>
>>
>>
>> --
>> Jon Gorrono
>> PGP Key: 0x5434509D -
>> http{pgp.mit.edu:11371/pks/lookup?search=0x5434509D&op=index}
>> GSWoT Introducer - {GSWoT:US75 5434509D Jon P. Gorrono <jpgorrono -
>> gswot.org>} http{sysdev.ucdavis.edu}
>> _______________________________________________
>> gradebook2-dev mailing list
>> gradebook2-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/gradebook2-dev
>
> ________________________________
>
> This automatic notification message was sent by SmartSite at UCDavis
> (https://smartsite.ucdavis.edu/xsl-portal) from the UCD Sakai Dev site.
> You can modify how you receive notifications at My Workspace > Preferences.
_______________________________________________
gradebook2-dev mailing list
gradebook2-dev at collab.sakaiproject.org
http://collab.sakaiproject.org/mailman/listinfo/gradebook2-dev


More information about the gradebook2-dev mailing list