Dapr Service Topic Overview

topics.drawio.svg

Here we will describe all dapr topics currently available in the system. This includes

  1. a description of the topic,

  2. Its interface description,

  3. the content of the messages,

  4. services that publish to the topic,

  5. and services that subscribe to the topic.

Events by service

Topic: Course Changed

This topic is used by the Course Service to inform Course-dependant Services of changes done to a Course Entity.

Interface Description

Name
course-changed
PubSub-Name
gits
Java class
CourseChangeEvent

Message Content

Field

Type

Description

courseId

UUID

Identifier of a Course Entity

operation

Enum

Describes which type of CRUD operation was applied to the Course. Available Operations are CREATE, DELETE

Topic: Chapter Changed

This topic is used by the Course Service to inform Chapter-dependant Services of changes done to a Chapter Entity.

Interface Description

Name
chapter-changed
PubSub-Name
gits
Java class
ChapterChangeEvent

Message Content

Field

Type

Description

Chapter IDs

List<UUID>

A list of Chapter IDs. Each Content is linked to one Chapter ID. Each ID is represented as a UUID.

Operation

Enum

Describes which type of CRUD operation was applied to the Chapter. Available Operation is DELETE.

Topic: Content Changed

This topic is used by the Content Service to inform Content-dependant Services of changes done to a Content Entity.

Interface Description

Name
content-changed
PubSub-Name
gits
Java class
ContentChangeEvent

Message Content

Field

Type

Description

Content IDs

List<UUID>

A list of Content IDs. A resource can be part of one or multiple Contents. The Content IDs are each represented as a UUID.

Operation

Enum

Describes which type of CRUD operation was applied to the Content. Available Operations are UPDATE, DELETE

Topic: Item Changed

This topic is used by the Quiz, Flashcard and Assignment Service to inform Item-dependant Services of changes done to an Item Entity.

Interface Description

Name
item-changed
PubSub-Name
gits
Java class
ItemChangeEvent

Message Content

Field

Type

Description

Item ID

UUID

Identifier of the Item

Operation

Enum

Describes which type of CRUD operation was applied to the Content. Available Operations are DELETE

Topic: Content Progressed

This topic is used to communicate that a certain content has been completed by a user.

Interface Description

Name
content-progressed
PubSub-Name
gits
Java class
ContentProgressedEvent

Message Content

Field

Type

Description

userId

UUID

The ID of the user associated with the progress log event.

contentId

UUID

The ID of the content associated with the progress log event.

success

boolean

Indicates whether the user’s progress was successful or not.

correctness

double

The level of correctness achieved by the user.

hintsUsed

int

The number of hints used by the user.

timeToComplete

Integer

The time taken by the user to complete the progress (optional).

responses

List<Response>

The responses of the user

Topic: User Progress Updated

This topic is used to communicate that the content service has processed the update of the user progress.

Interface Description

Name
user-progress-updated
PubSub-Name
gits
Java class
UserProgressUpdated

Message Content

Field

Type

Description

userId

UUID

The ID of the user associated with the progress update event.

contentId

UUID

The ID of the content associated with the progress update event.

chapterId

UUID

The ID of the chapter associated with the progress update event.

courseId

UUID

The ID of the course associated with the progress update event

success

boolean

Indicates whether the user’s progress was successful or not.

correctness

double

The level of correctness achieved by the user.

hintsUsed

int

The number of hints used by the user.

timeToComplete

Integer

The time taken by the user to complete the progress (optional).

responses

List<itemResponse>

A list with the responses of the user and additional information to the answered items

Topic: Assessment Content Mutated

Raised when the contents of an assessment were changed (e.g. a question of a quiz was added/removed/edited).

Message Content

Field

Type

Description

courseId

UUID

The ID of the course the assessment which was mutated belongs to.

assessmentId

UUID

The ID of the assessment which was mutated.

assessmentType

Enum

One of either [QUIZ, FLASHCARDS, ASSIGNMENT] depending on the type of the assessment.

textualRepresentation

List

Textual representations of the tasks of this assessment (and their solutions). For more info see below

Textual representation

The purpose of this field is to provide the contents of this assessment in a simple textual format for other services to use without having to have any assessment-specific code.

