[gradebook2-dev] Gradebook2 webservices

Geng, Kelly gengx at muohio.edu
Sat Feb 25 20:37:54 PST 2012


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


More information about the gradebook2-dev mailing list