[gradebook2-dev] Gradebook2 webservices

Thomas Amsler tpamsler at ucdavis.edu
Mon Feb 27 09:57:35 PST 2012


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/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