Bb::Collaborate::Ultra - Perl bindings for Blackboard Ultra virtual classrooms


Version 0.01.02


    use Bb::Collaborate::Ultra::Connection;
    use Bb::Collaborate::Ultra::Session;
    use Bb::Collaborate::Ultra::User;
    use Bb::Collaborate::Ultra::LaunchContext;

        my %credentials = (
          issuer => 'OUUK-REST-API12340ABCD',
          secret => 'ABCDEF0123456789AA',
          host => '',

        # connect to server
        my $connection = Bb::Collaborate::Ultra::Connection->new(\%credentials);

        # create a virtual classroom, starts now runs, for 15 minutes
        my $start = time() + 60;
        my $end = $start + 900;
        my $session = Bb::Collaborate::Ultra::Session->post($connection, {
                name => 'Test Session',
                startTime => $start,
                endTime   => $end,

        # define a session user
        my $user = Bb::Collaborate::Ultra::User->new({
            extId => 'dwarring',
            displayName => 'David Warring',
            email => '',
            firstName => 'David',
            lastName => 'Warring',

        # register the user. obtain a join URL
        my $launch_context =  Bb::Collaborate::Ultra::LaunchContext->new({
              launchingRole => 'moderator',
              editingPermission => 'writer',
              user => $user,
         my $url = $launch_context->join_session($session);


Blackboard Collaborate Ultra is software for virtual web classrooms. It is suitable for meetings, demonstrations web conferences, seminars, general training and support.

Bb-Ultra is a set of Perl bindings and entity definitions for the Collaborate REST services. These can be used to administer classrooms, including sessions, users and recordings.


This Perl 5 module provides bindings to the the Collaborate (*) Services RESTful API. These support the CRUD and processing operations for the scheduling and access to HTML sessions.

These services are described in

Resource Classes

Each resource class is represented by a Perl 5 class:

Context - Bb::Collaborate::Ultra::Context (see Context Documentation)
Session - Bb::Collaborate::Ultra::Session (see Session Documentation)
Recording - Bb::Collaborate::Ultra::Recording (see Recording Documentation)
Session Logs - Bb::Collaborate::Ultra::Session::Log (see Session Documentation)

RESTful Services

The above classes are based on Bb::Collaborate::Ultra::DAO, which provides low level `post`, `get`, `patch` and `delete` methods. Where:

`post` creates new entities on the server
`get` is used to fetched entities, by `id` or various other criteria
`patch` is used to update entities
`delete` is used to delete items

Data Mapping

Some conversion is needed between JSON and Perl:

- Boolean `true` and `false` are converted to 0 and 1
- JSON date strings are converted to Unix numeric timestamps, rounded to the nearest second. For example, `2016-12-15T22:26:17.000Z` is converted to 1481840777.

These conversions are applied on data being sent or received from the Collaborate Ultra server.


Authentication is via the OAuth 2.0 protocol, using the JWT Token Flow, as described in the documentation.

See Bb::Collaborate::Ultra::Connection for details.



Tjhis is a sample script to dump basic session logging for a completed session.


- This module does not yet fully implement resource types: Users, Enrollments or Courses
- JWT Username-Password authentication is not yet supported.


Copyright 2017 David Warring, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.