Hello, I'm just getting started with Canvas integration and need some help getting my bearings. I'm trying to create our own app that can be added into Canvas.
I'm used to Blackboard Building Blocks, where a java app gets installed in the Blackboard server and runs in the background. With that, I can run a thread / process that can do many things, such as send and receive REST calls, poll internal APIs to get data, etc.
Which installation do most schools use? Are they using the SaaS-delivered Canvas, or are they using their own installation of Canvas (the open source one)? I'm assuming most schools would go for the SaaS-hosted one (which is what we did), as that eliminates the need for an on-premises install.
But I'm confused as to how the Canvas integration works. It seems very different. It looks like there is only an externally-facing API that you can call, and you have to publish your own API for Canvas to call back to. Does nothing actually get installed on the Canvas server?
It looks like to enable an integration, the owner of the the account simply pastes in a link to an XML configuration provided by the "tool provider", and puts in a key and secret. From there, Canvas can talk to the tool provider. But is that it? Where is the "app"? Is it just whatever the tool provider runs on their own server? How does a tool provider manipulate the Canvas interface? Does each page load in Canvas call back to all tool providers it has set up asking "what do I display on this page?"
Another thing we would like to do is get notified when teachers do certain things, such as create a new course or a new quiz. In Blackboard, we would have a background thread poll for new data and then post an event back to our API. But how do I do that in Canvas then there is nothing actually running live on the Canvas server that I can control? Do I need to poll the Canvas server on an interval asking for new data that might have been created? Or does Canvas have an "event" capability, where my app can get notified of new courses & quizzes being created?
Thanks for any help you can provide!