[gradebook2-dev] Gradebook2 webservices

Geng, Kelly gengx at muohio.edu
Tue Feb 28 08:56:38 PST 2012


We really hope this can be done in the near future, so that our grade submission application won't have to keep up with the changes. We can help on testing.

Thanks,
Kelly

-----Original Message-----
From: Thomas Amsler [mailto:tpamsler at ucdavis.edu]
Sent: Monday, February 27, 2012 12:58 PM
To: Kim Huang
Cc: Sakai Programming Team; gradebook2-dev at collab.sakaiproject.org; Geng, Kelly
Subject: Re: [gradebook2-dev] Gradebook2 webservices

My vote would be to extend the GB2 REST API. It's standards based, JSR-311/JAX-RS, and super easy to develop with. There is also KERN-186, which adds JAX-RS. I don't know what its status is.
-- Thomas

On Mon, Feb 27, 2012 at 6:28 AM, Kim Huang <kimhuang at oit.rutgers.edu> wrote:
> 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/g
>>>> ra
>>>> 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/s
>>>>>> rc / 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_F
>>>>>>> RS
>>>>>>> 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