It is a list of Strings, so if an assessment consists of multiple tasks/parts, each part can have its own textual representation. If the assessment only consists of one task or if the nature of the assessment makes it hard to split it up into concrete parts, it is acceptable to only add a single textual representation String to the list, which covers the whole assessment.

If a service can not/does not want to provide a textual representation of the assessment, the list can be left empty.

There is no exact formatting guideline for the textual representation. Its purpose is to just provide a very basic means to fetch assessments’ contents in textual form, e.g. for performing a search or similar purposes.

The textual representation can contain spoilers, so it should never be shown to students.

A good textual representation may look like the following for example, for a quiz:

String 1:

Question: How tall is the Eiffel Tower?
Correct Answer: 330m

String 2:

Question: What colors make up the French flag?
Correct Answer: blue, white, and red

String 3:

Task: Fill in the gaps in the text:
King Luis XIV famously said: "L'[etat], c'est [moi]!"

Topic: Media Record File Created

Raised when a new file is uploaded for a media record.

Message Content

Field

Type

Description

mediaRecordId

UUID

The ID of the media record for which a file was uploaded.

Topic: Media Record Deleted

Raised when a media record is deleted

Message Content

Field

Type

Description

mediaRecordId

UUID

The ID of the media record which was deleted.

Topic: Forum Activity

Field

Type

Description

forumId

UUID

The ID of the forum where the activity happened.

courseId

UUID

The ID of the course where the activity happened.

userId

UUID

The ID of the user that did the activity.

activity

ForumActivity

The kind of activity that happened.

Topic: Asked Tutor a Question

Raised when the user asks the AI Tutor a question, BUT only after the question has been categorised

Field

Type

Description

courseId

UUID

The ID of the course the question is about happened.

userId

UUID

The ID of the user that asked the question.

category

TutorCategory

The Category the question fits into (SYSTEM, LECTURE, OTHER, UNRECOGNIZABLE, ERROR, CODE_FEEDBACK)

Topic: User Hexad Player Type Set

Raised when the player type is saved inside of gamification_service. This event is sent when a user’s Hexad player type is set, updated, or requested for the first time.

Interface Description

Name
user-hexad-player-type-set
PubSub-Name
gits
Java class
UserHexadPlayerTypeSetEvent

Message Content

Field

Type

Description

userId

UUID

The ID of the user whose Hexad player type was set.

playerType

HexadPlayerType

The Hexad player type of the user (ACHIEVER, PLAYER, SOCIALISER, FREE_SPIRIT, PHILANTHROPIST, DISRUPTOR).

playerTypeScores

Map<HexadPlayerType, Integer>

Map of all player types to their respective scores.

Topic: Request Hexad Player Type

Used to request a user’s Hexad player type from the gamification service. The gamification service will respond with a user-hexad-player-type-set event.

Interface Description

Name
request-hexad-player-type
PubSub-Name
gits
Java class
RequestHexadPlayerTypeEvent

Message Content

| Field | Type | Description | |——–|——|————————————————————|| | userId | UUID | The ID of the user for which the player type is requested. |

Topic: Request User Skill Level

Used to request a user’s skill levels from the skilllevel service. The skilllevel service will respond with a user-skill-level-changed event.

Interface Description

Name
request-user-skill-level
PubSub-Name
gits
Java class
RequestUserSkillLevelEvent

Message Content

Field

Type

Description

userId

UUID

The ID of the user for which skill levels are requested.

Topic: Student Code Submitted

Raised when a student submits code for an assignment. This event is triggered by the assignment service when it loads and processes a student’s code submission from their repository.

Interface Description

Name
student-code-submitted
PubSub-Name
gits
Java class
StudentCodeSubmittedEvent

Message Content

Field

Type

Description

studentId

UUID

ID of the student who submitted the code.

assignmentId

UUID

ID of the assignment for which the code was submitted.

courseId

UUID

ID of the course the assignment belongs to.

repositoryUrl

String

URL of the Git repository containing the submitted code.

commitHash

String

Git commit hash identifying the exact submission.

submittedAt

OffsetDateTime

Timestamp when the code was submitted.

submittedFiles

Map<String, String>

Map of file paths to their contents. Keys are relative file paths within the repository, values are the file contents as strings.