API 공통 사항
이 API는 JSend Format을 따르는 API로, 아래와 같은 공통된 응답을 줍니다.
추가 사항으로, 권한 인증이 필요한 API는 클라이언트에서 가지고 있는 JWT 토큰을 요청시 Authorization 헤더에 Bearer token과 같은 형태로 함께 전송해야합니다.
Type | Description | Required Keys |
---|---|---|
|
요청이 성공하였으며, 일반적으로 데이터를 응답합니다. |
status, data |
|
클라이언트의 요청에서 문제가 있으며, 그에 따른 문제점을 응답합니다. |
status, data |
|
요청을 처리하는 도중 서버에서 문제가 발생하였으며, 그에 따른 에러 메시지를 응답합니다. |
status, message |
Example
Success
{
"status" : "success",
"data" : {
"posts" : [
{ "id" : 1, "title" : "A blog post", "body" : "Some useful content" },
{ "id" : 2, "title" : "Another blog post", "body" : "More content" },
]
}
}
Fail
{
"status" : "fail",
"data" : {
"title" : "A title is required"
}
}
Error
{
"status" : "error",
"message" : "Unable to communicate with database"
}
End-User APIs
사용자가 사용하는 실 서비스에 이용되는 API입니다.
Auth API ( /api/v1/auth )
회원가입
회원가입을 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/auth/signup
POST /api/v1/auth/signup HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 82
Host: localhost:8080
{
"email" : "test@test.com",
"username" : "test",
"password" : "Test123@!"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 94
{
"status" : "success",
"data" : {
"id" : "57684f97-0528-4e3a-8ae6-d980f0e01003"
}
}
{
"email" : "test@test.com",
"username" : "test",
"password" : "Test123@!"
}
Path | Type | Description |
---|---|---|
|
|
이메일 |
|
|
닉네임 |
|
|
비밀번호 |
{
"status" : "success",
"data" : {
"id" : "57684f97-0528-4e3a-8ae6-d980f0e01003"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
UUID |
로그인
로그인을 위한 API입니다. ( 예외적으로, Back Office에서 함께 사용되는 API입니다. )
HTTP Method : POST
End-Point : /api/v1/auth/login
POST /api/v1/auth/login HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 59
Host: localhost:8080
{
"email" : "test@test.com",
"password" : "Test123@!"
}
HTTP/1.1 200 OK
Set-Cookie: refresh_token=refreshToken; Path=/; Max-Age=1; Expires=Sun, 21 Jan 2024 14:25:19 GMT; Secure; HttpOnly
Content-Type: application/json
Content-Length: 226
{
"status" : "success",
"data" : {
"id" : "ed72341f-d6d7-48ad-aef7-8d129a0af9fc",
"username" : "seongil-kim",
"email" : "seongil.kim@gmail.com",
"role" : "ROLE_USER",
"accessToken" : "accessToken"
}
}
{
"email" : "test@test.com",
"password" : "Test123@!"
}
Path | Type | Description |
---|---|---|
|
|
이메일 |
|
|
비밀번호 |
{
"status" : "success",
"data" : {
"id" : "ed72341f-d6d7-48ad-aef7-8d129a0af9fc",
"username" : "seongil-kim",
"email" : "seongil.kim@gmail.com",
"role" : "ROLE_USER",
"accessToken" : "accessToken"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
회원의 UUID |
|
|
닉네임 |
|
|
이메일 |
|
|
권한 |
|
|
Access 토큰 (JWT) |
response를 살펴보면 set-cookie 헤더에서 refresh-token 이라는 이름의 쿠키가 세팅되는 것을 알 수 있습니다.
이 값을 이용하여 token refresh를 하게 됩니다.
Name | Description |
---|---|
|
Refresh 토큰 쿠키 세팅 ( JWT ) |
토큰 재발급
토큰 재발급을 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/auth/refresh
GET /api/v1/auth/refresh HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Set-Cookie: refresh_token=refreshToken; Path=/; Max-Age=1; Expires=Sun, 21 Jan 2024 14:25:19 GMT; Secure; HttpOnly
Content-Type: application/json
Content-Length: 78
{
"status" : "success",
"data" : {
"accessToken" : "accessToken"
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 만료된 Access Token이며, 토큰 재발급시 쿠키에 포함되어 함께 전송되는 Refresh token과 함께 토큰 재발급시 사용됩니다.
Name | Description |
---|---|
|
만료된 Access 토큰 ( JWT ) |
{
"status" : "success",
"data" : {
"accessToken" : "accessToken"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
Access 토큰 (JWT) |
response를 살펴보면 set-cookie 헤더에서 refresh-token 이라는 이름의 쿠키가 세팅되는 것을 알 수 있습니다.
이 refresh token은 요청에 포함되어 전송된 refresh token의 기한이 3일 이하로 남았을 때, access token과 함께 재발급됩니다.
만약, 요청에 포함되어 전송된 refresh token의 유효기간이 3일 이상이라면 새로운 refresh token을 전송하지 않습니다.
Name | Description |
---|---|
|
새로운 Refresh 토큰 쿠키 세팅 ( JWT ) |
유저 정보 조회
토큰을 이용한 유저 정보 조회를 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/auth/info
GET /api/v1/auth/info HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 182
{
"status" : "success",
"data" : {
"id" : "8f80d23c-f473-4005-ab5e-1cef638f54cd",
"username" : "admin",
"email" : "admin@csbroker.io",
"role" : "ROLE_ADMIN"
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
Access 토큰 ( JWT ) |
{
"status" : "success",
"data" : {
"id" : "8f80d23c-f473-4005-ab5e-1cef638f54cd",
"username" : "admin",
"email" : "admin@csbroker.io",
"role" : "ROLE_ADMIN"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
회원의 UUID |
|
|
닉네임 |
|
|
이메일 |
|
|
권한 |
비밀번호 변경 메일 전송
비밀번호 변경 메일 전송을 위한 API입니다.
비밀번호 변경 메일에는 "프론트엔드주소/password-change/코드" 와 같은 값이 전달됩니다.
즉, 프론트엔드에서는 위 링크에 해당하는 비밀번호 변경 창을 만들어줘야합니다.
HTTP Method : POST
End-Point : /api/v1/password/code
POST /api/v1/auth/password/code HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 31
Host: localhost:8080
{
"email" : "test@test.com"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48
{
"status" : "success",
"data" : "success"
}
{
"email" : "test@test.com"
}
{
"status" : "success",
"data" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
비밀번호 변경 요청 결과 |
비밀번호 변경
비밀번호 변경을 위한 API입니다.
유저가 "프론트엔드주소/password-change/코드" 와 같은 값으로 접근 하였을 때,
코드와 새로운 비밀번호를 함께 전송하면 비밀번호가 새로운 비밀번호로 변경됩니다.
코드는 5분동안 유효하며, 코드와 새로운 비밀번호를 전송해야 새로운 비밀번호로 성공적으로 변경됩니다.
HTTP Method : PUT
End-Point : /api/v1/password/change
PUT /api/v1/auth/password/change HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 51
Host: localhost:8080
{
"code" : "123456",
"password" : "Test123@!"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48
{
"status" : "success",
"data" : "success"
}
{
"code" : "123456",
"password" : "Test123@!"
}
{
"status" : "success",
"data" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
비밀번호 변경 결과 |
Common API ( /api/v1 )
메인페이지 통계 조회
메인페이지 통계 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/stats
GET /api/v1/stats HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 118
{
"status" : "success",
"data" : {
"problemCnt" : 10,
"gradableProblemCnt" : 10,
"userCnt" : 100
}
}
{
"status" : "success",
"data" : {
"problemCnt" : 10,
"gradableProblemCnt" : 10,
"userCnt" : 100
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 수 |
|
|
채점 가능한 문제 수 |
|
|
회원 수 |
기술 스택 데이터 조회
기술 스택 데이터 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/techs
GET /api/v1/techs?query=a HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 59
{
"status" : "success",
"data" : [ "aws", "android" ]
}
조회를 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/common/techs/request-parameters.adoc[]
{
"status" : "success",
"data" : [ "aws", "android" ]
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
기술 데이터 |
랭킹 리스트 조회
랭킹 리스트 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/ranks
GET /api/v1/ranks?size=3&page=0 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 281
{
"status" : "success",
"data" : {
"size" : 3,
"totalPage" : 10,
"currentPage" : 0,
"numberOfElements" : 1,
"contents" : [ {
"id" : "552c0808-47c6-4ff0-83de-600a51c55b30",
"username" : "test",
"rank" : 1,
"score" : 10.0
} ]
}
}
조회를 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/common/ranks/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"size" : 3,
"totalPage" : 10,
"currentPage" : 0,
"numberOfElements" : 1,
"contents" : [ {
"id" : "552c0808-47c6-4ff0-83de-600a51c55b30",
"username" : "test",
"rank" : 1,
"score" : 10.0
} ]
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
랭킹 데이터 |
|
|
가져온 랭킹 데이터 사이즈 |
|
|
총 페이지 수 |
|
|
현재 페이지 수 |
|
|
총 데이터 수 |
|
|
랭킹 데이터 |
|
|
유저 id |
|
|
유저 닉네임 |
|
|
유저 랭킹 |
|
|
유저 점수 |
Problem API ( /api/v1/problems )
서술형 문제 단건 조회
서술형 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problems/long/{problem_id:Long}
GET /api/v1/problems/long/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 438
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "Long problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "Long problem description",
"avgScore" : 10.0,
"topScore" : 10.0,
"bottomScore" : 0.0,
"score" : 10.0,
"totalSubmission" : 10,
"isSolved" : true,
"isGradable" : true,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
서술형 문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "Long problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "Long problem description",
"avgScore" : 10.0,
"topScore" : 10.0,
"bottomScore" : 0.0,
"score" : 10.0,
"totalSubmission" : 10,
"isSolved" : true,
"isGradable" : true,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
평균 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
최고 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
최저 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
총 제출 수 |
|
|
푼 문제 여부 |
|
|
문제 채점 가능 여부 |
|
|
문제 배점 |
|
|
북마크 수 |
|
|
좋아요 수 |
|
|
북마크 여부 |
|
|
좋아요 여부 |
서술형 문제 채점
서술형 문제 채점을 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/problems/long/{problem_id:Long}/grade
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/http-request.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/http-response.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/path-parameters.adoc[]
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다. Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/request-headers.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/request-parameters.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/response-body.adoc[] Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/grade/response-fields.adoc[]
서술형 문제 제출 (채점 X)
서술형 문제 제출을 위한 API 입니다.
HTTP Method : POST
End-Point : /api/v1/problems/long/{problem_id:Long}/submit
POST /api/v1/problems/long/1/submit HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 30
Host: localhost:8080
{
"answer" : "user answer"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 274
{
"status" : "success",
"data" : {
"title" : "title",
"tags" : [ "tag1", "tag2", "tag3" ],
"description" : "description",
"totalSubmission" : 100,
"userSubmission" : 10,
"userAnswer" : "user answer",
"standardAnswer" : "standard answer"
}
}
Parameter | Description |
---|---|
|
문제 id |
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
Unresolved directive in index.adoc - include::./build/generated-snippets/problems/long/submit/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"title" : "title",
"tags" : [ "tag1", "tag2", "tag3" ],
"description" : "description",
"totalSubmission" : 100,
"userSubmission" : 10,
"userAnswer" : "user answer",
"standardAnswer" : "standard answer"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 제목 |
|
|
태그 |
|
|
문제 설명 |
|
|
해당 문제에 대해 전체 유저가 제출한 수 (총 제출 수) |
|
|
해당 문제에 대해 유저가 제출한 수 |
|
|
유저의 답변 |
|
|
모범 답안 |
단답형 문제 단건 조회
단답형 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problems/short/{problem_id:Long}
GET /api/v1/problems/short/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 438
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"answerLength" : 10,
"isEnglish" : true,
"isSolved" : true,
"score" : 10.0,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
객관식 문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"answerLength" : 10,
"isEnglish" : true,
"isSolved" : true,
"score" : 10.0,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
맞은 사람 수 |
|
|
맞은 제출 수 |
|
|
총 제출 수 |
|
|
정답 글자수 ( 힌트 ) |
|
|
정답 언어 ( 영어면 true, 한국어면 false ) |
|
|
푼 문제 여부 |
|
|
문제 배점 |
|
|
북마크 수 |
|
|
좋아요 수 |
|
|
북마크 여부 |
|
|
좋아요 여부 |
단답형 문제 채점
단답형 문제 채점을 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/problems/short/{problem_id:Long}/grade
POST /api/v1/problems/short/1/grade HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 30
Host: localhost:8080
{
"answer" : "user answer"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 427
{
"status" : "success",
"data" : {
"gradingHistoryId" : 1,
"problemId" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"userAnswer" : "user answer",
"answerLength" : 10,
"isAnswer" : false,
"score" : 10.0,
"correctAnswer" : "correct answer"
}
}
Parameter | Description |
---|---|
|
문제 id |
단답형 문제 단건 조회를 위한 path parameter의 설명입니다.
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"status" : "success",
"data" : {
"gradingHistoryId" : 1,
"problemId" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"userAnswer" : "user answer",
"answerLength" : 10,
"isAnswer" : false,
"score" : 10.0,
"correctAnswer" : "correct answer"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
채점 결과 id |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
맞은 사람 수 |
|
|
맞은 제출 수 |
|
|
총 제출 수 |
|
|
채점 된 유저 답안의 점수 |
|
|
채점 된 유저 답안 |
|
|
모범 답안의 글자 수 |
|
|
유저 답안의 정답 여부 |
|
|
모범 답안 |
객관식 문제 단건 조회
객관식 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problems/multiple/{problem_id:Long}
GET /api/v1/problems/multiple/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 489
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"choices" : [ {
"id" : 1,
"content" : "123"
} ],
"isSolved" : true,
"isMultipleAnswer" : true,
"score" : 10.0,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
객관식 문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"choices" : [ {
"id" : 1,
"content" : "123"
} ],
"isSolved" : true,
"isMultipleAnswer" : true,
"score" : 10.0,
"likeCount" : 10,
"bookmarkCount" : 10,
"isLiked" : true,
"isBookmarked" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
평균 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
맞은 사람 수 |
|
|
맞은 제출 수 |
|
|
총 제출 수 |
|
|
선지 id |
|
|
선지 내용 |
|
|
푼 문제 여부 |
|
|
다중 답안 여부 |
|
|
문제 배점 |
|
|
북마크 수 |
|
|
좋아요 수 |
|
|
북마크 여부 |
|
|
좋아요 여부 |
객관식 문제 채점
객관식 문제 채점을 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/problems/multiple/{problem_id:Long}/grade
POST /api/v1/problems/multiple/1/grade HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 25
Host: localhost:8080
{
"answerIds" : [ 1 ]
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 425
{
"status" : "success",
"data" : {
"gradingHistoryId" : 1,
"problemId" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"choices" : [ {
"id" : 1,
"content" : "123"
} ],
"userAnswerIds" : [ 1 ],
"isAnswer" : true,
"score" : 10.0
}
}
Parameter | Description |
---|---|
|
문제 id |
객관식 문제 단건 조회를 위한 path parameter의 설명입니다.
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"status" : "success",
"data" : {
"gradingHistoryId" : 1,
"problemId" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"choices" : [ {
"id" : 1,
"content" : "123"
} ],
"userAnswerIds" : [ 1 ],
"isAnswer" : true,
"score" : 10.0
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
채점 결과 id |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
맞은 사람 수 |
|
|
맞은 제출 수 |
|
|
총 제출 수 |
|
|
채점 된 유저 답안의 점수 |
|
|
채점 된 유저 답안 ( 고른 선지의 id 배열 ) |
|
|
유저 답안의 정답 여부 |
|
|
문제의 선지 |
|
|
문제의 선지 |
|
|
문제의 선지 |
|
|
선지 id |
|
|
선지 내용 |
문제 검색
문제 검색을 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problems
Req Params : query, tags, isSolved, page, size, type, isGradable
GET /api/v1/problems?query=test&isSolved=false&tags=os,ds&page=0&size=10&type=long&isGradable=false HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 335
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"title" : "test",
"tags" : [ "os", "ds" ],
"avgScore" : 1.0,
"totalSubmission" : 10,
"type" : "long"
} ],
"currentPage" : 0,
"totalPages" : 1,
"totalElements" : 1,
"numberOfElements" : 1,
"size" : 10
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 아래의 설명과 같이 푼 문제 검색 기능을 활용할 때만 포함하면 됩니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 ( 푼 문제로 검색을 하는 경우가 아니라면, 포함하지 않아도 됨. ) |
문제 검색을 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/problems/search/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"title" : "test",
"tags" : [ "os", "ds" ],
"avgScore" : 1.0,
"totalSubmission" : 10,
"type" : "long"
} ],
"currentPage" : 0,
"totalPages" : 1,
"totalElements" : 1,
"numberOfElements" : 1,
"size" : 10
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 데이터 |
|
|
문제 id |
|
|
문제 제목 |
|
|
태그 |
|
|
평균 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
총 제출 수 |
|
|
문제의 타입 ( short, multiple, long ) |
|
|
현재 페이지 번호 |
|
|
검색된 페이지 수 |
|
|
검색된 전체 데이터 수 |
|
|
전체 데이터 중 현재 페이지의 데이터 수 |
|
|
요청한 데이터 수 |
문제 랜덤 조회
문제를 랜덤하게 가져오기 위한 API입니다.영
HTTP Method : GET
End-Point : /api/v1/problems/shuffle
Req Params : size
GET /api/v1/problems/shuffle?size=2 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 371
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"title" : "test",
"tags" : [ "os", "ds" ],
"avgScore" : 1.0,
"totalSubmission" : 10,
"type" : "long"
}, {
"id" : 2,
"title" : "test2",
"tags" : [ "db" ],
"avgScore" : 2.0,
"totalSubmission" : 20,
"type" : "long"
} ]
}
}
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
문제 랜덤 조회를 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/problems/shuffle/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"title" : "test",
"tags" : [ "os", "ds" ],
"avgScore" : 1.0,
"totalSubmission" : 10,
"type" : "long"
}, {
"id" : 2,
"title" : "test2",
"tags" : [ "db" ],
"avgScore" : 2.0,
"totalSubmission" : 20,
"type" : "long"
} ]
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 데이터 |
|
|
문제 id |
|
|
문제 제목 |
|
|
태그 |
|
|
평균 점수 ( 푼 사람이 없는 경우 null return ) |
|
|
총 제출 수 |
|
|
문제의 타입 ( short, multiple, long ) |
문제 채점 결과 평가 의견
문제 채점 결과에 대한 평가 의견을 남기기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/problems/grade/{problem_id:Long}/assessment
POST /api/v1/problems/grade/1/assessment HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 53
Host: localhost:8080
{
"assessmentType" : "GOOD",
"content" : "test"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
Parameter | Description |
---|---|
|
문제 채점 id |
객관식 문제 단건 조회를 위한 path parameter의 설명입니다.
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"assessmentType" : "GOOD",
"content" : "test"
}
Path | Type | Description |
---|---|---|
|
|
평가 의견 타입 ( 좋음 : GOOD, 나쁨 : BAD, 적당 : NORMAL ) |
|
|
평가 의견 내용 ( 없어도 상관 없음, 최대 150자 ) |
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
평가 의견 아이디 |
Problems API V2 ( /api/v2/problems )
단답형 문제 단건 조회
단답형 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v2/problems/short/{problem_id:Long}
GET /api/v2/problems/short/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 346
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"answerLength" : 10,
"consistOf" : "ENGLISH",
"isSolved" : true,
"score" : 10.0
}
}
Parameter | Description |
---|---|
|
문제 id |
객관식 문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "problem title",
"tags" : [ "tag1", "tag2" ],
"description" : "problem description",
"correctSubmission" : 10,
"correctUserCnt" : 10,
"totalSubmission" : 10,
"answerLength" : 10,
"consistOf" : "ENGLISH",
"isSolved" : true,
"score" : 10.0
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
맞은 사람 수 |
|
|
맞은 제출 수 |
|
|
총 제출 수 |
|
|
정답 글자수 ( 힌트 ) |
|
|
정답 언어 ( 영어면 ENGLISH, 한국어면 KOREAN, 숫자면 NUMERIC ) |
|
|
푼 문제 여부 |
|
|
문제 배점 |
문제 이의 제기
문제 이의 제기를 위한 API입니다.
HTTP Method : POST
End-Point : /api/v2/problems/{problem_id:Long}/challenge
POST /api/v2/problems/1/challenge HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 69
Host: localhost:8080
{
"content" : "이것은 이의제기를 위한 내용입니다."
}
Parameter | Description |
---|---|
|
문제 id |
이의 제기를 위한 path parameter의 설명입니다.
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"content" : "이것은 이의제기를 위한 내용입니다."
}
Path | Type | Description |
---|---|---|
|
|
이의제기 내용 ( 최소 10자 ~ 최대 150자 ) |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43
{
"status" : "success",
"data" : true
}
Parameter | Description |
---|---|
|
문제 id |
{
"status" : "success",
"data" : true
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
이의제기 데이터 생성 여부 |
문제 좋아요 API ( /api/v2/problems/{postId}/like )
문제를 좋아요하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v2/problems/{postId}/like
POST /api/v2/problems/1/like HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
Parameter | Description |
---|---|
|
문제 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 26
{
"status" : "success"
}
{
"status" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
문제 북마크 API ( /api/v2/problems/{postId}/bookmark )
문제를 북마크하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v2/problems/{postId}/bookmark
POST /api/v2/problems/1/bookmark HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
Parameter | Description |
---|---|
|
문제 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 26
{
"status" : "success"
}
{
"status" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
User API ( /api/v1/users )
유저 조회
유저 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/users/{user_id:UUID}
GET /api/v1/users/0b11db63-0fd7-4235-af0b-ef460a9ffada HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 414
{
"status" : "success",
"data" : {
"id" : "ed5d970e-bc20-4bc8-82f5-b75683116ae9",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 회원 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
Access 토큰 ( JWT ) |
Parameter | Description |
---|---|
|
회원 UUID |
유저 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : "ed5d970e-bc20-4bc8-82f5-b75683116ae9",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
UUID |
|
|
이메일 |
|
|
닉네임 |
|
|
권한 |
|
|
전공 |
|
|
직업 |
|
|
희망 직무 |
|
|
사용 기술 |
|
|
프로필 이미지 url |
|
|
Github url |
|
|
LinkedIn url |
|
|
Provider Type ( GOOGLE, GITHUB, LOCAL ) |
유저 전체 조회
유저 전체 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/users
GET /api/v1/users HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 418
{
"status" : "success",
"data" : [ {
"id" : "5184e7f4-7ba0-4cea-81e5-2eef8bf23f08",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
} ]
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 Admin 권한을 가진 유저의 Access Token이며, 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
Admin 권한의 Access 토큰 ( JWT ) |
{
"status" : "success",
"data" : [ {
"id" : "5184e7f4-7ba0-4cea-81e5-2eef8bf23f08",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
} ]
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
UUID |
|
|
이메일 |
|
|
닉네임 |
|
|
권한 |
|
|
전공 |
|
|
직업 |
|
|
희망 직무 |
|
|
사용 기술 |
|
|
프로필 이미지 url |
|
|
Github url |
|
|
LinkedIn url |
|
|
Provider Type ( GOOGLE, GITHUB, LOCAL ) |
유저 정보 수정
유저 정보 수정을 위한 API입니다.
HTTP Method : PUT
End-Point : /api/v1/users/{userID: UUID}
PUT /api/v1/users/0b26dfc4-f7d9-49eb-9b7f-eb9d73c15733 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 436
Host: localhost:8080
{
"profileImageUrl" : "https://test.com/test.png",
"username" : "test-admin-update",
"originalPassword" : "password",
"password" : "changePassword123!",
"major" : "환경공학",
"job" : "대학생",
"jobObjective" : "프론트엔드 개발자",
"techs" : [ "react", "typescript" ],
"githubUrl" : "https://github.com/Kim-Hyunjo",
"linkedinUrl" : "https://www.linkedin.com/in/%EC%9E%AC%EC%9B%90-%EB%AF%BC-2b5149211"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 414
{
"status" : "success",
"data" : {
"id" : "43788deb-90cd-4be6-8bab-68a984c8ff56",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 회원 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
Access 토큰 ( JWT ) |
{
"profileImageUrl" : "https://test.com/test.png",
"username" : "test-admin-update",
"originalPassword" : "password",
"password" : "changePassword123!",
"major" : "환경공학",
"job" : "대학생",
"jobObjective" : "프론트엔드 개발자",
"techs" : [ "react", "typescript" ],
"githubUrl" : "https://github.com/Kim-Hyunjo",
"linkedinUrl" : "https://www.linkedin.com/in/%EC%9E%AC%EC%9B%90-%EB%AF%BC-2b5149211"
}
Path | Type | Description |
---|---|---|
|
|
수정할 닉네임 ( 필수 X ) |
|
|
수정할 프로필 이미지 url ( 필수 X ) |
|
|
수정전 비밀번호 ( 필수 X, but 수정시 필수 ) |
|
|
수정할 비밀번호 ( 필수 X ) |
|
|
수정할 전공 ( 필수 X ) |
|
|
수정할 직업 ( 필수 X ) |
|
|
수정할 희망 직무 ( 필수 X ) |
|
|
수정할 사용 기술 ( 필수 X ) |
|
|
수정할 github url ( 필수 X ) |
|
|
수정할 linkedin url ( 필수 X ) |
{
"status" : "success",
"data" : {
"id" : "43788deb-90cd-4be6-8bab-68a984c8ff56",
"email" : "email",
"username" : "username",
"role" : "ROLE_USER",
"major" : "major",
"job" : "job",
"jobObjective" : "jobObjective",
"techs" : [ "tech" ],
"profileImgUrl" : "profileImageUrl",
"githubUrl" : "githubUrl",
"linkedinUrl" : "linkedinUrl",
"providerType" : "LOCAL"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
UUID |
|
|
이메일 |
|
|
닉네임 |
|
|
권한 |
|
|
전공 |
|
|
직업 |
|
|
희망 직무 |
|
|
사용 기술 |
|
|
프로필 이미지 url |
|
|
Github url |
|
|
LinkedIn url |
|
|
Provider Type ( GOOGLE, GITHUB, LOCAL ) |
유저 삭제
유저 삭제를 위한 API입니다.
HTTP Method : DELETE
End-Point : /api/v1/users/{userID: UUID}
DELETE /api/v1/users/adf607fc-af6b-41e2-9611-fa3290ef5e65 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 115
{
"status" : "success",
"data" : {
"id" : "adf607fc-af6b-41e2-9611-fa3290ef5e65",
"result" : true
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 회원 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
Access 토큰 ( JWT ) |
{
"status" : "success",
"data" : {
"id" : "adf607fc-af6b-41e2-9611-fa3290ef5e65",
"result" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
UUID |
|
|
삭제 결과 |
유저 통계 조회
유저 통계 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/users/{user_id}/stats
GET /api/v1/users/49eb0069-fcc5-42c0-8d8d-99d3a4e1b637/stats HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 514
{
"status" : "success",
"data" : {
"correctAnsweredProblem" : [ {
"id" : 1,
"type" : "long",
"title" : "Long Problem"
} ],
"wrongAnsweredProblem" : [ {
"id" : 2,
"type" : "short",
"title" : "Short Problem"
} ],
"partialAnsweredProblem" : [ {
"id" : 3,
"type" : "short",
"title" : "Short Problem"
} ],
"count" : {
"os" : 1,
"network" : 2,
"ds" : 3,
"db" : 4
},
"rank" : 1,
"score" : 10.0
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
Admin 권한의 Access 토큰 ( JWT ) |
{
"status" : "success",
"data" : {
"correctAnsweredProblem" : [ {
"id" : 1,
"type" : "long",
"title" : "Long Problem"
} ],
"wrongAnsweredProblem" : [ {
"id" : 2,
"type" : "short",
"title" : "Short Problem"
} ],
"partialAnsweredProblem" : [ {
"id" : 3,
"type" : "short",
"title" : "Short Problem"
} ],
"count" : {
"os" : 1,
"network" : 2,
"ds" : 3,
"db" : 4
},
"rank" : 1,
"score" : 10.0
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
맞은 문제 |
|
|
문제 id |
|
|
문제 타입 |
|
|
문제 제목 |
|
|
틀린 문제 |
|
|
문제 id |
|
|
문제 타입 |
|
|
문제 제목 |
|
|
부분 점수를 받은 문제 |
|
|
문제 id |
|
|
문제 타입 |
|
|
문제 제목 |
|
|
푼 문제 수 통계 |
|
|
맞은 운영체제 문제 수 통계 |
|
|
맞은 네트워크 문제 수 통계 |
|
|
맞은 자료구조 문제 수 통계 |
|
|
맞은 데이터베이스 문제 수 통계 |
|
|
랭킹 ( 랭킹이 집계되지 않았다면, null ) |
|
|
점수 |
Notification API ( /api/v1/notifications )
Notification 조회
Notification 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/notifications
Req Params : page, size
GET /api/v1/notifications?page=0&size=10 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 332
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"content" : "content",
"link" : "link",
"isRead" : false,
"createdAt" : "2024-01-21T14:25:19.667262182"
} ],
"currentPage" : 0,
"totalPages" : 1,
"totalElements" : 1,
"numberOfElements" : 1,
"size" : 10
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
Unresolved directive in index.adoc - include::./build/generated-snippets/notifications/getAll/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"contents" : [ {
"id" : 1,
"content" : "content",
"link" : "link",
"isRead" : false,
"createdAt" : "2024-01-21T14:25:19.667262182"
} ],
"currentPage" : 0,
"totalPages" : 1,
"totalElements" : 1,
"numberOfElements" : 1,
"size" : 10
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
알림 내용 리스트 |
|
|
알림 ID |
|
|
알림 내용 |
|
|
알림 링크 |
|
|
알림 읽음 여부 |
|
|
알림 생성 시간 |
|
|
요청한 현재 페이지 |
|
|
총 페이지 |
|
|
총 알림 개수 |
|
|
현재 페이지의 알림 개수 |
|
|
한 페이지에 보여줄 알림 개수 |
Notification 단건 읽음 처리
Notification 읽음 처리를 위한 API입니다.
HTTP Method : PUT
End-Point : /api/v1/notifications/read/{notification_id}
PUT /api/v1/notifications/read/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 65
{
"status" : "success",
"data" : {
"success" : true
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"status" : "success",
"data" : {
"success" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
읽음 처리 성공 여부 |
Notification 다건 읽음 처리
Notification 여러건의 읽음 처리를 위한 API입니다.
HTTP Method : PUT
End-Point : /api/v1/notifications/read
PUT /api/v1/notifications/read HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 19
Host: localhost:8080
{
"ids" : [ 1 ]
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 65
{
"status" : "success",
"data" : {
"success" : true
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"status" : "success",
"data" : {
"success" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
읽음 처리 성공 여부 |
읽지않은 Notification 개수 조회
읽지않은 Notification 개수 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/notifications/count
GET /api/v1/notifications/count HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 61
{
"status" : "success",
"data" : {
"count" : 10
}
}
request를 살펴보면 Authorization 헤더에서 Bearer token 형태로, access token을 전달하는 것을 알 수 있습니다.
이 Access Token은 인증을 위해 필수적으로 포함되어야 합니다.
Name | Description |
---|---|
|
인증을 위한 Access 토큰 |
{
"status" : "success",
"data" : {
"count" : 10
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
읽지 않은 알림 개수 |
문제 세트 API ( /api/v1/problem-sets )
문제 세트 전체 조회
문제 세트 전체 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problem-sets
GET /api/v1/problem-sets HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 166
{
"status" : "success",
"data" : [ {
"id" : 1,
"problemCnt" : 0,
"name" : "test 문제세트",
"description" : "테스트용 문제세트"
} ]
}
{
"status" : "success",
"data" : [ {
"id" : 1,
"problemCnt" : 0,
"name" : "test 문제세트",
"description" : "테스트용 문제세트"
} ]
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 세트 ID |
|
|
문제 세트에 포함된 문제 수 |
|
|
문제 세트 이름 |
|
|
문제 세트 설명 |
문제 세트 단건 조회
문제 세트 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problem-sets/{problemSetId}
GET /api/v1/problem-sets/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 676
{
"status" : "success",
"data" : {
"id" : 1,
"problems" : [ {
"id" : 1,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "long"
}, {
"id" : 2,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "multiple"
}, {
"id" : 3,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "short"
} ],
"name" : "test 문제세트",
"description" : "테스트용 문제세트"
}
}
{
"status" : "success",
"data" : {
"id" : 1,
"problems" : [ {
"id" : 1,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "long"
}, {
"id" : 2,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "multiple"
}, {
"id" : 3,
"title" : "test 문제",
"tags" : [ "DS", "Network" ],
"avgScore" : 10.0,
"totalSubmission" : 100,
"type" : "short"
} ],
"name" : "test 문제세트",
"description" : "테스트용 문제세트"
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 세트 ID |
|
|
문제 세트 이름 |
|
|
문제 세트 설명 |
|
|
문제 세트에 포함된 문제 |
|
|
문제 ID |
|
|
문제 이름 |
|
|
문제 태그 |
|
|
문제 평균 점수 |
|
|
문제 제출 수 |
|
|
문제 타입 |
게시판 API
글 작성 API ( /api/v1/posts )
글을 생성하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/posts
POST /api/v1/posts HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Content-Length: 46
Host: localhost:8080
{
"problemId" : 1,
"content" : "content"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 40
{
"status" : "success",
"data" : 1
}
{
"problemId" : 1,
"content" : "content"
}
Path | Type | Description |
---|---|---|
|
|
문제 ID |
|
|
글 내용 |
{
"status" : "success",
"data" : 1
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
글 ID |
글 조회 API ( /api/v1/problems/{problemId}/posts )
글을 조회하기 위한 API입니다.
HTTP Method : GET
End-Point : /api/v1/problems/{problemId}/posts
GET /api/v1/problems/1/posts HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Host: localhost:8080
Parameter | Description |
---|---|
|
문제 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 469
{
"status" : "success",
"data" : [ {
"id" : 1,
"content" : "CONTENT",
"username" : "USER",
"userId" : "27d2ff5d-ae2e-4f58-8d04-c41200ea125e",
"likeCount" : 1,
"isLiked" : true,
"comments" : [ {
"id" : 1,
"content" : "CONTENT",
"username" : "USER",
"userId" : "28447e14-4ff4-472f-b453-7c5a360f4a90",
"likeCount" : 1,
"isLiked" : true,
"createdAt" : "2024-01-21T14:25:20.734604063"
} ]
} ]
}
{
"status" : "success",
"data" : [ {
"id" : 1,
"content" : "CONTENT",
"username" : "USER",
"userId" : "27d2ff5d-ae2e-4f58-8d04-c41200ea125e",
"likeCount" : 1,
"isLiked" : true,
"comments" : [ {
"id" : 1,
"content" : "CONTENT",
"username" : "USER",
"userId" : "28447e14-4ff4-472f-b453-7c5a360f4a90",
"likeCount" : 1,
"isLiked" : true,
"createdAt" : "2024-01-21T14:25:20.734604063"
} ]
} ]
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
글 ID |
|
|
글 내용 |
|
|
작성자 |
|
|
작성자 ID |
|
|
좋아요 수 |
|
|
좋아요 여부 |
|
|
댓글 ID |
|
|
댓글 내용 |
|
|
댓글 작성자 |
|
|
댓글 작성자 ID |
|
|
좋아요 수 |
|
|
좋아요 여부 |
|
|
댓글 생성일시 |
글 삭제 API ( /api/v1/posts/{postId} )
글을 삭제하기 위한 API입니다.
HTTP Method : DELETE
End-Point : /api/v1/posts/{postId}
DELETE /api/v1/posts/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Host: localhost:8080
Parameter | Description |
---|---|
|
글 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 26
{
"status" : "success"
}
{
"status" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
글 좋아요 API ( /api/v1/posts/{postId}/like )
글을 좋아요하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/posts/{postId}/like
POST /api/v1/posts/1/like HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Host: localhost:8080
Parameter | Description |
---|---|
|
글 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 26
{
"status" : "success"
}
{
"status" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
댓글 작성 API ( /api/v1/comments )
댓글을 생성하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/v1/comments
POST /api/v1/comments HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Content-Length: 43
Host: localhost:8080
{
"postId" : 1,
"content" : "content"
}
Unresolved directive in index.adoc - include::./build/generated-snippets/posts/comments/create/path-parameters.adoc[]
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 40
{
"status" : "success",
"data" : 1
}
{
"postId" : 1,
"content" : "content"
}
Path | Type | Description |
---|---|---|
|
|
글 id |
|
|
댓글 내용 |
{
"status" : "success",
"data" : 1
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
댓글 ID |
댓글 삭제 API ( /api/v1/comments/{commentId} )
댓글을 삭제하기 위한 API입니다.
HTTP Method : DELETE
End-Point : /api/v1/comments/{commentId}
DELETE /api/v1/comments/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Host: localhost:8080
Parameter | Description |
---|---|
|
댓글 id |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 26
{
"status" : "success"
}
{
"status" : "success"
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
Back-Office APIs
백오피스에서 사용되는 API입니다.
이 API들의 호출을 위해서는 필수적으로 ADMIN 권한이 필요합니다.
각 설명에서는 생략하겠지만, 항상 ADMIN 권한을 가진 Access Token을 Authorization Header에 포함해야합니다.
Long Problem API ( /api/admin/problems/long )
서술형 문제 생성
서술형 문제를 생성하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/problems/long
POST /api/admin/problems/long HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 135
Host: localhost:8080
{
"title" : "test",
"description" : "test",
"standardAnswers" : [ "test" ],
"tags" : [ "db", "network" ],
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test",
"description" : "test",
"standardAnswers" : [ "test" ],
"tags" : [ "db", "network" ],
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
모범 답안 |
|
|
태그 |
|
|
활성화 여부 ( 필수 x, 기본 값 true ) |
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
서술형 문제 단건 조회
단답형 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/long/{problem_id:Long}
GET /api/admin/problems/long/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 209
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "title",
"description" : "description",
"standardAnswers" : [ "answer" ],
"tags" : [ "tag1", "tag2" ],
"isActive" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "title",
"description" : "description",
"standardAnswers" : [ "answer" ],
"tags" : [ "tag1", "tag2" ],
"isActive" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
모범 답안 |
|
|
태그 |
|
|
활성화 여부 |
서술형 문제 검색
서술형 문제 검색을 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/long
Req Params : id, title, description page, size
GET /api/admin/problems/long?title=title&description=description&size=10&page=0 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 303
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"avgKeywordScore" : 1.0,
"avgContentScore" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
문제 검색을 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/admin/problems/long/search/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"avgKeywordScore" : 1.0,
"avgContentScore" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 데이터 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 제작자 닉네임 |
|
|
평균 키워드 점수 ( 푼 사람이 없으면 null ) |
|
|
평균 내용 점수 ( 푼 사람이 없으면 null ) |
|
|
제출된 답안 수 |
|
|
활성화 여부 |
|
|
총 페이지 수 |
|
|
검색된 총 문제수 |
서술형 문제 수정
서술형 문제 수정를 위한 API입니다.
HTTP Method : PUT
End-Point : /api/admin/problems/long/{problem_id:Long}
PUT /api/admin/problems/long/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 135
Host: localhost:8080
{
"title" : "test",
"description" : "test",
"standardAnswers" : [ "test" ],
"tags" : [ "db", "network" ],
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test",
"description" : "test",
"standardAnswers" : [ "test" ],
"tags" : [ "db", "network" ],
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
모범 답안 |
|
|
태그 |
|
|
활성화 여부 |
Parameter | Description |
---|---|
|
문제 id |
문제 수정을 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
Multiple Choice Problem API ( /api/admin/problems/multiple )
객관식 문제 생성
객관식 문제를 생성하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/problems/multiple
POST /api/admin/problems/multiple HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 274
Host: localhost:8080
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"choices" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"choices" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
선지 |
|
|
선지 내용 |
|
|
선지 정답 여부 |
|
|
채점기준 점수 |
|
|
채점 가능 여부 ( 필수 x, 기본 값 true ) |
|
|
활성화 여부 ( 필수 x, 기본 값 true ) |
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
객관식 문제 단건 조회
객관식 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/multiple/{problem_id:Long}
GET /api/admin/problems/multiple/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 383
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"isMultiple" : true,
"choiceData" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isActive" : true,
"isGradable" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"isMultiple" : true,
"choiceData" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isActive" : true,
"isGradable" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
다중 정답 유무 |
|
|
선지 데이터 |
|
|
선지 내용 |
|
|
선지 정답 여부 |
|
|
문제 점수 |
|
|
채점 가능 여부 |
|
|
활성화 여부 |
객관식 문제 검색
객관식 문제 검색을 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/multiple
Req Params : id, title, description page, size
GET /api/admin/problems/multiple?title=test&description=t&size=5&page=1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 267
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"answerRate" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
문제 검색을 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/admin/problems/multiple/search/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"answerRate" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 데이터 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 제작자 닉네임 |
|
|
정답률 ( 푼 사람이 없으면 null ) |
|
|
제출된 답안 수 |
|
|
활성화 여부 |
|
|
총 페이지 수 |
|
|
검색된 총 문제수 |
객관식 문제 수정
객관식 문제 수정를 위한 API입니다.
HTTP Method : PUT
End-Point : /api/admin/problems/multiple/{problem_id:Long}
PUT /api/admin/problems/multiple/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 274
Host: localhost:8080
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"choices" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"choices" : [ {
"content" : "choice-1",
"isAnswer" : true
}, {
"content" : "choice-2",
"isAnswer" : false
} ],
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
선지 |
|
|
선지 내용 |
|
|
선지 정답 여부 |
|
|
채점기준 점수 |
|
|
채점 가능 여부 |
|
|
활성화 여부 |
Parameter | Description |
---|---|
|
문제 id |
문제 수정을 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
Short Problem API ( /api/admin/problems/short)
단답형 문제 생성
단답형 문제를 생성하기 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/problems/short
POST /api/admin/problems/short HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 162
Host: localhost:8080
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
정답 |
|
|
채점기준 점수 |
|
|
채점 가능 여부 ( 필수 x, 기본 값 true ) |
|
|
활성화 여부 ( 필수 x, 기본 값 true ) |
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
단답형 문제 단건 조회
단답형 문제 단건 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/short/{problem_id:Long}
GET /api/admin/problems/short/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 231
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isActive" : true,
"isGradable" : true
}
}
Parameter | Description |
---|---|
|
문제 id |
문제 단건 조회를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1,
"title" : "test",
"description" : "test",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isActive" : true,
"isGradable" : true
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
문제 정답 |
|
|
문제 점수 |
|
|
채점 가능 여부 |
|
|
활성화 여부 |
단답형 문제 검색
단답형 문제 검색을 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/problems/short
Req Params : id, title, description page, size
GET /api/admin/problems/short?title=test&description=t&size=5&page=1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 267
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"answerRate" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
문제 검색을 위한 request parameter의 설명입니다. Unresolved directive in index.adoc - include::./build/generated-snippets/admin/problems/short/search/request-parameters.adoc[]
{
"status" : "success",
"data" : {
"problems" : [ {
"id" : 1,
"title" : "title",
"creator" : "creator",
"answerRate" : 1.0,
"userAnswerCnt" : 1,
"isActive" : true
} ],
"totalPages" : 1,
"totalElements" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 데이터 |
|
|
문제 id |
|
|
문제 제목 |
|
|
문제 제작자 닉네임 |
|
|
정답률 ( 푼 사람이 없으면 null ) |
|
|
제출된 답안 수 |
|
|
활성화 여부 |
|
|
총 페이지 수 |
|
|
검색된 총 문제수 |
단답형 문제 수정
단답형 문제 수정를 위한 API입니다.
HTTP Method : PUT
End-Point : /api/admin/problems/short/{problem_id:Long}
PUT /api/admin/problems/short/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 164
Host: localhost:8080
{
"title" : "test1",
"description" : "test1",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"title" : "test1",
"description" : "test1",
"tags" : [ "db", "network" ],
"answer" : "test",
"score" : 5.0,
"isGradable" : true,
"isActive" : true
}
Path | Type | Description |
---|---|---|
|
|
문제 제목 |
|
|
문제 설명 |
|
|
태그 |
|
|
문제 정답 |
|
|
문제 점수 |
|
|
채점 가능 여부 |
|
|
활성화 여부 |
Parameter | Description |
---|---|
|
문제 id |
문제 수정을 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 ID |
Problem Delete API ( /api/admin/problems )
문제 단건 삭제
문제 삭제를 위한 API입니다.
HTTP Method : DELETE
End-Point : /api/admin/problems/{problem_id:Long}
DELETE /api/admin/problems/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43
{
"status" : "success",
"data" : true
}
Parameter | Description |
---|---|
|
문제 id |
문제 삭제를 위한 path parameter의 설명입니다.
{
"status" : "success",
"data" : true
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
성공 유무 ( 삭제 성공시 true를 return ) |
문제 다중 삭제
여러 개의 문제 삭제를 위한 API입니다.
HTTP Method : DELETE
End-Point : /api/admin/problems
DELETE /api/admin/problems HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 25
Host: localhost:8080
{
"ids" : [ 1, 2, 3 ]
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 43
{
"status" : "success",
"data" : true
}
{
"ids" : [ 1, 2, 3 ]
}
Path | Type | Description |
---|---|---|
|
|
삭제 할 문제 id 리스트 |
{
"status" : "success",
"data" : true
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
성공 유무 ( 삭제 성공시 true를 return ) |
User API ( /api/admin/users )
ADMIN 유저 조회
ADMIN 유저 조회를 위한 API입니다.
HTTP Method : GET
End-Point : /api/admin/users/admin
GET /api/admin/users/admin HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Host: localhost:8080
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 124
{
"status" : "success",
"data" : [ {
"id" : "8afd1194-86c3-4656-a0d8-21f32cfaff82",
"username" : "email"
} ]
}
{
"status" : "success",
"data" : [ {
"id" : "8afd1194-86c3-4656-a0d8-21f32cfaff82",
"username" : "email"
} ]
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
ADMIN 유저 정보 |
|
|
유저 ID |
|
|
유저 닉네임 |
Notification API ( /api/admin/notification )
Notification 생성
Notification 단일 생성을 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/notification
POST /api/admin/notification HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 110
Host: localhost:8080
{
"content" : "알림이 왓어요",
"userId" : "caa7b6e2-1e1e-40ce-b9bc-f3a237de948d",
"link" : "url"
}
{
"content" : "알림이 왓어요",
"userId" : "caa7b6e2-1e1e-40ce-b9bc-f3a237de948d",
"link" : "url"
}
Path | Type | Description |
---|---|---|
|
|
알림 내용 |
|
|
유저 아이디 ( UUID ) |
|
|
알림에 해당하는 링크 |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 57
{
"status" : "success",
"data" : {
"id" : 1
}
}
{
"status" : "success",
"data" : {
"id" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
알림 ID |
Notification 다중 생성
Notification 다중 생성을 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/notifications
POST /api/admin/notifications HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 140
Host: localhost:8080
{
"content" : [ {
"content" : "알림이 왔어요",
"userId" : "a0fbb1e1-99b0-4fc9-929c-e2c3f6cebb2d",
"link" : "url"
} ]
}
{
"content" : [ {
"content" : "알림이 왔어요",
"userId" : "a0fbb1e1-99b0-4fc9-929c-e2c3f6cebb2d",
"link" : "url"
} ]
}
Path | Type | Description |
---|---|---|
|
|
알림 데이터 |
|
|
알림 내용 |
|
|
유저 아이디 ( UUID ) |
|
|
알림에 해당하는 링크 |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 59
{
"status" : "success",
"data" : {
"size" : 1
}
}
{
"status" : "success",
"data" : {
"size" : 1
}
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
생성 된 알림 개수 |
Notification 삭제
Notification 삭제를 위한 API입니다.
단일 삭제는 List에 ID 한 개만 넣어서 요청하시면 됩니다.
HTTP Method : DELETE
End-Point : /api/admin/notification
Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/http-request.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/request-body.adoc[] Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/request-fields.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/http-response.adoc[]
Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/response-body.adoc[] Unresolved directive in index.adoc - include::./build/generated-snippets/admin/notifications/delete/response-fields.adoc[]
문제 세트 API ( /api/admin/problem-sets )
문제 세트 생성
문제 세트 생성을 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/problem-sets
POST /api/admin/problem-sets HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 81
Host: localhost:8080
{
"problemIds" : [ 1, 2 ],
"name" : "name",
"description" : "description"
}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 40
{
"status" : "success",
"data" : 1
}
{
"problemIds" : [ 1, 2 ],
"name" : "name",
"description" : "description"
}
Path | Type | Description |
---|---|---|
|
|
문제 ID 목록 |
|
|
문제 세트 이름 |
|
|
문제 세트 설명 |
{
"status" : "success",
"data" : 1
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 세트 ID |
문제 세트 수정
문제 세트 수정을 위한 API입니다.
HTTP Method : POST
End-Point : /api/admin/problem-sets/{problem_set_id}
PUT /api/admin/problem-sets/1 HTTP/1.1
Content-Type: application/json
Content-Type: application/json
Accept: application/json
Authorization: Bearer TEST-TOKEN
Content-Length: 81
Host: localhost:8080
{
"problemIds" : [ 1, 2 ],
"name" : "name",
"description" : "description"
}
Parameter | Description |
---|---|
|
문제 세트 id |
문제 세트 단건 조회을 위한 path parameter의 설명입니다.
{
"problemIds" : [ 1, 2 ],
"name" : "name",
"description" : "description"
}
Path | Type | Description |
---|---|---|
|
|
문제 ID 목록 |
|
|
문제 세트 이름 |
|
|
문제 세트 설명 |
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 40
{
"status" : "success",
"data" : 1
}
{
"status" : "success",
"data" : 1
}
Path | Type | Description |
---|---|---|
|
|
결과 상태 |
|
|
문제 세트 ID |