---
# System prepended metadata

title: Courses service

---

# Courses service

## List of events that courses-service consumes

### Register event

Description: This event is published from register service when user registers account
> exchange name: login-ex
exchange type: fanout

> queue name: course-svc-register-event-handler

```Message```

```JSON
    {
        "user": {
            "_id": "userId",
            "email": "someone@gmail.com",
            "avatar": "http://avatar.com",
            "username": "John smith",
            "role": "STUDENT",
            "student_id"
        },
        "event": {
            "_id": "event id"
        }
    }
```

### Choosen documents

Description: This event is published from repository service when teacher add new documents to course
> exchange name: course-repo-ex
> exchange type: direct

> queue name: course-svc-repository-event-handler
> key: document.chosen.list

```Message```

```JSON
    {
        data: {
            "courseId": "9a602267-b217-47b9-a931-ab762004e2af",
            "course"
            "user_id": "",
            "documents": {
                "count": 1,
                "documents":
                    [
                        {
                          "document_name": "HTML Basic",
                          "document_description": "Welcome to the world of code! Last year, millions of learners from our community started with HTML. Why? HTML is the skeleton of all web pages.",
                          "document_type": "SHAREDLINK",
                          "document_subject": "HTML"
                          "document_path": "https://drive.google.com/file/d/1X1HwCIvWBXarb6Vt8D9LY7ZrA2t6VA6S/view?usp=sharing",
                        }
                    ]
            }
        },
        "event": {
            "_id": "eventId"
        }
    }
    }
```

## List of events that courses-service publish

### Comment in an course

Description: This event is published when comment is created by user
> exchange name: notification-ex

> exchange type: direct
> biding key: course.comment

> queue name: notification-svc-course-event-handler

```Message```

```JSON
    {
        "comment": {
          "_id": "commentId",
          "commentator_id": "userId",
          "commentator_name": "Trần Tú Hảo",
          "course_id": "courseId",
          "course_name": "web nâng cao"
        },
        "event": {
            "_id": "eventId"
        }
    }
```

### Reply a comment in an course

Description: This event is published when comment is reply by user
> exchange name: notification-ex

> exchange type: direct
> binding key: course.replyComment

> queue name: notification-svc-course-event-handler

```Message```

```JSON
    {
        "comment": {
          "_id": "commentId",
          "comment_parent": "commentId",
          "comment_parent_owner_id": "userId",
          "comment_parent_owner_email": "tuhao@gmail.com",
          "commentator_id": "userId",
          "commentator_name": "Trần Tú Hảo",
          "course_id": "courseId",
          "course_name": "web nâng cao"
        },
        "event": {
            "_id": "eventId"
        }
    }
```

### Create a new course

Description: This event is published when a new course is created by teacher
> exchange name: notification-ex

> exchange type: direct
> binding key: course.created

> queue name: notification-svc-course-event-handler

```Message```

```JSON
    {
        "course": {
          "_id": "commentId",
          "course_name": "web nâng cao"
        },
        "event": {
            "_id": "eventId"
        }
    }
```

### Update course

Description: This event is published when teacher updates a course
> exchange name: notification-ex

> exchange type: direct
> binding key: course.update

> queue name: notification-svc-course-event-handler

```Message```

```JSON
    {
        "course": {
          "_id": "commentId",
          "course_name": "web nâng cao"
        },
        "event": {
            "_id": "eventId"
        }
    }
```

### Delete course

Description: This event is published when a course is deleted
> exchange name: notification-ex

> exchange type: direct
> binding key: course.delete

> queue name: notification-svc-course-event-handler

```Message```

```JSON
    {
        "course": {
          "_id": "commentId"
        },
        "event": {
            "_id": "eventId"
        }
    }
```