Mike Rustici
posted this on August 31, 2009 03:14 pm
The document once posted here now lives at http://cloud.scorm.com/EngineWebServices/doc/SCORMCloudAPI.html. Please feel free to still give us any feedback / errors / typos and so on in the comments of this post or by sending an email to support@scorm.com. Thanks!
Comments latest first
The preview function looks quite handy. Thanks!
Thanks for the clarification. The reason I'm looking for attribute documentation is that I'd like to set some of them programatically via the code. It's hard working out how to do that without using the sandbox widget to reverse engineer what has changed between edits to the properties.
Noah,
I've corrected the API doc based on your suggestions, thanks for them! As for your question about the getAttributes call: we currently don't have documentation explaining all the attributes, but there is one thing I could offer to help a bit. Those attributes are tied to the settings found in our package property editor, which you can find on a course's "sandbox" page in the scorm cloud site at http://cloud.scorm.com, which looks like this...
We had originally thought that the get and set attribute calls could offer a way to implement this package property editor in client integrations, but found that it was even easier to just offer the entire editor, as it is, across the services.
Alas, this feature was not previously documented, but I've added it to the API doc, under the course service, a method called rustici.course.properties. (Side note: I also added documentation for a rustici.course.preview method and a rustici.course.exists method). By calling this web service method in a browser, you'll be redirected to a properties editor widget (typically in the integrations we've done with SCORM Cloud, we end up putting this in an iframe). Admittedly, there's still not much in the way of documentation we've made available for these package properties, but they are grouped together with more descriptive labels, which helps. One other thing to quickly note is that nearly all of the package properties have been provisioned to help with the varied interpretations of the SCORM standard found in content out there. That is to say, often you'll only want to change package property when you need to for the content's sake.
I'll be pushing out an update later today so that you'll also be able to pass a stylesheet to the properties editor, to make it fit in with your integration a bit better, visually, as well. I'll post again once that's done. Let me know if you can make use of this stuff, or any questions you have. Thanks!
David
Also, minor comment, but this doc was pretty hard to find.
It might be easier for other people to find it it was hosted on the main site.
Sure.
The importCourse section lists this example call:
[web service instance]/api?method=rustici.course.importCourse&appid=myappid&courseid=course003&path=default/Course003.zip)
The next three sections list the exact same examples call. This happens a few time throughout the document. The different sections seem to be duplicated. Most of the time, I was able to work out what should be going on. But it did cause me to stumble a few times.
One one occasion, an error condition that was not explicitly defined by the API documentation tripped up the code. The <importresult> element has a boolean flag that was not being tested for. It's that kind of stuff which might be nice for future developers, so that they are warned about what to expect and why.
We're using Python to communicate with the API. Our code is pretty generic, but would need some significant work before it was broadly useful to anyone else.
Something I'm still struggling with is the available options for the updateAttributes call. I am able to retrieve a list of attributes for a course, and then attempt to reverse engineer it, but some of the names are pretty confusing. Would you be able to provide set of names and descriptions for these attributes?
Noah,
Woops! Sorry about the mistakes! This had lived for a quite a while as an internal document only, so it's good to get outside eyes on it to help us find errors. We definitely appreciate you digging in and getting your hands dirty with the API! I'll make sure to add the typical base URL into the doc (http://cloud.scorm.com/api or http://cloud.scorm.com/EngineWebServices/api). As for the copy and paste errors you mention, do you mean the example calls listed out? The example calls will typically have example parameter values or even non-URL constructs that are invalid; they are there for descriptive purposes. Whether you mean those example calls or other errors, would you mind giving some detail on which errors you discovered? I'll make sure to correct them in the doc for future viewers. Finally, for curiosity's sake, I'm interested to know the languages / technologies you're using. We have existing SCORM Cloud API wrappers in .NET, Java, and PHP (which can all be found highlighted in the SCORM Cloud forum http://support.scorm.com/forums/52358-scorm-cloud). We also have an unfinished Python library we're using internally, but have not yet released. We're always interested to know what folks are using as they integrate with our services, and if you're working in a language outside of these, we'd love to get the chance to share any generic library you've built on the web services with others. Thanks again for the interest and feedback, we always value both!
David
There are a few copy and paste errors with the API methods and URLs that should be fixed up.
There is no mention of which base URL to use by default. I had to guess at it until I got back an API response!