Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

EVENT

An Event is the thing being recorded in the hub: user completed a course, earned a credential, etc.

This design is influenced by the idea of a Learning Record Store in xAPI, but with less complexity.

Field

Type

Notes

EventId

PRG-UUID
(26+128 chars)

{ProgramId}-{UUID}

The {ProgramId} helps guarantee uniqueness but also to make the IDs more human readable.

Event Ids are assigned by the Learning Hub.

EventType

string (50 char)

The type of event as reported by the publisher.

For LearningBuilder this will be one of:

  • LPI_STARTED -

    Status
    titleFUTURE USE

  • LPI_COMP_UNSUCCESS -

    Status
    titleFUTURE USE

  • LPI_COMP_SUCCESS -

    Status
    titleFUTURE USE

  • LPI_REOPENED -

    Status
    titleFUTURE USE

  • AI_STARTED -

    Status
    titleFUTURE USE

  • AI_COMP_UNSUCCESS -

    Status
    titleFUTURE USE

  • AI_COMP_SUCCESS -

    Status
    colourBlue
    titleMVP

  • AI_REOPENED - Recalled from complete to incomplete -

    Status
    titleFUTURE USE

PublisherProgramId

string (25 char)

Descriptive name for the Program that published this event.

PublisherEventId

string (200 char)

The Program’s unique identifier for the source event.

For LearningBuilder this will be something like “AI:1234”, which would be the Activity Instance WFI #1234

PublisherParticipantId

string (200 char)

The Program’s unique identifier for the person, organization, or entity that the event relates to.

Info

Each event contains the ID of the related party in the publisher’s system. It is up to subscribers and publishers to determine how those values should be mapped between their systems.

PublisherEventData

JSON blob

The Program’s representation of the event data

EventStartUtc

UTC date/time

Non-null date/time the event started. (If only a single date/time is associated with the event, it is stored here)

EventEndUtc

UTC date/time

Nullable date/time that the event ended.

CreatedUtc

UTC date/time

UTC timestamp when this record was created.

...

See https://heuristicsolutions.atlassian.net/wiki/spaces/DOCS/pages/3697770890/Learning+Hub#Authentication

Event Type

...

Different systems track different types of events, and different types of events may be associated with different data fields. Additionally, subscribers may only care about certain types of events from a given publisher.

In the initial launch of the Learning Hub, the only recognized value is AI_COMP_SUCCESS, representing a Completed Successfully event for a LearningBuilder Activity Instance.

Publishing Events into the Registry

...

POST /events
Handy status macro
set36399
isLabeledfalse
historySnapshotId7cfb151d-d309-448c-9e11-ef4dcd1953cc
status185953
historyChainId995d84a4-485f-470b-9882-e5f4d573912a

Info

Creates a new Event using the client-supplied ID. Returns an error if the Event already exists.{EventId} must be prefixed with the ProgramId and a hyphen, e.g. “FOO-ABC123”in the Learning Hub and returns its system-assigned EventId.

The API Key used for authentication must have rights to modify data for ProgramId.

JSON Payload

Code Block
{
    "EventIdPublisherProgramId": "PRG-UUIDProgramId",
    "EventTypePublisherEventId": "Event Type indicatorsome_key_id",
    "PublisherProgramIdEventType": "ProgramIdEvent Type indicator",
    "PublisherParticipantId": "joebob@example.com",
    "PublisherEventData": { JSON },
    "EventStartUTC": "UTC date/time",
    "EventEndUTC": "UTC date/time"
}

Parameter

Description

{EventId}PublisherProgramId

The ID of Program that owns the Event to create or update.

Must be prefixed with {ProgramId}- to ensure uniqueness

.

The API Key must have access to this Program.

PublisherEventId

A value that uniquely identifies this event in the publisher’s system.

For LearningBuilder publishers, this will be an “entity-scoped identifier” such as AI:1234, representing Activity Instance 1234.

EventType

The type of Event this record represents.

See the “Event Types” section, above.

PublisherProgramId

The Program that owns the Event.

The API Key must have access to this Program.

PublisherParticipantId

Email address or some other piece of information that uniquely identifiers the primary participant within the Program’s system.

PublisherEventData

JSON object representing the Event in the source Program’s system.

EventStartUTC

The UTC date/time when this Event occurred, or the time that the Event started.

EventEndUTC

The UTC date/time when this Event ended. For Events with only a single timestamp, rather than a range, set this equal to EventStartUTC.

...

Response Code

Headers and Body

201 (Created)

A new Event was created. No body is returned.

HTTP headers:

Location: /events/{eventId}

...

DELETE /API/events/{eventId}
Handy status macro
set36399
isLabeledfalse
historySnapshotId7cfb151d-d309-448c-9e11-ef4dcd1953cc
status185953
historyChainId995d84a4-485f-470b-9882-e5f4d573912a

Info

Deletes an existing Event.

The API Key used for authentication must have access to the Program that owns the Event.

Responses

Response Code

Headers and Body

204 (No Content)

Delete was performed successfully. No body is returned.

...

Pulling events from the Registry

...

Info

Event data is optimized for retrieval since the last sync date.

GET /API/programs/{programId}/publishedEvents
Handy status macro
set36399
isLabeledfalse
historySnapshotId7cfb151d-d309-448c-9e11-ef4dcd1953cc
status185953
historyChainId995d84a4-485f-470b-9882-e5f4d573912a

Info

Returns a list of Events published by the specified Program and matching the criteria provided as querystring arguments.

Querystring parameters

Parameter

Description

publishedDate

(required) The created-on date to match.

Responses

Response Code

Headers and Body

200 (Ok)

Code Block
languagejson
[
  {
      "PublisherProgramId": "ProgramId",
      "PublisherEventId": "some_key_id",
      "EventType": "Event Type indicator",
      "PublisherParticipantId": "joebob@example.com",
      "PublisherEventData": { JSON },
      "EventStartUTC": "UTC date/time",
      "EventEndUTC": "UTC date/time"
  },
  ...
]

...