Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/backend/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -1800,7 +1800,7 @@ input CreateProblemInput {
difficulty: Level!
hint: String!
inputDescription: String!
isVisible: Boolean! = true
isVisible: Boolean! = false
languages: [Language!]!
memoryLimit: Int!
outputDescription: String!
Expand Down
33 changes: 18 additions & 15 deletions collection/client/Course/Create course notice comment/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -24,48 +24,51 @@ script:pre-request {

settings {
encodeUrl: true
timeout: 0
}

docs {
# 📘 Create Course Notice Comment

**POST** `/course/notice/:id/comment`

Add 1 comment to a specific lecture announcement.

특정 강의 공지사항에 댓글을 1개 추가합니다.

이 함수는 다음과 같은 조건에 따라 댓글을 생성하고 반환합니다.

2. 일반 사용자
- 본인이 참여 중인 강의의 공지에만 댓글을 달 수 있습니다.

접근 권한이 없는 경우 예외를 발생시킵니다.

- 일반 사용자: 강의 수강자가 아닌 경우 ForbiddenAccessException 발생

### 🔒 Authentication


✅ Required

### 📥 Request Parameters

#### Path Parameters

| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `id` | number | ✅ | 댓글을 달려는 강의 공지사항 아이디 |

### 📝 Request Body

#### Content-Type: `application/json`

```json
{
"content": "첫 번째 댓글입니다.",
"replyOnId": 1,
"isSecret": false
}
```

| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `content` | string | ✅ | 댓글 내용 |
Expand Down
23 changes: 13 additions & 10 deletions collection/client/Course/Delete course notice comment/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,33 @@ script:pre-request {

settings {
encodeUrl: true
timeout: 0
}

docs {
# 📘 Delete Course Notice Comment

**DELETE** `/course/notice/:id/comment/:commentId`

특정 강의 공지사항의 한 댓글을 삭제합니다.

이 함수는 다음과 같은 조건에 따라 댓글을 삭제하고 반환합니다.

2. 일반 사용자
- 본인이 작성한 댓글인 경우

접근 권한이 없는 경우 예외를 발생시킵니다.

- 일반 사용자: 본인이 작성한 댓글이 아닌 경우 ForbiddenAccessException 발생

### 🔒 Authentication


✅ Required

### 📥 Request Parameters

#### Path Parameters

| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `id` | number | ✅ | 강의 공지사항의 아이디 |
Expand Down
56 changes: 54 additions & 2 deletions collection/client/Course/Get Course by ID/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,59 @@ script:pre-request {
}

docs {
# Get Group by Group Id
# 📘 Get Course by Id

**GET** `/course/:id`

Get a course information for a specific group Id.

URL param으로 전달된 강의 `groupId`를 통해 해당 강의의 정보를 가져와 반환합니다.
Comment on lines +29 to +33
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좀 더 자세한 설명이 있으면 좋겠습니당
(invited에 따라 어떻게 변하는 지 Joined 여부에 따라 어떻게 변하는 지 등)


---
- URL param으로 전달된 `groupId`를 통해 해당 group의 정보를 가져와 반환합니다.

### 🔒 Authentication

✅ Required

---

### 📥 Request Parameters

#### Path Parameters

| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `id` | number | ✅ | ID of the target course |

---
Comment on lines +43 to +51
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Query Parameter도 추가해주세용


### 📝 Response Body

#### Content-Type: `application/json`

```
{
"id": 2,
"groupName": "정보보호개론",
"groupType": "Course",
"courseInfo": {
"courseNum": "SWE3033",
"classNum": 42,
"professor": "형식킴",
"semester": "2025 Spring"
},
"isJoined": false
}
```

| Name | Type | Required | Description |
|------|--------|----------|---------------------------|
| `id` | number | ✅ | 그룹 id |
| `groupName` | string | ✅ | 그룹 제목 |
| `groupType` | string | ✅ | 그룹 유형 |
| `courseNum` | string | ✅ | 강의 번호 |
| `classNum` | number | ✅ | 분반 |
| `professor` | string | ✅ | 교수님 성함 |
| `semester` | string | ✅ | 학기 |
| `isJoined` | boolean | ✅ | 강의 등록 여부 |
}
50 changes: 46 additions & 4 deletions collection/client/Course/Get Course by Invitation/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ meta {
}

get {
url: {{baseUrl}}/course/invite?invitation
url: {{baseUrl}}/course/invite?invitation=123
body: none
auth: none
}

params:query {
invitation:
invitation: 123
}

assert {
Expand All @@ -28,7 +28,49 @@ script:pre-request {
}

docs {
# Get Group by Group Id
# 📘 Get Course by Invitation

**GET** `/course/invite?invitation`

Get a course information for a group invited by an invitation code.

URL Query로 invitation 코드를 전달하면, 초대된 강의의 정보를 반환합니다.

부적절한 초대 코드일 경우, EntityNotExistException가 발생합니다.

---
- URL param으로 전달된 `groupId`를 통해 해당 group의 정보를 가져와 반환합니다.

### 🔒 Authentication

✅ Required

---

### 📥 Request Parameters

#### Query Parameters
| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `invitation` | string | ✅ | 초대 코드 |

---

### 📝 Response Body

#### Content-Type: `application/json`

```
{
"message": "Invalid invitation does not exist",
"error": "Not Found",
"statusCode": 404
}

```

| Name | Type | Required | Description |
|------|--------|----------|---------------------------|
| `message` | string | ✅ | 응답 메세지 |
| `error` | string | ✅ | 에러 메세지 |
| `statusCode` | number | ✅ | HTTP 상태 코드 |
}
16 changes: 14 additions & 2 deletions collection/client/Course/Get Joined Courses/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,19 @@ script:pre-request {
}

docs {
# Get Joined Groups
# 📘 Get Joined Courses

**GET** `/course/joined`

Get information of joined courses of current user.

현재 User가 속해있는 group(강의)들의 정보를 반환합니다.

---

### 🔒 Authentication

✅ Required

---
- 현재 User가 속해있는 Group 정보를 반환합니다.
}
Comment on lines +27 to 42
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Response Body 추가 해주세용

55 changes: 44 additions & 11 deletions collection/client/Course/Get all course notices/Succeed.bru
Original file line number Diff line number Diff line change
Expand Up @@ -34,31 +34,32 @@ script:pre-request {

docs {
# 📘 Get Course Notices

**GET** `/course/notice`

Get a set number of lecture announcements that users can inquire about.

유저가 조회할 수 있는 강의 공지사항을 정해진 개수만큼 가져옵니다.

이 함수는 다음과 같은 조건에 따라 강의 공지사항을 조회합니다.

1. 운영진(Admin, Manager)
- 모든 공지 목록을 열람할 수 있습니다.
3. 일반 사용자
- 전체 공개인 공지를 열람할 수 있습니다.
- 자신이 참여한 강의의 공지를 열람할 수 있습니다.

접근 권한이 없는 경우 예외를 발생시킵니다.

- 일반 사용자: 본인이 참여하지 않은 강의의 공지사항 목록을 조회하려는 경우 ForbiddenAccessException 발생


---
### 🔒 Authentication

---
### 📥 Request Parameters

#### Path Parameters

| Name | Type | Required | Description |
|------|--------|----------|--------------------------|
| `cursor` | number | | 조회할 페이지 지정을 위한 cursor |
Expand All @@ -67,4 +68,36 @@ docs {
| `readFilter` | string | ✅ | 읽은 공지를 가져올지, 읽지 않은 공지를 가져올지 결정하는 필터 (기본값은 all, unread/all 입력 가능) |
| `search` | string | ✅ | 제목에서 검색할 문자열 |
| `order` | enum | ✅ | 공지 정렬 기준 (생성/수정시간 기준 정렬 및 각각에 대한 오름차순, 내림차순 정렬 가능) |

---

### 📝 Response Body

#### Content-Type: `application/json`

```
{
"data": [
{
"id": 1,
"title": "첫 번째 강의 공지입니다.",
"updateTime": "2025-12-30T10:43:47.479Z",
"isFixed": false,
"commentCount": 9,
"isRead": false
}
],
"total":1
}
```

| Name | Type | Required | Description |
|------|--------|----------|---------------------------|
| `id` | number | ✅ | 공지 id |
| `title` | string | ✅ | 공지 제목 |
| `updateTime` | string (ISO 8601) | ✅ | 마지막 업데이트 시간 |
| `isFixed` | boolean | ✅ | 고정된 공지인지에 대한 여부 |
| `commentCount` | number | ✅ | 댓글의 개수 |
| `isRead` | boolean | ✅ | 읽은 공지인지에 대한 여부 |
| `total` | number | ✅ | 가져온 공지의 총 개수 |
}
Loading
Loading