커스텀 예외 코드

Code Message

1000

요청 형식이 올바르지 않습니다.

1001

해당 연도의 행사 기간이 이미 존재합니다.

1002

올해의 이벤트 기간이 존재하지 않습니다.

1003

이벤트 시작 일시 혹은 종료 일시가 올해를 벗어났습니다.

2001

소셜 로그인 공급자로부터 유저 정보를 받아올 수 없습니다.

2002

소셜 로그인 공급자로부터 인증 토큰을 받아올 수 없습니다.

3000

접근할 수 없는 리소스입니다.

3001

유효하지 않은 Refresh Token 입니다.

3002

토큰 검증에 실패했습니다.

3003

유효하지 않은 Access Token 입니다.

13000

Notion 데이터를 가져오는데 실패했습니다.

4000

유저 id 를 찾을 수 없습니다.

4001

회원가입이 필요합니다.

4002

유저 권한이 존재하지 않습니다.

4003

학과가 존재하지 않습니다.

4004

학과/학번 정보가 존재하지 않습니다.

4005

회원 가입 이용이 불가능한 회원 유형입니다.

4010

ID에 해당하는 인증 신청 정보가 존재하지 않습니다.

4011

이미 인증 된 회원입니다.

4100

회원 유형은 수정할 수 없습니다.

4101

소속 또는 직책의 형식이 잘못되었습니다.

77000

프로젝트를 찾을 수 없습니다.

77001

프로젝트 썸네일을 찾을 수 없습니다

77002

프로젝트 포스터를 찾을 수 없습니다

77003

멤버 정보가 올바르지 않습니다.

77004

기술 스택 정보가 올바르지 않습니다.

77005

관심 표시한 프로젝트가 이미 존재합니다

77007

관심 표시한 프로젝트를 찾을 수 없습니다.

77008

이미 좋아요 한 프로젝트입니다.

77009

좋아요 표시한 프로젝트가 존재하지 않습니다

77010

댓글을 찾을 수 없습니다

77011

유저 정보가 일치하지 않습니다

78000

엑셀 행의 개수와 업로드한 이미지의 개수가 일치해야합니다.

78001

썸네일 이미지 이름을 찾을 수 없습니다.

78002

포스터 이미지 이름을 찾을 수 없습니다.

78003

수상 내역의 한글 이름이 올바르지 않습니다.

78004

프로젝트 종류의 한글 이름이 올바르지 않습니다.

78005

프로젝트 분야의 한글 이름이 올바르지 않습니다.

78006

모든 셀은 값이 있어야 합니다.

78007

엑셀 형식이 올바르지 않습니다.

78008

중복된 썸네일 이미지 이름이 존재합니다.

78009

중복된 포스터 이미지 이름이 존재합니다.

780010

프로젝트 년도는 숫자만 입력해야 합니다.

780011

엑셀 파일을 열 수 없습니다.

5000

파일 업로드를 실패했습니다.

5001

파일 가져오기를 실패했습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5002

요청한 ID에 해당하는 파일이 존재하지 않습니다.

5004

파일을 찾을 수 없습니다.

10000

요청한 ID에 해당하는 공지사항이 존재하지 않습니다.

11000

요청한 ID에 해당하는 이벤트가 존재하지 않습니다.

8000

요청한 ID에 해당하는 문의가 존재하지 않습니다.

8001

요청한 ID에 해당하는 문의 답변이 존재하지 않습니다.

8002

이미 답변이 등록된 문의입니다.

8003

해당 문의에 대한 권한이 없습니다.

8200

해당 ID에 해당하는 잡페어 인터뷰가 없습니다.

8400

해당 ID에 해당하는 대담 영상이 없습니다.

8401

퀴즈 데이터가 존재하지 않습니다.

8402

퀴즈 제출 데이터가 존재하지 않습니다.

8601

이미 퀴즈의 정답을 모두 맞추었습니다.

8801

이미 관심 리스트에 추가되었습니다.

8802

이미 관심 리스트에 추가되어 있지 않습니다.

8804

퀴즈 이벤트 참여 기간이 아닙니다.

8805

대담 영상과 현재 이벤트 참여 연도가 일치하지 않습니다.

8901

퀴즈 최대 시도 횟수를 초과하였습니다.

71001

엑셀 파일이 주어진 클래스와 호환되지 않습니다.

9001

요청한 ID에 해당하는 갤러리가 존재하지 않습니다.

6000

요청한 ID에 해당하는 과제제안이 존재하지 않습니다.

6001

요청한 ID에 해당하는 과제제안 답변이 존재하지 않습니다.

인증 API


카카오 소셜 로그인 (POST /auth/login/kakao/)

HTTP request

GET /auth/login/kakao?code=codefromkakaologin HTTP/1.1
Host: localhost:8080

Query parameters

Parameter Required Description

code

true

카카오 인가코드

HTTP response

HTTP/1.1 302 Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: refresh-token=refresh_token; Path=/; Max-Age=604800; Expires=Thu, 5 Dec 2024 10:49:18 GMT; Secure; HttpOnly; SameSite=None
Set-Cookie: access-token=access_token; Path=/; Max-Age=604800; Expires=Thu, 5 Dec 2024 10:49:18 GMT; Secure; SameSite=None
Location: https://localhost:3000/login/kakao

Response fields

Snippet response-fields not found for operation::auth-controller-test/kakao-social-login

회원가입 (POST /auth/register)

HTTP request

POST /auth/register HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Content-Length: 289
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "name" : "stop-user",
  "phoneNumber" : "010-1234-1234",
  "userType" : "STUDENT",
  "email" : "email@gmail.com",
  "signUpSource" : "ad",
  "studentInfo" : {
    "department" : "소프트웨어학과",
    "studentNumber" : "2021123123"
  },
  "division" : null,
  "position" : null
}

Request cookies

Name Description

refresh-token

갱신 토큰

Request headers

Name Description

Authorization

access token

Request fields

Name Type Required Description

name

String

true

유저 이름

phoneNumber

String

true

전화 번호

userType

String

true

회원 유형

email

String

true

이메일

signUpSource

String

false

가입 경로

studentInfo.department

String

true

학과

studentInfo.studentNumber

String

true

학번

division

String

false

소속

position

String

false

직책

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 86

{
  "name" : "stop-user",
  "email" : "email@email.com",
  "phone" : "010-1234-1234"
}

Response fields

Name Type Required Description

name

String

true

이름

email

String

true

이메일

phone

String

true

전화번호

Access Token 재발급 (POST /auth/reissue)

HTTP request

POST /auth/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 45

{
  "accessToken" : "reissued_access_token"
}

로그아웃 (POST /auth/logout)

HTTP request

POST /auth/logout HTTP/1.1
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token
Content-Type: application/x-www-form-urlencoded

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

파일 API


다중 파일 업로드 (POST /files)

HTTP request

POST /files HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=첨부파일1.png
Content-Type: image/png

[BINARY DATA - PNG IMAGE CONTENT]
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=첨부파일2.pdf
Content-Type: application/pdf

[BINARY DATA - PDF CONTENT]
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request parts

Part Description

files

업로드할 파일 리스트

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 446

[ {
  "id" : 1,
  "uuid" : "8cedc1bd-ce93-42f9-a8dc-2ab77db48c2b",
  "name" : "첨부파일1.png",
  "mimeType" : "image/png",
  "createdAt" : "2024-11-28T19:49:19.746397",
  "updatedAt" : "2024-11-28T19:49:19.746401"
}, {
  "id" : 2,
  "uuid" : "b5733f48-f03b-401a-87e2-0e13a474bb12",
  "name" : "첨부파일2.pdf",
  "mimeType" : "application/pdf",
  "createdAt" : "2024-11-28T19:49:19.746425",
  "updatedAt" : "2024-11-28T19:49:19.746427"
} ]

Response fields

Name Type Required Description

[].id

Number

true

파일 ID

[].uuid

String

true

파일 UUID

[].name

String

true

파일 이름

[].mimeType

String

true

파일의 MIME 타입

[].createdAt

String

true

파일 생성일

[].updatedAt

String

true

파일 수정일

파일 조회 (GET /files/{fileId})

HTTP request

GET /files/1 HTTP/1.1
Host: localhost:8080

Path parameters

Table 1. /files/{fileId}
Parameter Description

fileId

파일 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: image/png;charset=UTF-8
Content-Length: 33

[BINARY DATA - PNG IMAGE CONTENT]

프로젝트 일괄 등록 양식 다운로드 (GET /files/form/projects)

HTTP request

GET /files/form/projects HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Disposition: form-data; name="attachment"; filename="project_upload_form.xlsx"
Content-Type: application/octet-stream;charset=UTF-8
Content-Length: 19

project_upload_form

유저 API


로그인 유저 기본 정보 조회 (GET /users/me)

HTTP request

GET /users/me HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 323

{
  "id" : 1,
  "name" : "이름",
  "phone" : "010-1234-5678",
  "email" : "student@g.skku.edu",
  "userType" : "STUDENT",
  "division" : null,
  "position" : null,
  "studentNumber" : "2000123456",
  "departmentName" : "학과",
  "createdAt" : "2024-11-28T19:49:21.977643",
  "updatedAt" : "2024-11-28T19:49:21.977644"
}

Response fields

Name Type Required Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

로그인 유저 기본 정보 수정 (PUT /users/me)

HTTP request

PUT /users/me HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: user_access_token
Content-Length: 195
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "name" : "이름",
  "phoneNumber" : "010-1234-5678",
  "email" : "student@g.skku.edu",
  "division" : null,
  "position" : null,
  "studentNumber" : "2000123456",
  "department" : "학과"
}

Request fields

Name Type Required Description

name

String

true

이름

phoneNumber

String

true

전화번호

email

String

true

이메일

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

department

String

false

학과

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 323

{
  "id" : 1,
  "name" : "이름",
  "phone" : "010-1234-5678",
  "email" : "student@g.skku.edu",
  "userType" : "STUDENT",
  "division" : null,
  "position" : null,
  "studentNumber" : "2000123456",
  "departmentName" : "학과",
  "createdAt" : "2024-11-28T19:49:22.000494",
  "updatedAt" : "2024-11-28T19:49:22.000495"
}

Response fields

Name Type Required Description

id

Number

true

사용자 ID

name

String

true

사용자 이름

phone

String

true

사용자 전화번호

email

String

true

사용자 이메일

userType

String

true

사용자 유형

division

String

false

소속

position

String

false

직책

studentNumber

String

false

학번

departmentName

String

false

학과 이름

createdAt

String

true

생성일

updatedAt

String

true

수정일

유저 탈퇴 (DELETE /users/me)

HTTP request

DELETE /users/me HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

유저 관심 프로젝트 리스트 조회 (GET /users/favorites/projects)

HTTP request

GET /users/favorites/projects HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 1204

[ {
  "id" : 1,
  "thumbnailInfo" : {
    "id" : 1,
    "uuid" : "썸네일 uuid 1",
    "name" : "썸네일 파일 이름 1",
    "mimeType" : "썸네일 mime 타입 1"
  },
  "projectName" : "프로젝트 이름 1",
  "teamName" : "팀 이름 1",
  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
  "professorNames" : [ "교수 이름 1" ],
  "projectType" : "STARTUP",
  "projectCategory" : "BIG_DATA_ANALYSIS",
  "awardStatus" : "FIRST",
  "year" : 2023,
  "likeCount" : 100,
  "like" : false,
  "bookMark" : false,
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}, {
  "id" : 2,
  "thumbnailInfo" : {
    "id" : 2,
    "uuid" : "썸네일 uuid 2",
    "name" : "썸네일 파일 이름 2",
    "mimeType" : "썸네일 mime 타입 2"
  },
  "projectName" : "프로젝트 이름 2",
  "teamName" : "팀 이름 2",
  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
  "professorNames" : [ "교수 이름 2" ],
  "projectType" : "LAB",
  "projectCategory" : "AI_MACHINE_LEARNING",
  "awardStatus" : "SECOND",
  "year" : 2023,
  "likeCount" : 100,
  "like" : false,
  "bookMark" : true,
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
} ]

Response fields

Name Type Required Description

[].id

Number

true

프로젝트 ID

[].thumbnailInfo

Object

true

썸네일 정보

[].thumbnailInfo.id

Number

true

썸네일 ID

[].thumbnailInfo.uuid

String

true

썸네일 UUID

[].thumbnailInfo.name

String

true

썸네일 파일 이름

[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

[].projectName

String

true

프로젝트 이름

[].teamName

String

true

팀 이름

[].studentNames[]

Array

true

학생 이름

[].professorNames[]

Array

true

교수 이름

[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

[].year

Number

true

프로젝트 년도

[].likeCount

Number

true

좋아요 수

[].like

Boolean

true

좋아요 여부

[].bookMark

Boolean

true

북마크 여부

[].url

String

true

프로젝트 URL

[].description

String

true

프로젝트 설명

유저 관심 대담영상 리스트 조회 (GET /users/favorites/talks)

HTTP request

GET /users/favorites/talks HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 982

[ {
  "id" : 1,
  "title" : "제목1",
  "youtubeId" : "유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "대담자 소속1",
  "talkerName" : "대담자 성명1",
  "favorite" : true,
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ],
  "createdAt" : "2024-11-28T19:49:21.961699",
  "updatedAt" : "2024-11-28T19:49:21.9617"
}, {
  "id" : 2,
  "title" : "제목2",
  "youtubeId" : "유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "대담자 소속2",
  "talkerName" : "대담자 성명2",
  "favorite" : true,
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ],
  "createdAt" : "2024-11-28T19:49:21.961706",
  "updatedAt" : "2024-11-28T19:49:21.961707"
} ]

Response fields

Name Type Required Description

[].id

Number

true

대담 영상 ID

[].title

String

true

대담 영상 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

대담 영상 연도

[].talkerBelonging

String

true

대담자의 소속된 직장/단체

[].talkerName

String

true

대담자의 성명

[].favorite

Boolean

true

관심한 대담영상의 여부

[].quiz

Array

false

퀴즈 데이터, 없는경우 null

[].quiz[].question

String

false

퀴즈 1개의 질문

[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

[].createdAt

String

true

대담 영상 생성일

[].updatedAt

String

true

대담 영상 수정일

유저 관심 잡페어인터뷰영상 리스트 조회 (GET /users/favorites/jobInterviews)

HTTP request

GET /users/favorites/jobInterviews HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 690

[ {
  "id" : 1,
  "title" : "잡페어 인터뷰의 제목1",
  "youtubeId" : "유튜브 고유 ID1",
  "year" : 2023,
  "talkerBelonging" : "대담자의 소속1",
  "talkerName" : "대담자의 성명1",
  "favorite" : false,
  "category" : "INTERN",
  "createdAt" : "2024-11-28T19:49:21.953649",
  "updatedAt" : "2024-11-28T19:49:21.95365"
}, {
  "id" : 2,
  "title" : "잡페어 인터뷰의 제목2",
  "youtubeId" : "유튜브 고유 ID2",
  "year" : 2024,
  "talkerBelonging" : "대담자의 소속2",
  "talkerName" : "대담자의 성명2",
  "favorite" : true,
  "category" : "INTERN",
  "createdAt" : "2024-11-28T19:49:21.953664",
  "updatedAt" : "2024-11-28T19:49:21.953665"
} ]

Response fields

Name Type Required Description

[].id

Number

true

잡페어 인터뷰 ID

[].title

String

true

잡페어 인터뷰 제목

[].youtubeId

String

true

유튜브 영상의 고유 ID

[].year

Number

true

잡페어 인터뷰 연도

[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

[].createdAt

String

true

잡페어 인터뷰 생성일

[].updatedAt

String

true

잡페어 인터뷰 수정일

유저 문의 리스트 조회 (GET /users/inquiries)

HTTP request

GET /users/inquiries HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 257

[ {
  "id" : 1,
  "title" : "Title 1",
  "projectId" : 1,
  "createdDate" : "2024-11-28T19:49:21.971752",
  "hasReply" : true
}, {
  "id" : 2,
  "title" : "Title 2",
  "projectId" : 2,
  "createdDate" : "2024-11-28T19:49:21.971758",
  "hasReply" : false
} ]

Response fields

Name Type Required Description

[].id

Number

true

문의 ID

[].title

String

true

문의 제목

[].projectId

Number

true

프로젝트 ID

[].createdDate

String

true

문의 생성일

[].hasReply

Boolean

true

답변 여부

유저 과제 제안 리스트 조회 (GET /users/proposals)

HTTP request

GET /users/proposals HTTP/1.1
Authorization: user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 219

[ {
  "id" : 1,
  "title" : "Title 1",
  "createdDate" : "2024-11-28T19:49:21.983617",
  "hasReply" : true
}, {
  "id" : 2,
  "title" : "Title 2",
  "createdDate" : "2024-11-28T19:49:21.983623",
  "hasReply" : false
} ]

Response fields

Name Type Required Description

[].id

Number

true

과제 제안 ID

[].title

String

true

프로젝트명

[].createdDate

String

true

과제 제안 생성일

[].hasReply

Boolean

true

답변 여부

학과 API


학과 리스트 조회 (GET /departments)

HTTP request

GET /departments HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 92

[ {
  "id" : 1,
  "name" : "소프트웨어학과"
}, {
  "id" : 2,
  "name" : "학과2"
} ]

Response fields

Name Type Required Description

[].id

Number

true

학과 ID

[].name

String

true

학과 이름

가입 신청 관리 API


가입 신청 리스트 조회 (GET /applications)

HTTP request

GET /applications HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 1178

{
  "totalPages" : 1,
  "totalElements" : 3,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "name" : "김영한",
    "division" : "배민",
    "position" : null,
    "userType" : "INACTIVE_COMPANY",
    "createdAt" : "2024-11-28T19:49:21.620883",
    "updatedAt" : "2024-11-28T19:49:21.620885"
  }, {
    "id" : 2,
    "name" : "김교수",
    "division" : "솦융대",
    "position" : "교수",
    "userType" : "INACTIVE_PROFESSOR",
    "createdAt" : "2024-11-28T19:49:21.620894",
    "updatedAt" : "2024-11-28T19:49:21.620895"
  }, {
    "id" : 3,
    "name" : "박교수",
    "division" : "정통대",
    "position" : "교수",
    "userType" : "INACTIVE_PROFESSOR",
    "createdAt" : "2024-11-28T19:49:21.620897",
    "updatedAt" : "2024-11-28T19:49:21.620897"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 3,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

가입 신청 ID

content[].name

String

true

가입 신청자 이름

content[].division

String

false

소속

content[].position

String

false

직책

content[].userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

content[].createdAt

String

true

가입 신청 정보 생성일

content[].updatedAt

String

true

가입 신청 정보 수정일

가입 신청자 상세 정보 조회 (GET /applications/{applicationId})

HTTP request

GET /applications/1 HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /applications/{applicationId}
Parameter Description

applicationId

가입 신청 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 272

{
  "id" : 1,
  "name" : "김영한",
  "phone" : "010-1111-2222",
  "email" : "email@gmail.com",
  "division" : "배민",
  "position" : "CEO",
  "userType" : "INACTIVE_COMPANY",
  "createdAt" : "2024-11-28T19:49:21.643274",
  "updatedAt" : "2024-11-28T19:49:21.643275"
}

Response fields

Name Type Required Description

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [INACTIVE_PROFESSOR, INACTIVE_COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

교수/기업 가입 허가 (PATCH /applications/{applicationId})

HTTP request

PATCH /applications/1 HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /applications/{applicationId}
Parameter Description

applicationId

가입 신청 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 262

{
  "id" : 1,
  "name" : "김영한",
  "phone" : "010-1111-2222",
  "email" : "email@gmail.com",
  "division" : "배민",
  "position" : "CEO",
  "userType" : "COMPANY",
  "createdAt" : "2024-11-28T19:49:21.637588",
  "updatedAt" : "2024-11-28T19:49:21.63759"
}

Response fields

Name Type Required Description

id

Number

true

가입 신청 ID

name

String

true

가입 신청자 이름

phone

String

true

가입 신청자 전화번호

email

String

true

가입 신청자 이메일

division

String

false

소속

position

String

false

직책

userType

String

true

회원 유형 [PROFESSOR, COMPANY]

createdAt

String

true

가입 신청 정보 생성일

updatedAt

String

true

가입 신청 정보 수정일

교수/기업 가입 거절 (DELETE /applications/{applicationId})

HTTP request

DELETE /applications/1 HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /applications/{applicationId}
Parameter Description

applicationId

가입 신청 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

잡페어 인터뷰 API


잡페어 인터뷰 생성 (POST /jobInterviews)

HTTP request

POST /jobInterviews HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 213
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "잡페어 인터뷰의 제목",
  "youtubeId" : "유튜브 고유 ID",
  "year" : 2024,
  "talkerBelonging" : "대담자의 소속",
  "talkerName" : "대담자의 성명",
  "category" : "INTERN"
}

Request fields

Name Type Required Description

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 317

{
  "id" : 1,
  "title" : "잡페어 인터뷰의 제목",
  "youtubeId" : "유튜브 고유 ID",
  "year" : 2024,
  "talkerBelonging" : "대담자의 소속",
  "talkerName" : "대담자의 성명",
  "category" : "INTERN",
  "createdAt" : "2024-11-28T19:49:22.247595",
  "updatedAt" : "2024-11-28T19:49:22.247596"
}

Response fields

Name Type Required Description

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

잡페어 인터뷰 리스트 조회 (GET /jobInterviews)

HTTP request

GET /jobInterviews HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

year

false

찾고자 하는 잡페어 인터뷰 연도

category

false

찾고자 하는 잡페어 인터뷰 카테고리: SENIOR, INTERN

title

false

찾고자 하는 잡페어 인터뷰의 제목

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1206

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "title" : "잡페어 인터뷰의 제목1",
    "youtubeId" : "유튜브 고유 ID1",
    "year" : 2023,
    "talkerBelonging" : "대담자의 소속1",
    "talkerName" : "대담자의 성명1",
    "favorite" : false,
    "category" : "INTERN",
    "createdAt" : "2024-11-28T19:49:22.228935",
    "updatedAt" : "2024-11-28T19:49:22.228936"
  }, {
    "id" : 2,
    "title" : "잡페어 인터뷰의 제목2",
    "youtubeId" : "유튜브 고유 ID2",
    "year" : 2024,
    "talkerBelonging" : "대담자의 소속2",
    "talkerName" : "대담자의 성명2",
    "favorite" : true,
    "category" : "INTERN",
    "createdAt" : "2024-11-28T19:49:22.228941",
    "updatedAt" : "2024-11-28T19:49:22.228941"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

잡페어 인터뷰 ID

content[].title

String

true

잡페어 인터뷰 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

잡페어 인터뷰 연도

content[].talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

content[].talkerName

String

true

잡페어 인터뷰 대담자의 성명

content[].favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

content[].category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

content[].createdAt

String

true

잡페어 인터뷰 생성일

content[].updatedAt

String

true

잡페어 인터뷰 수정일

잡페어 인터뷰 단건 조회 (GET /jobInterviews/{jobInterviewId})

HTTP request

GET /jobInterviews/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /jobInterviews/{jobInterviewId}
Parameter Description

jobInterviewId

조회할 잡페어 인터뷰의 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 339

{
  "id" : 1,
  "title" : "잡페어 인터뷰의 제목",
  "youtubeId" : "유튜브 고유 ID",
  "year" : 2024,
  "talkerBelonging" : "대담자의 소속",
  "talkerName" : "대담자의 성명",
  "favorite" : false,
  "category" : "INTERN",
  "createdAt" : "2024-11-28T19:49:22.240617",
  "updatedAt" : "2024-11-28T19:49:22.240618"
}

Response fields

Name Type Required Description

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

favorite

Boolean

true

관심에 추가한 잡페어 인터뷰 여부

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

잡페어 인터뷰 수정 (PUT /jobInterviews/{jobInterviewId})

HTTP request

PUT /jobInterviews/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 217
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 제목",
  "youtubeId" : "수정된 유튜브 ID",
  "year" : 2024,
  "talkerBelonging" : "수정된 대담자 소속",
  "talkerName" : "수정된 대담자 성명",
  "category" : "INTERN"
}

Path parameters

Table 1. /jobInterviews/{jobInterviewId}
Parameter Description

jobInterviewId

수정할 잡페어 인터뷰의 ID

Request fields

Name Type Required Description

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 314

{
  "id" : 1,
  "title" : "수정된 제목",
  "youtubeId" : "수정된 유튜브 ID",
  "year" : 2024,
  "talkerBelonging" : "수정된 대담자 소속",
  "talkerName" : "수정된 대담자 성명",
  "category" : "INTERN",
  "createdAt" : "2021-01-01T12:00:00",
  "updatedAt" : "2024-11-28T19:49:22.208502"
}

Response fields

Name Type Required Description

id

Number

true

잡페어 인터뷰 ID

title

String

true

잡페어 인터뷰 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

잡페어 인터뷰 연도

talkerBelonging

String

true

잡페어 인터뷰 대담자의 소속

talkerName

String

true

잡페어 인터뷰 대담자의 성명

category

String

true

잡페어 인터뷰 카테고리: SENIOR, INTERN

createdAt

String

true

잡페어 인터뷰 생성일

updatedAt

String

true

잡페어 인터뷰 수정일

잡페어 인터뷰 삭제 (DELETE /jobInterviews/{jobInterviewId})

HTTP request

DELETE /jobInterviews/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /jobInterviews/{jobInterviewId}
Parameter Description

jobInterviewId

삭제할 잡페어 인터뷰의 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

잡페어 인터뷰 관심 등록 (POST /jobInterviews/{jobInterviews}/favorite)

HTTP request

POST /jobInterviews/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /jobInterviews/{jobInterviewId}/favorite
Parameter Description

jobInterviewId

관심 목록에 추가할 잡페어 인터뷰의 ID

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

잡페어 인터뷰 관심 삭제 (DELETE /jobInterviews/{jobInterviews}/favorite)

HTTP request

DELETE /jobInterviews/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /jobInterviews/{jobInterviewId}/favorite
Parameter Description

jobInterviewId

관심 목록에서 삭제할 잡페어 인터뷰의 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

대담 영상 API


대담 영상 생성 (POST /talks)

HTTP request

POST /talks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 361
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "제목",
  "youtubeId" : "유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "대담자 소속",
  "talkerName" : "대담자 성명",
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ]
}

Request fields

Name Type Required Description

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 465

{
  "id" : 1,
  "title" : "제목",
  "youtubeId" : "유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "대담자 소속",
  "talkerName" : "대담자 성명",
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ],
  "createdAt" : "2024-11-28T19:49:22.817542",
  "updatedAt" : "2024-11-28T19:49:22.817543"
}

Response fields

Name Type Required Description

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

대담 영상 리스트 조회 (GET /talks)

HTTP request

GET /talks HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

year

false

찾고자 하는 대담 영상의 연도

title

false

찾고자 하는 대담 영상의 제목 일부

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 999

{
  "totalPages" : 1,
  "totalElements" : 1,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "title" : "제목",
    "youtubeId" : "유튜브 고유ID",
    "year" : 2024,
    "talkerBelonging" : "대담자 소속",
    "talkerName" : "대담자 성명",
    "favorite" : true,
    "quiz" : [ {
      "question" : "질문1",
      "answer" : 0,
      "options" : [ "선지1", "선지2" ]
    }, {
      "question" : "질문2",
      "answer" : 0,
      "options" : [ "선지1", "선지2" ]
    } ],
    "createdAt" : "2024-11-28T19:49:22.824681",
    "updatedAt" : "2024-11-28T19:49:22.824682"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 1,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].id

Number

true

대담 영상 ID

content[].title

String

true

대담 영상 제목

content[].youtubeId

String

true

유튜브 영상의 고유 ID

content[].year

Number

true

대담 영상 연도

content[].talkerBelonging

String

true

대담자의 소속된 직장/단체

content[].talkerName

String

true

대담자의 성명

content[].favorite

Boolean

true

관심한 대담영상의 여부

content[].quiz

Array

false

퀴즈 데이터, 없는경우 null

content[].quiz[].question

String

false

퀴즈 1개의 질문

content[].quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

content[].quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

content[].createdAt

String

true

대담 영상 생성일

content[].updatedAt

String

true

대담 영상 수정일

대담 영상 단건 조회 (GET /talks/{talkId})

HTTP request

GET /talks/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /talks/{talkId}
Parameter Description

talkId

조회할 대담 영상의 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 486

{
  "id" : 1,
  "title" : "제목",
  "youtubeId" : "유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "대담자 소속",
  "talkerName" : "대담자 성명",
  "favorite" : true,
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ],
  "createdAt" : "2024-11-28T19:49:22.809931",
  "updatedAt" : "2024-11-28T19:49:22.809933"
}

Response fields

Name Type Required Description

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

favorite

Boolean

true

관심한 대담영상의 여부

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

대담 영상 수정 (PUT /talks/{talkId})

HTTP request

PUT /talks/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 461
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정한 제목",
  "youtubeId" : "수정한 유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "수정한 대담자 소속",
  "talkerName" : "수정한 대담자 성명",
  "quiz" : [ {
    "question" : "수정한 질문1",
    "answer" : 0,
    "options" : [ "수정한 선지1", "수정한 선지2" ]
  }, {
    "question" : "수정한 질문2",
    "answer" : 0,
    "options" : [ "수정한 선지1", "수정한 선지2" ]
  } ]
}

Path parameters

Table 1. /talks/{talkId}
Parameter Description

talkId

수정할 대담 영상의 ID

Request fields

Name Type Required Description

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 565

{
  "id" : 1,
  "title" : "수정한 제목",
  "youtubeId" : "수정한 유튜브 고유ID",
  "year" : 2024,
  "talkerBelonging" : "수정한 대담자 소속",
  "talkerName" : "수정한 대담자 성명",
  "quiz" : [ {
    "question" : "수정한 질문1",
    "answer" : 0,
    "options" : [ "수정한 선지1", "수정한 선지2" ]
  }, {
    "question" : "수정한 질문2",
    "answer" : 0,
    "options" : [ "수정한 선지1", "수정한 선지2" ]
  } ],
  "createdAt" : "2024-11-28T19:49:22.777287",
  "updatedAt" : "2024-11-28T19:49:22.777288"
}

Response fields

Name Type Required Description

id

Number

true

대담 영상 ID

title

String

true

대담 영상 제목

youtubeId

String

true

유튜브 영상의 고유 ID

year

Number

true

대담 영상 연도

talkerBelonging

String

true

대담자의 소속된 직장/단체

talkerName

String

true

대담자의 성명

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

createdAt

String

true

대담 영상 생성일

updatedAt

String

true

대담 영상 수정일

대담 영상 삭제 (DELETE /talks/{talkId})

HTTP request

DELETE /talks/1 HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /talks/{talkId}
Parameter Description

talkId

삭제할 대담 영상의 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

대담 영상의 퀴즈 조회 (GET /talks/{talkId}/quiz)

HTTP request

GET /talks/1/quiz HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

Path parameters

Table 1. /talks/{talkId}/quiz
Parameter Description

talkId

퀴즈를 가져올 대담 영상의 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 205

{
  "quiz" : [ {
    "question" : "질문1",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  }, {
    "question" : "질문2",
    "answer" : 0,
    "options" : [ "선지1", "선지2" ]
  } ]
}

Response fields

Name Type Required Description

quiz

Array

false

퀴즈 데이터, 없는경우 null

quiz[].question

String

false

퀴즈 1개의 질문

quiz[].answer

Number

false

퀴즈 1개의 정답선지 인덱스

quiz[].options

Array

false

퀴즈 1개의 정답선지 리스트

대담 영상의 퀴즈 결과 제출 (POST /talks/{talkId}/quiz)

HTTP request

POST /talks/1/quiz HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Content-Length: 47
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "result" : {
    "0" : 0,
    "1" : 1
  }
}

Path parameters

Table 1. /talks/{talkId}/quiz
Parameter Description

talkId

퀴즈를 제출할 대담 영상의 ID

Request fields

Name Type Required Description

result

Object

true

퀴즈를 푼 결과

result.*

Number

true

퀴즈 각 문제별 정답 인덱스, key는 문제 번호

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 40

{
  "success" : true,
  "tryCount" : 1
}

Response fields

Name Type Required Description

success

Boolean

true

퀴즈 성공 여부

tryCount

Number

true

퀴즈 시도 횟수

대담 영상의 관심 등록 (POST /talks/{talkId}/favorite)

HTTP request

POST /talks/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /talks/{talkId}/favorite
Parameter Description

talkId

관심 목록에 추가할 대담 영상의 ID

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

대담 영상의 관심 삭제 (DELETE /talks/{talkId}/favorite)

HTTP request

DELETE /talks/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /talks/{talkId}/favorite
Parameter Description

talkId

관심 목록에서 삭제할 대담 영상의 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

유저의 퀴즈 제출 기록 조회 (GET /talks/{talkId/quiz/submit)

HTTP request

GET /talks/1/quiz/submit HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /talks/{talkId}/quiz/submit
Parameter Description

talkId

퀴즈가 연결된 대담 영상의 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 41

{
  "success" : false,
  "tryCount" : 2
}

Response fields

Name Type Required Description

tryCount

Number

true

시도한 횟수

success

Boolean

true

퀴즈 성공 여부

퀴즈 결과 API


퀴즈 결과 조회 (GET /quizzes/result)

HTTP request

GET /quizzes/result HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

year

false

찾고자 하는 퀴즈 푼 문제의 연도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 739

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "userId" : 1,
    "name" : "name",
    "phone" : "010-1111-1111",
    "email" : "scg@scg.skku.ac.kr",
    "successCount" : 3
  }, {
    "userId" : 2,
    "name" : "name2",
    "phone" : "010-0000-1234",
    "email" : "iam@2tle.io",
    "successCount" : 1
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

content[].userId

Number

true

유저의 아이디

content[].name

String

true

유저의 이름

content[].phone

String

true

유저의 연락처

content[].email

String

true

유저의 이메일

content[].successCount

Number

true

유저가 퀴즈를 성공한 횟수의 합

퀴즈 결과를 엑셀로 받기 (GET /quizzes/result/excel)

HTTP request

GET /quizzes/result/excel HTTP/1.1
Content-Type: application/octet-stream;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

year

false

찾고자 하는 퀴즈 푼 문제의 연도, 기본값 올해

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/octet-stream;charset=UTF-8
Content-Disposition: attachment; filename=excel.xlsx
Content-Length: 2821

PK-[Content_Types].xml�S�n1��U��&����X8�ql�J?�M��y)1��^�RT�S��xfl%��ڻj���q+G� ���k����~U!\؈�t2�o��[CiDO��*�GEƄ��6f�e�T����ht�t��j4�d��-,UO��A�����S�U0G��^Pft[N�m*7L�˚Uv�0Z�:��q�������E�mk5����[$�M�23Y��A�7�,��<c�(���x֢cƳ�E�GӖ�L��;Yz�h>(�c�b��/�s�Ɲ��`�\s|J6�r��y���௶�j�PK�q,-�PK-_rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�	�n����*"�H�׺؁�����8�Z�^'�#��7m{��O�3���G�u�ܓ�'��y|a�����D�	��l_EYȾ����vql3�ML�eh���*���\3�Y0���oJ׏�	:��^��}PK��z��IPK-docProps/app.xmlM��
�0D�~EȽ��ADҔ���A? ��6�lB�J?ߜ���0���ͯ�)�@��׍H6���V>��$;�SC
;̢(�ra�g�l�&�e��L!y�%��49��`_���4G���F��J��Wg
�GS�b����
~�PK�|wؑ�PK-docProps/core.xmlm�]K�0��J�}{�n�m�(Aq�D�.$Ƕ�|�D;��i�Ի$�sN�j{�yGzkj��4Ҫ޴5}8�
%!
��`
��X�m*鸴��:���@��.]M��C-B���뵈��[pB���,�3��Q�$��b�'���ҽ�a(	8�F���������,�1�5�c>�f.m�����~^>���u���Nj.=���$�.5�<�.�;ڔE����́|}���_���l}s�
���'ny��O��'PKqBj�PK-xl/sharedStrings.xml=�A� ツ��.z0Ɣ�`������,�����q2��o�ԇ���N�E��x5�z>�W���(R�K���^4{�����ŀ�5��y�V����y�m�XV�\�.�j����
8�PKp��&x�PK-
xl/styles.xml���n� ��>bop2TQ��P)U�RWb�6*�����ӤS�Nw�s���3ߍ֐���t��(l��������ҝx�!N=@$ɀ��}��3c���ʰr`:i��2��w,�
�d
�T��R#�voc �;c�iE��Û��E<|��4Iɣ����F#��n���B�z�F���y�j3y��yҥ�jt>���2��Lژ�!6��2F�OY��4@M�!���G��������1�t��y��p��"	n����u�����a�ΦDi�9�&#��%I��9��}���cK��T��$?������`J������7���o��f��M|PK�1X@C�PK-xl/workbook.xmlM���0��>E�wi1ƨ����z/�HmI�_j��qf��)ʧٌ��w�LC��ָ��[u��T�b�a��؊;���8�9��G�)��5�|�:�2<8MuK=b�#�	q�V�u
����K��H\)�\�&�t͌��%���?��B��T�PK	���PK-xl/_rels/workbook.xml.rels��ͪ1�_�d�tt!"V7�n������LZ�(����r����p����6�JY���U
����s����;[�E8D&a��h@-
��$� Xt�im���F�*&�41���̭M��ؒ]����WL�f�}��9anIH���Qs1���KtO��ll���O���X߬�	�{�ŋ����œ�?o'�>PK�(2��PK-�q,-�[Content_Types].xmlPK-��z��Iv_rels/.relsPK-�|wؑ��docProps/app.xmlPK-qBj�qdocProps/core.xmlPK-p��&x��xl/sharedStrings.xmlPK-�1X@C�
xl/styles.xmlPK-	���xl/workbook.xmlPK-�(2���xl/_rels/workbook.xml.relsPK��

공지 사항 API

공지 사항 생성 (POST /notices)

HTTP request

POST /notices HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 121
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "공지 사항 제목",
  "content" : "공지 사항 내용",
  "fixed" : true,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 960

{
  "id" : 1,
  "title" : "공지 사항 제목",
  "content" : "공지 사항 내용",
  "hitCount" : 0,
  "fixed" : true,
  "createdAt" : "2024-11-28T19:49:20.765811",
  "updatedAt" : "2024-11-28T19:49:20.765812",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.765803",
    "updatedAt" : "2024-11-28T19:49:20.765806"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.765807",
    "updatedAt" : "2024-11-28T19:49:20.765808"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.765809",
    "updatedAt" : "2024-11-28T19:49:20.76581"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

공지 사항 리스트 조회 (GET /notices)

Query parameters

Parameter Required Description

terms

false

검색어 (optional)

scope

false

검색 범위 (title, content, both) [default: both, searchTerm=null 이면 null로 초기화]

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP request

GET /notices?terms=notice&scope=title&page=0&size=10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 838

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "title" : "notice 1",
    "hitCount" : 10,
    "fixed" : true,
    "createdAt" : "2024-11-28T19:49:20.7253",
    "updatedAt" : "2024-11-28T19:49:20.725302"
  }, {
    "id" : 2,
    "title" : "notice 2",
    "hitCount" : 10,
    "fixed" : false,
    "createdAt" : "2024-11-28T19:49:20.725317",
    "updatedAt" : "2024-11-28T19:49:20.725318"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].id

Number

true

공지 사항 ID

content[].title

String

true

공지 사항 제목

content[].hitCount

Number

true

공지 사항 조회수

content[].fixed

Boolean

true

공지 사항 고정 여부

content[].createdAt

String

true

공지 사항 생성일

content[].updatedAt

String

true

공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

공지 사항 조회 (GET /notices/{noticeId})

Path parameters

Table 1. /notices/{noticeId}
Parameter Description

noticeId

조회할 공지 사항 ID

HTTP request

GET /notices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 949

{
  "id" : 1,
  "title" : "공지 사항 제목",
  "content" : "content",
  "hitCount" : 10,
  "fixed" : true,
  "createdAt" : "2024-11-28T19:49:20.757948",
  "updatedAt" : "2024-11-28T19:49:20.757949",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.757939",
    "updatedAt" : "2024-11-28T19:49:20.757942"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.757943",
    "updatedAt" : "2024-11-28T19:49:20.757944"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.757945",
    "updatedAt" : "2024-11-28T19:49:20.757946"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

공지 사항 수정 (PUT /notices/{noticeId})

Path parameters

Table 1. /notices/{noticeId}
Parameter Description

noticeId

수정할 공지 사항 ID

HTTP request

PUT /notices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 142
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 공지 사항 제목",
  "content" : "수정된 공지 사항 내용",
  "fixed" : false,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

fixed

Boolean

true

공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 955

{
  "id" : 1,
  "title" : "수정된 공지 사항 제목",
  "content" : "수정된 공지 사항 내용",
  "hitCount" : 10,
  "fixed" : false,
  "createdAt" : "2024-01-01T12:00:00",
  "updatedAt" : "2024-11-28T19:49:20.739212",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:20.739182"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:20.739187"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:20.739189"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

공지 사항 ID

title

String

true

공지 사항 제목

content

String

true

공지 사항 내용

hitCount

Number

true

공지 사항 조회수

fixed

Boolean

true

공지 사항 고정 여부

createdAt

String

true

공지 사항 생성일

updatedAt

String

true

공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

공지 사항 삭제 (DELETE /notices/{noticeId})

Path parameters

Table 1. /notices/{noticeId}
Parameter Description

noticeId

삭제할 공지 사항 ID

HTTP request

DELETE /notices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

이벤트 공지 사항 API

이벤트 공지 사항 생성 (POST /eventNotices)

HTTP request

POST /eventNotices HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 141
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "이벤트 공지 사항 제목",
  "content" : "이벤트 공지 사항 내용",
  "fixed" : true,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 980

{
  "id" : 1,
  "title" : "이벤트 공지 사항 제목",
  "content" : "이벤트 공지 사항 내용",
  "hitCount" : 0,
  "fixed" : true,
  "createdAt" : "2024-11-28T19:49:19.013422",
  "updatedAt" : "2024-11-28T19:49:19.013423",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.013406",
    "updatedAt" : "2024-11-28T19:49:19.013412"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.013414",
    "updatedAt" : "2024-11-28T19:49:19.013416"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.013418",
    "updatedAt" : "2024-11-28T19:49:19.01342"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

이벤트 공지 사항 리스트 조회 (GET /eventNotices)

Query parameters

Parameter Required Description

terms

false

검색어 (optional)

scope

false

검색 범위 (title, content, both) [default: both, searchTerm=null 이면 null로 초기화]

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP request

GET /eventNotices?terms=notice&scope=title&page=0&size=10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 852

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "title" : "event notice 1",
    "hitCount" : 10,
    "fixed" : true,
    "createdAt" : "2024-11-28T19:49:19.026853",
    "updatedAt" : "2024-11-28T19:49:19.026858"
  }, {
    "id" : 2,
    "title" : "event notice 2",
    "hitCount" : 10,
    "fixed" : false,
    "createdAt" : "2024-11-28T19:49:19.026866",
    "updatedAt" : "2024-11-28T19:49:19.026867"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].id

Number

true

이벤트 공지 사항 ID

content[].title

String

true

이벤트 공지 사항 제목

content[].hitCount

Number

true

이벤트 공지 사항 조회수

content[].fixed

Boolean

true

이벤트 공지 사항 고정 여부

content[].createdAt

String

true

이벤트 공지 사항 생성일

content[].updatedAt

String

true

이벤트 공지 사항 수정일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

이벤트 공지 사항 조회 (GET /eventNotices/{eventNoticeId})

Path parameters

Table 1. /eventNotices/{eventNoticeId}
Parameter Description

eventNoticeId

조회할 이벤트 공지 사항 ID

HTTP request

GET /eventNotices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 958

{
  "id" : 1,
  "title" : "이벤트 공지 사항 제목",
  "content" : "content",
  "hitCount" : 10,
  "fixed" : true,
  "createdAt" : "2024-11-28T19:49:18.99268",
  "updatedAt" : "2024-11-28T19:49:18.992682",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:18.992663",
    "updatedAt" : "2024-11-28T19:49:18.992668"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:18.992671",
    "updatedAt" : "2024-11-28T19:49:18.992673"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:18.992674",
    "updatedAt" : "2024-11-28T19:49:18.992677"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

이벤트 공지 사항 수정 (PUT /eventNotices/{eventNoticeId})

Path parameters

Table 1. /eventNotices/{eventNoticeId}
Parameter Description

eventNoticeId

수정할 이벤트 공지 사항 ID

HTTP request

PUT /eventNotices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 162
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 이벤트 공지 사항 제목",
  "content" : "수정된 이벤트 공지 사항 내용",
  "fixed" : false,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

fixed

Boolean

true

이벤트 공지 사항 고정 여부

fileIds

Array

false

첨부 파일 ID 목록

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 975

{
  "id" : 1,
  "title" : "수정된 이벤트 공지 사항 제목",
  "content" : "수정된 이벤트 공지 사항 내용",
  "hitCount" : 10,
  "fixed" : false,
  "createdAt" : "2024-01-01T12:00:00",
  "updatedAt" : "2024-11-28T19:49:18.969893",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "예시 첨부 파일 1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:18.969851"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "예시 첨부 파일 2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:18.969863"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "예시 첨부 파일 3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-01-01T12:00:00",
    "updatedAt" : "2024-11-28T19:49:18.969868"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

이벤트 공지 사항 ID

title

String

true

이벤트 공지 사항 제목

content

String

true

이벤트 공지 사항 내용

hitCount

Number

true

이벤트 공지 사항 조회수

fixed

Boolean

true

이벤트 공지 사항 고정 여부

createdAt

String

true

이벤트 공지 사항 생성일

updatedAt

String

true

이벤트 공지 사항 수정일

files

Array

true

첨부 파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 고유 식별자

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성 시간

files[].updatedAt

String

true

파일 수정 시간

이벤트 공지 사항 삭제 (DELETE /eventNotices/{eventNoticeId})

Path parameters

Table 1. /eventNotices/{eventNoticeId}
Parameter Description

eventNoticeId

삭제할 이벤트 공지 사항 ID

HTTP request

DELETE /eventNotices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

이벤트 기간 API


이벤트 기간 생성 (POST /eventPeriods)

HTTP request

POST /eventPeriods HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 84
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "start" : "2024-11-28T19:49:19.262199",
  "end" : "2024-12-08T19:49:19.262203"
}

Request fields

Name Type Required Description

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 204

{
  "id" : 1,
  "year" : 2024,
  "start" : "2024-11-28T19:49:19.262206",
  "end" : "2024-12-08T19:49:19.262208",
  "createdAt" : "2024-11-28T19:49:19.26221",
  "updatedAt" : "2024-11-28T19:49:19.262211"
}

Response fields

Name Type Required Description

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

올해의 이벤트 기간 조회 (GET /eventPeriod)

HTTP request

GET /eventPeriod HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 205

{
  "id" : 1,
  "year" : 2024,
  "start" : "2024-11-28T19:49:19.254084",
  "end" : "2024-12-08T19:49:19.254086",
  "createdAt" : "2024-11-28T19:49:19.254089",
  "updatedAt" : "2024-11-28T19:49:19.254091"
}

Response fields

Name Type Required Description

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

전체 이벤트 기간 리스트 조회 (GET /eventPeriods)

HTTP request

GET /eventPeriods HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 416

[ {
  "id" : 1,
  "year" : 2024,
  "start" : "2024-11-28T19:49:19.278318",
  "end" : "2024-12-08T19:49:19.278322",
  "createdAt" : "2024-11-28T19:49:19.278325",
  "updatedAt" : "2024-11-28T19:49:19.278331"
}, {
  "id" : 2,
  "year" : 2025,
  "start" : "2024-11-28T19:49:19.278333",
  "end" : "2024-12-08T19:49:19.278334",
  "createdAt" : "2024-11-28T19:49:19.278336",
  "updatedAt" : "2024-11-28T19:49:19.278338"
} ]

Response fields

Name Type Required Description

[].id

Number

true

이벤트 기간 ID

[].year

Number

true

이벤트 연도

[].start

String

true

이벤트 시작 일시

[].end

String

true

이벤트 종료 일시

[].createdAt

String

true

생성일

[].updatedAt

String

true

변경일

올해의 이벤트 기간 업데이트 (PUT /eventPeriod)

HTTP request

PUT /eventPeriod HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 83
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "start" : "2024-11-28T19:49:19.23885",
  "end" : "2024-12-08T19:49:19.238855"
}

Request fields

Name Type Required Description

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 205

{
  "id" : 1,
  "year" : 2024,
  "start" : "2024-11-28T19:49:19.238886",
  "end" : "2024-12-08T19:49:19.238887",
  "createdAt" : "2024-11-28T19:49:19.238889",
  "updatedAt" : "2024-11-28T19:49:19.238891"
}

Response fields

Name Type Required Description

id

Number

true

이벤트 기간 ID

year

Number

true

이벤트 연도

start

String

true

이벤트 시작 일시

end

String

true

이벤트 종료 일시

createdAt

String

true

생성일

updatedAt

String

true

변경일

갤러리 API


갤러리 게시글 생성 (POST /galleries)

HTTP request

POST /galleries HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 96
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "새내기 배움터",
  "year" : 2024,
  "month" : 4,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 890

{
  "id" : 1,
  "title" : "새내기 배움터",
  "year" : 2024,
  "month" : 4,
  "hitCount" : 1,
  "createdAt" : "2024-11-28T19:49:20.00415",
  "updatedAt" : "2024-11-28T19:49:20.004152",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "사진1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.004133",
    "updatedAt" : "2024-11-28T19:49:20.004137"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "사진2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.004139",
    "updatedAt" : "2024-11-28T19:49:20.004141"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "사진3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:20.004142",
    "updatedAt" : "2024-11-28T19:49:20.004144"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

갤러리 게시글 목록 조회 (GET /galleries)

HTTP request

GET /galleries?year=2024&month=4 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

Query parameters

Parameter Required Description

year

false

연도

month

false

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1234

{
  "totalPages" : 1,
  "totalElements" : 1,
  "first" : true,
  "last" : true,
  "size" : 1,
  "content" : [ {
    "id" : 1,
    "title" : "새내기 배움터",
    "year" : 2024,
    "month" : 4,
    "hitCount" : 0,
    "createdAt" : "2024-11-28T19:49:19.979402",
    "updatedAt" : "2024-11-28T19:49:19.979404",
    "files" : [ {
      "id" : 1,
      "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
      "name" : "사진1.jpg",
      "mimeType" : "image/jpeg",
      "createdAt" : "2024-11-28T19:49:19.979386",
      "updatedAt" : "2024-11-28T19:49:19.97939"
    }, {
      "id" : 2,
      "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
      "name" : "사진2.jpg",
      "mimeType" : "image/jpeg",
      "createdAt" : "2024-11-28T19:49:19.979392",
      "updatedAt" : "2024-11-28T19:49:19.979394"
    }, {
      "id" : 3,
      "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
      "name" : "사진3.jpg",
      "mimeType" : "image/jpeg",
      "createdAt" : "2024-11-28T19:49:19.979396",
      "updatedAt" : "2024-11-28T19:49:19.979397"
    } ]
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 1,
  "pageable" : "INSTANCE",
  "empty" : false
}

Response fields

Name Type Required Description

totalElements

Number

true

전체 데이터 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지당 데이터 수

content

Array

true

갤러리 목록

content[].id

Number

true

갤러리 ID

content[].title

String

true

갤러리 제목

content[].year

Number

true

갤러리 연도

content[].month

Number

true

갤러리 월

content[].hitCount

Number

true

갤러리 조회수

content[].createdAt

String

true

갤러리 생성일

content[].updatedAt

String

true

갤러리 수정일

content[].files

Array

true

파일 목록

content[].files[].id

Number

true

파일 ID

content[].files[].uuid

String

true

파일 UUID

content[].files[].name

String

true

파일 이름

content[].files[].mimeType

String

true

파일 MIME 타입

content[].files[].createdAt

String

true

파일 생성일

content[].files[].updatedAt

String

true

파일 수정일

number

Number

true

현재 페이지 번호

sort.empty

Boolean

true

정렬 정보

sort.sorted

Boolean

true

정렬 정보

sort.unsorted

Boolean

true

정렬 정보

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

numberOfElements

Number

true

현재 페이지의 데이터 수

empty

Boolean

true

빈 페이지 여부

갤러리 게시글 조회 (GET /galleries/{galleryId})

HTTP request

GET /galleries/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080

Path parameters

Table 1. /galleries/{galleryId}
Parameter Description

galleryId

조회할 갤러리 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 890

{
  "id" : 1,
  "title" : "새내기 배움터",
  "year" : 2024,
  "month" : 4,
  "hitCount" : 1,
  "createdAt" : "2024-11-28T19:49:19.995362",
  "updatedAt" : "2024-11-28T19:49:19.995363",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "사진1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.995349",
    "updatedAt" : "2024-11-28T19:49:19.995353"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "사진2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.995355",
    "updatedAt" : "2024-11-28T19:49:19.995357"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "사진3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.995358",
    "updatedAt" : "2024-11-28T19:49:19.99536"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

갤러리 게시글 삭제 (DELETE /galleries/{galleryId})

HTTP request

DELETE /galleries/1 HTTP/1.1
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /galleries/{galleryId}
Parameter Description

galleryId

삭제할 갤러리 ID

갤러리 게시글 수정 (PUT /galleries/{galleryId})

HTTP request

PUT /galleries/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 93
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 제목",
  "year" : 2024,
  "month" : 5,
  "fileIds" : [ 1, 2, 3 ]
}

Path parameters

Table 1. /galleries/{galleryId}
Parameter Description

galleryId

수정할 갤러리 ID

Request fields

Name Type Required Description

title

String

true

제목

year

Number

true

연도

month

Number

true

fileIds

Array

true

파일 ID 리스트

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 885

{
  "id" : 1,
  "title" : "수정된 제목",
  "year" : 2024,
  "month" : 5,
  "hitCount" : 1,
  "createdAt" : "2024-11-28T19:49:19.953599",
  "updatedAt" : "2024-11-28T19:49:19.9536",
  "files" : [ {
    "id" : 1,
    "uuid" : "014eb8a0-d4a6-11ee-adac-117d766aca1d",
    "name" : "사진1.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.95354",
    "updatedAt" : "2024-11-28T19:49:19.953546"
  }, {
    "id" : 2,
    "uuid" : "11a480c0-13fa-11ef-9047-570191b390ea",
    "name" : "사진2.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.953552",
    "updatedAt" : "2024-11-28T19:49:19.953553"
  }, {
    "id" : 3,
    "uuid" : "1883fc70-cfb4-11ee-a387-e754bd392d45",
    "name" : "사진3.jpg",
    "mimeType" : "image/jpeg",
    "createdAt" : "2024-11-28T19:49:19.953556",
    "updatedAt" : "2024-11-28T19:49:19.953557"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

갤러리 ID

title

String

true

제목

year

Number

true

연도

month

Number

true

hitCount

Number

true

조회수

createdAt

String

true

생성일

updatedAt

String

true

수정일

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

프로젝트 API


프로젝트 조회 (GET /projects)

HTTP request

GET /projects HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1759

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "thumbnailInfo" : {
      "id" : 1,
      "uuid" : "썸네일 uuid 1",
      "name" : "썸네일 파일 이름 1",
      "mimeType" : "썸네일 mime 타입 1"
    },
    "projectName" : "프로젝트 이름 1",
    "teamName" : "팀 이름 1",
    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
    "professorNames" : [ "교수 이름 1" ],
    "projectType" : "STARTUP",
    "projectCategory" : "BIG_DATA_ANALYSIS",
    "awardStatus" : "FIRST",
    "year" : 2023,
    "likeCount" : 100,
    "like" : false,
    "bookMark" : false,
    "url" : "프로젝트 URL",
    "description" : "프로젝트 설명"
  }, {
    "id" : 2,
    "thumbnailInfo" : {
      "id" : 2,
      "uuid" : "썸네일 uuid 2",
      "name" : "썸네일 파일 이름 2",
      "mimeType" : "썸네일 mime 타입 2"
    },
    "projectName" : "프로젝트 이름 2",
    "teamName" : "팀 이름 2",
    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
    "professorNames" : [ "교수 이름 2" ],
    "projectType" : "LAB",
    "projectCategory" : "AI_MACHINE_LEARNING",
    "awardStatus" : "SECOND",
    "year" : 2023,
    "likeCount" : 100,
    "like" : false,
    "bookMark" : true,
    "url" : "프로젝트 URL",
    "description" : "프로젝트 설명"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Query parameters

Parameter Required Description

title

false

프로젝트 이름

year

false

프로젝트 년도

category

false

프로젝트 카테고리

type

false

프로젝트 타입

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

Response fields

Name Type Required Description

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

프로젝트 생성 (POST /projects)

HTTP request

POST /projects HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 535
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "thumbnailId" : 1,
  "posterId" : 2,
  "projectName" : "프로젝트 이름",
  "projectType" : "STARTUP",
  "projectCategory" : "BIG_DATA_ANALYSIS",
  "teamName" : "팀 이름",
  "youtubeId" : "유튜브 ID",
  "year" : 2021,
  "awardStatus" : "NONE",
  "members" : [ {
    "name" : "학생 이름 1",
    "role" : "STUDENT"
  }, {
    "name" : "학생 이름 2",
    "role" : "STUDENT"
  }, {
    "name" : "교수 이름 1",
    "role" : "PROFESSOR"
  } ],
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1481

{
  "id" : 1,
  "thumbnailInfo" : {
    "id" : 2,
    "uuid" : "썸네일 uuid",
    "name" : "썸네일 파일 이름",
    "mimeType" : "썸네일 mime 타입"
  },
  "posterInfo" : {
    "id" : 2,
    "uuid" : "포스터 uuid",
    "name" : "포트서 파일 이름",
    "mimeType" : "포스터 mime 타입"
  },
  "projectName" : "프로젝트 이름",
  "projectType" : "STARTUP",
  "projectCategory" : "BIG_DATA_ANALYSIS",
  "teamName" : "팀 이름",
  "youtubeId" : "유튜브 ID",
  "year" : 2024,
  "awardStatus" : "FIRST",
  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
  "professorNames" : [ "교수 이름 1" ],
  "likeCount" : 0,
  "like" : false,
  "bookMark" : false,
  "comments" : [ {
    "id" : 1,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : true,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.053603",
    "updatedAt" : "2024-11-28T19:49:21.053605"
  }, {
    "id" : 2,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.053606",
    "updatedAt" : "2024-11-28T19:49:21.053607"
  }, {
    "id" : 3,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.053608",
    "updatedAt" : "2024-11-28T19:49:21.053608"
  } ],
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}

Request fields

Name Type Required Description

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

Response fields

Name Type Required Description

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

프로젝트 엑셀 일괄등록 (POST /projects/excel)

HTTP request

POST /projects/excel HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=excel; filename=project_upload_form.xlsx
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

[BINARY DATA]
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=thumbnails; filename=thumbnails.json
Content-Type: application/json

[{"id":1,"uuid":"033f326e-3ed6-4279-ba3b-c14b0c7eb0e5","name":"썸네일1.png","mimeType":"image/png","createdAt":"2024-11-28T19:49:21.218223","updatedAt":"2024-11-28T19:49:21.218224"},{"id":1,"uuid":"2d47118a-bd5d-4054-ac0f-f4b4d7cde727","name":"썸네일2.png","mimeType":"image/png","createdAt":"2024-11-28T19:49:21.218241","updatedAt":"2024-11-28T19:49:21.218242"}]
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=posters; filename=thumbnails.json
Content-Type: application/json

[{"id":1,"uuid":"7249fab0-93da-440c-b1de-b9c60c79b597","name":"포스터1.png","mimeType":"image/png","createdAt":"2024-11-28T19:49:21.218257","updatedAt":"2024-11-28T19:49:21.218258"},{"id":1,"uuid":"84807b2b-e8c5-43e3-a92a-b14626c9030b","name":"포스터2.png","mimeType":"image/png","createdAt":"2024-11-28T19:49:21.218262","updatedAt":"2024-11-28T19:49:21.218263"}]
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request parts

Part Description

excel

업로드할 Excel 파일

thumbnails

썸네일 등록 응답 JSON 파일

posters

포스터 등록 응답 JSON 파일

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 24

{
  "successCount" : 2
}

Response fields

Name Type Required Description

successCount

Number

true

생성에 성공한 프로젝트 개수

프로젝트 조회 (GET /projects/{projectId})

HTTP request

GET /projects/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1481

{
  "id" : 1,
  "thumbnailInfo" : {
    "id" : 2,
    "uuid" : "썸네일 uuid",
    "name" : "썸네일 파일 이름",
    "mimeType" : "썸네일 mime 타입"
  },
  "posterInfo" : {
    "id" : 2,
    "uuid" : "포스터 uuid",
    "name" : "포트서 파일 이름",
    "mimeType" : "포스터 mime 타입"
  },
  "projectName" : "프로젝트 이름",
  "projectType" : "STARTUP",
  "projectCategory" : "BIG_DATA_ANALYSIS",
  "teamName" : "팀 이름",
  "youtubeId" : "유튜브 ID",
  "year" : 2024,
  "awardStatus" : "FIRST",
  "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
  "professorNames" : [ "교수 이름 1" ],
  "likeCount" : 0,
  "like" : false,
  "bookMark" : false,
  "comments" : [ {
    "id" : 1,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : true,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.029498",
    "updatedAt" : "2024-11-28T19:49:21.029501"
  }, {
    "id" : 2,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.029504",
    "updatedAt" : "2024-11-28T19:49:21.029505"
  }, {
    "id" : 3,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:21.029506",
    "updatedAt" : "2024-11-28T19:49:21.029506"
  } ],
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}

Path parameters

Table 1. /projects/{projectId}
Parameter Description

projectId

프로젝트 ID

Response fields

Name Type Required Description

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

프로젝트 수정 (PUT /projects/{projectId})

HTTP request

PUT /projects/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 530
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "thumbnailId" : 3,
  "posterId" : 4,
  "projectName" : "프로젝트 이름",
  "projectType" : "LAB",
  "projectCategory" : "COMPUTER_VISION",
  "teamName" : "팀 이름",
  "youtubeId" : "유튜브 ID",
  "year" : 2024,
  "awardStatus" : "FIRST",
  "members" : [ {
    "name" : "학생 이름 3",
    "role" : "STUDENT"
  }, {
    "name" : "학생 이름 4",
    "role" : "STUDENT"
  }, {
    "name" : "교수 이름 2",
    "role" : "PROFESSOR"
  } ],
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1477

{
  "id" : 1,
  "thumbnailInfo" : {
    "id" : 3,
    "uuid" : "썸네일 uuid",
    "name" : "썸네일 파일 이름",
    "mimeType" : "썸네일 mime 타입"
  },
  "posterInfo" : {
    "id" : 4,
    "uuid" : "포스터 uuid",
    "name" : "포트서 파일 이름",
    "mimeType" : "포스터 mime 타입"
  },
  "projectName" : "프로젝트 이름",
  "projectType" : "LAB",
  "projectCategory" : "COMPUTER_VISION",
  "teamName" : "팀 이름",
  "youtubeId" : "유튜브 ID",
  "year" : 2024,
  "awardStatus" : "FIRST",
  "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
  "professorNames" : [ "교수 이름 2" ],
  "likeCount" : 100,
  "like" : false,
  "bookMark" : false,
  "comments" : [ {
    "id" : 1,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : true,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:20.940585",
    "updatedAt" : "2024-11-28T19:49:20.940587"
  }, {
    "id" : 2,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:20.940592",
    "updatedAt" : "2024-11-28T19:49:20.940593"
  }, {
    "id" : 3,
    "projectId" : 1,
    "userName" : "유저 이름",
    "isAnonymous" : false,
    "content" : "댓글 내용",
    "createdAt" : "2024-11-28T19:49:20.940595",
    "updatedAt" : "2024-11-28T19:49:20.940596"
  } ],
  "url" : "프로젝트 URL",
  "description" : "프로젝트 설명"
}

Path parameters

Table 1. /projects/{projectId}
Parameter Description

projectId

프로젝트 ID

Request fields

Name Type Required Description

thumbnailId

Number

true

썸네일 ID

posterId

Number

true

포스터 ID

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

members

Array

true

멤버

members[].name

String

true

멤버 이름

members[].role

String

true

멤버 역할: STUDENT, PROFESSOR

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

Response fields

Name Type Required Description

id

Number

true

프로젝트 ID

thumbnailInfo

Object

true

썸네일 정보

thumbnailInfo.id

Number

true

썸네일 ID

thumbnailInfo.uuid

String

true

썸네일 UUID

thumbnailInfo.name

String

true

썸네일 파일 이름

thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

posterInfo

Object

true

포스터 정보

posterInfo.id

Number

true

포스터 ID

posterInfo.uuid

String

true

포스터 UUID

posterInfo.name

String

true

포스터 파일 이름

posterInfo.mimeType

String

true

포스터 MIME 타입

projectName

String

true

프로젝트 이름

projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

teamName

String

true

팀 이름

youtubeId

String

true

프로젝트 youtubeId

year

Number

true

프로젝트 년도

awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

studentNames

Array

true

학생 이름

professorNames

Array

true

교수 이름

likeCount

Number

true

좋아요 수

like

Boolean

true

좋아요 여부

bookMark

Boolean

true

북마크 여부

url

String

true

프로젝트 URL

description

String

true

프로젝트 설명

comments

Array

true

댓글

comments[].id

Number

true

댓글 ID

comments[].projectId

Number

true

유저 ID

comments[].userName

String

true

유저 이름

comments[].isAnonymous

Boolean

true

익명 여부

comments[].content

String

true

댓글 내용

comments[].createdAt

String

true

생성 시간

comments[].updatedAt

String

true

수정 시간

프로젝트 삭제 (DELETE /projects/{projectId})

HTTP request

DELETE /projects/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}
Parameter Description

projectId

프로젝트 ID

관심 프로젝트 등록 (POST /projects/{projectId}/favorite)

HTTP request

POST /projects/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}/favorite
Parameter Description

projectId

프로젝트 ID

관심 프로젝트 삭제 (DELETE /projects/{projectId}/favorite)

HTTP request

DELETE /projects/1/favorite HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}/favorite
Parameter Description

projectId

프로젝트 ID

프로젝트 좋아요 등록 (POST /projects/{projectId}/like)

HTTP request

POST /projects/1/like HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}/like
Parameter Description

projectId

프로젝트 ID

프로젝트 좋아요 삭제 (DELETE /projects/{projectId}/like)

HTTP request

DELETE /projects/1/like HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}/like
Parameter Description

projectId

프로젝트 ID

프로젝트 댓글 등록 (POST /projects/{projectId}/comment)

HTTP request

POST /projects/1/comment HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Content-Length: 57
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "content" : "댓글 내용",
  "isAnonymous" : true
}

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 211

{
  "id" : 1,
  "projectId" : 1,
  "userName" : "유저 이름",
  "isAnonymous" : true,
  "content" : "댓글 내용",
  "createdAt" : "2024-11-28T19:49:21.02064",
  "updatedAt" : "2024-11-28T19:49:21.020642"
}

Path parameters

Table 1. /projects/{projectId}/comment
Parameter Description

projectId

프로젝트 ID

Request fields

Name Type Required Description

content

String

true

댓글 내용

isAnonymous

Boolean

true

익명 여부

Response fields

Name Type Required Description

id

Number

true

댓글 ID

projectId

Number

true

프로젝트 ID

userName

String

true

유저 이름

isAnonymous

Boolean

true

익명 여부

content

String

true

댓글 내용

createdAt

String

true

생성 시간

updatedAt

String

true

수정 시간

프로젝트 댓글 삭제 (DELETE /projects/{projectId}/comment)

HTTP request

DELETE /projects/1/comment/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: all_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

Path parameters

Table 1. /projects/{projectId}/comment/{commentId}
Parameter Description

projectId

프로젝트 ID

commentId

댓글 ID

수상 프로젝트 조회 (GET /projects/award?year={year})

HTTP request

GET /projects/award?year=2024 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: optional_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1759

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "thumbnailInfo" : {
      "id" : 1,
      "uuid" : "썸네일 uuid 1",
      "name" : "썸네일 파일 이름 1",
      "mimeType" : "썸네일 mime 타입 1"
    },
    "projectName" : "프로젝트 이름 1",
    "teamName" : "팀 이름 1",
    "studentNames" : [ "학생 이름 1", "학생 이름 2" ],
    "professorNames" : [ "교수 이름 1" ],
    "projectType" : "STARTUP",
    "projectCategory" : "BIG_DATA_ANALYSIS",
    "awardStatus" : "FIRST",
    "year" : 2023,
    "likeCount" : 100,
    "like" : false,
    "bookMark" : false,
    "url" : "프로젝트 URL",
    "description" : "프로젝트 설명"
  }, {
    "id" : 2,
    "thumbnailInfo" : {
      "id" : 2,
      "uuid" : "썸네일 uuid 2",
      "name" : "썸네일 파일 이름 2",
      "mimeType" : "썸네일 mime 타입 2"
    },
    "projectName" : "프로젝트 이름 2",
    "teamName" : "팀 이름 2",
    "studentNames" : [ "학생 이름 3", "학생 이름 4" ],
    "professorNames" : [ "교수 이름 2" ],
    "projectType" : "LAB",
    "projectCategory" : "AI_MACHINE_LEARNING",
    "awardStatus" : "SECOND",
    "year" : 2023,
    "likeCount" : 100,
    "like" : false,
    "bookMark" : true,
    "url" : "프로젝트 URL",
    "description" : "프로젝트 설명"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Query parameters

Parameter Required Description

year

true

프로젝트 년도

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

sort

false

정렬 기준

Response fields

Name Type Required Description

content[].id

Number

true

프로젝트 ID

content[].thumbnailInfo

Object

true

썸네일 정보

content[].thumbnailInfo.id

Number

true

썸네일 ID

content[].thumbnailInfo.uuid

String

true

썸네일 UUID

content[].thumbnailInfo.name

String

true

썸네일 파일 이름

content[].thumbnailInfo.mimeType

String

true

썸네일 MIME 타입

content[].projectName

String

true

프로젝트 이름

content[].teamName

String

true

팀 이름

content[].studentNames[]

Array

true

학생 이름

content[].professorNames[]

Array

true

교수 이름

content[].projectType

String

true

프로젝트 타입: RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

content[].projectCategory

String

true

프로젝트 카테고리: COMPUTER_VISION, SYSTEM_NETWORK, WEB_APPLICATION, SECURITY_SOFTWARE_ENGINEERING, NATURAL_LANGUAGE_PROCESSING, BIG_DATA_ANALYSIS, AI_MACHINE_LEARNING, INTERACTION_AUGMENTED_REALITY

content[].awardStatus

String

true

수상 여부: NONE, FIRST, SECOND, THIRD, FOURTH, FIFTH

content[].year

Number

true

프로젝트 년도

content[].likeCount

Number

true

좋아요 수

content[].like

Boolean

true

좋아요 여부

content[].bookMark

Boolean

true

북마크 여부

content[].url

String

true

프로젝트 URL

content[].description

String

true

프로젝트 설명

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

프로젝트 문의 사항 API


프로젝트 문의 사항 생성 (POST /projects/{projectId}/inquiry)

HTTP request

POST /projects/1/inquiry HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Content-Length: 102
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "프로젝트 문의 사항 제목",
  "content" : "프로젝트 문의 사항 내용"
}

Request fields

Name Type Required Description

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 305

{
  "id" : 1,
  "authorName" : "문의 작성자 이름",
  "projectId" : 1,
  "projectName" : "프로젝트 이름",
  "title" : "문의 사항 제목",
  "content" : "문의 사항 내용",
  "replied" : false,
  "createdAt" : "2024-11-28T19:49:20.275734",
  "updatedAt" : "2024-11-28T19:49:20.275739"
}

Response fields

Name Type Required Description

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간


프로젝트 문의 사항 리스트 조회 (GET /inquiries)

HTTP request

GET /inquiries?terms=inquiry&scope=title&page=0&size=10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Query parameters

Parameter Required Description

terms

false

검색어

scope

false

검색 범위 (title, content, both, author) [default: both, searchTerm=null 이면 null로 초기화]

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 833

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "authorName" : "프로젝트 inquiry (문의) 제목 1",
    "title" : "프로젝트 문의 사항 내용",
    "createdAt" : "2024-11-28T19:49:20.236706"
  }, {
    "id" : 2,
    "authorName" : "프로젝트 inquiry (문의) 제목 2",
    "title" : "프로젝트 문의 사항 내용",
    "createdAt" : "2024-11-28T19:49:20.236735"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].id

Number

true

문의 사항 ID

content[].authorName

String

true

문의 작성자 이름

content[].title

String

true

문의 사항 제목

content[].createdAt

String

true

문의 사항 생성 시간

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부


프로젝트 문의 사항 단건 조회 (GET /inquiries/{inquiryId})

HTTP request

GET /inquiries/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /inquiries/{inquiryId}
Parameter Description

inquiryId

조회할 문의 사항 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 305

{
  "id" : 1,
  "authorName" : "문의 작성자 이름",
  "projectId" : 1,
  "projectName" : "프로젝트 이름",
  "title" : "문의 사항 제목",
  "content" : "문의 사항 내용",
  "replied" : false,
  "createdAt" : "2024-11-28T19:49:20.260492",
  "updatedAt" : "2024-11-28T19:49:20.260496"
}

Response fields

Name Type Required Description

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간


프로젝트 문의 사항 수정 (PUT /inquiries/{inquiryId})

HTTP request

PUT /inquiries/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Content-Length: 122
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 프로젝트 문의 사항 제목",
  "content" : "수정된 프로젝트 문의 사항 내용"
}

Path parameters

Table 1. /inquiries/{inquiryId}
Parameter Description

inquiryId

수정할 문의 사항 ID

Request fields

Name Type Required Description

title

String

true

문의 사항 제목

content

String

true

문의 사항 내용

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 325

{
  "id" : 1,
  "authorName" : "문의 작성자 이름",
  "projectId" : 1,
  "projectName" : "프로젝트 이름",
  "title" : "수정된 문의 사항 제목",
  "content" : "수정된 문의 사항 내용",
  "replied" : false,
  "createdAt" : "2024-11-28T19:49:20.296233",
  "updatedAt" : "2024-11-28T19:49:20.296237"
}

Response fields

Name Type Required Description

id

Number

true

문의 사항 ID

authorName

String

true

문의 작성자 이름

projectId

Number

true

문의 대상 프로젝트 ID

projectName

String

true

문의 대상 프로젝트 이름

title

String

true

수정된 문의 사항 제목

content

String

true

수정된 문의 사항 내용

replied

Boolean

true

답변 등록 여부

createdAt

String

true

문의 사항 생성 시간

updatedAt

String

true

문의 사항 수정 시간


프로젝트 문의 사항 삭제 (DELETE /inquiries/{inquiryId})

HTTP request

DELETE /inquiries/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /inquiries/{inquiryId}
Parameter Description

inquiryId

삭제할 문의 사항 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

프로젝트 문의 사항 답변 (POST /inquiries/{inquiryId}/reply)

HTTP request

POST /inquiries/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 76
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "문의 답변 제목",
  "content" : "문의 답변 내용"
}

Path parameters

Table 1. /inquiries/{inquiryId}/reply
Parameter Description

inquiryId

답변할 문의 ID

Request fields

Name Type Required Description

title

String

true

답변 제목

content

String

true

답변 내용

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 88

{
  "id" : 1,
  "title" : "문의 답변 제목",
  "content" : "문의 답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용


프로젝트 문의 사항 답변 조회 (GET /inquiries/{inquiryId}/reply)

HTTP request

GET /inquiries/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /inquiries/{inquiryId}/reply
Parameter Description

inquiryId

조회할 문의 ID

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 88

{
  "id" : 1,
  "title" : "문의 답변 제목",
  "content" : "문의 답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

답변 ID

title

String

true

답변 제목

content

String

true

답변 내용


프로젝트 문의 사항 답변 수정 (PUT /inquiries/{inquiryId}/reply)

HTTP request

PUT /inquiries/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Content-Length: 96
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "수정된 문의 답변 제목",
  "content" : "수정된 문의 답변 내용"
}

Path parameters

Table 1. /inquiries/{inquiryId}/reply
Parameter Description

inquiryId

수정할 답변 ID

Request fields

Name Type Required Description

title

String

true

답변 제목

content

String

true

답변 내용

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 108

{
  "id" : 1,
  "title" : "수정된 문의 답변 제목",
  "content" : "수정된 문의 답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

답변 ID

title

String

true

수정된 답변 제목

content

String

true

수정된 답변 내용


프로젝트 문의 사항 답변 삭제 (DELETE /inquiries/{inquiryId}/reply)

HTTP request

DELETE /inquiries/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

Path parameters

Table 1. /inquiries/{inquiryId}/reply
Parameter Description

inquiryId

삭제할 답변 ID

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

과제 제안 API

과제 제안 생성 (POST /proposals)

HTTP request

POST /proposals HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Content-Length: 247
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "webSite" : "website.com",
  "title" : "과제제안제목",
  "email" : "이메일@email.com",
  "projectTypes" : [ "LAB", "CLUB" ],
  "content" : "과제제안내용",
  "isVisible" : true,
  "isAnonymous" : true,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

과제제안 제목

content

String

true

과제제안 내용

webSite

String

false

과제제안 사이트

projectTypes

Array

true

과제제안 프로젝트 유형:RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

email

String

true

과제제안 이메일

isVisible

Boolean

true

공개 여부

isAnonymous

Boolean

true

익명 여부

fileIds

Array

true

파일 id 리스트

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 906

{
  "id" : 1,
  "authorName" : "작성자",
  "email" : "이메일@email.com",
  "webSite" : "website.com",
  "title" : "과제제안제목",
  "projectTypes" : [ "LAB", "CLUB" ],
  "content" : "과제제안내용",
  "replied" : false,
  "files" : [ {
    "id" : 1,
    "uuid" : "uuid1",
    "name" : "과제제안서 이름1.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.437367",
    "updatedAt" : "2024-11-28T19:49:21.43737"
  }, {
    "id" : 2,
    "uuid" : "uuid2",
    "name" : "과제제안서 이름2.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.437371",
    "updatedAt" : "2024-11-28T19:49:21.437372"
  }, {
    "id" : 3,
    "uuid" : "uuid3",
    "name" : "과제제안서 이름3.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.437372",
    "updatedAt" : "2024-11-28T19:49:21.437373"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 ID

authorName

String

true

과제 제안 작성자

email

String

true

과제 제안 이메일

webSite

String

true

과제 제안 사이트

title

String

true

과제 제안 제목

projectTypes

Array

true

과제 제안 프로젝트 유형들

content

String

true

과제 제안 내용

replied

Boolean

true

과제 제안 답변 유무

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

과제 제안 리스트 조회 (GET /proposals)

Query parameters

Parameter Required Description

scope

false

필터 조건 (title,content,both,author)

term

false

필터 키워드

page

false

페이지 번호 [default = 0]

size

false

페이지 크기 [default = 10]

HTTP request

GET /proposals HTTP/1.1
Authorization: all_user_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 723

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "title" : "과제 제안1",
    "name" : "이름",
    "createdDate" : "2024-11-28T19:49:21.399833"
  }, {
    "id" : 2,
    "title" : "과제 제안2",
    "name" : "이름",
    "createdDate" : "2024-11-28T19:49:21.399862"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].id

Number

true

과제 제안 ID

content[].title

String

true

과제 제안 제목

content[].name

String

true

과제 제안 작성자

content[].createdDate

String

true

과제 제안 생성일

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

과제 제안 상세 조회 (GET /proposals/{proposalId})

Path parameters

Table 1. /proposals/{proposalId}
Parameter Description

proposalId

수정할 과제제안 ID

HTTP request

GET /proposals/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 955

{
  "id" : 1,
  "authorName" : "작성자",
  "email" : "작성자@email.com",
  "webSite" : "website.com",
  "title" : "과제 제안 제목",
  "projectTypes" : [ "LAB", "CLUB", "STARTUP", "RESEARCH_AND_BUSINESS_FOUNDATION" ],
  "content" : "과제제안 내용",
  "replied" : false,
  "files" : [ {
    "id" : 1,
    "uuid" : "uuid1",
    "name" : "과제제안서 이름1.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.445892",
    "updatedAt" : "2024-11-28T19:49:21.445894"
  }, {
    "id" : 2,
    "uuid" : "uuid2",
    "name" : "과제제안서 이름2.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.445897",
    "updatedAt" : "2024-11-28T19:49:21.445898"
  }, {
    "id" : 3,
    "uuid" : "uuid3",
    "name" : "과제제안서 이름3.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.445899",
    "updatedAt" : "2024-11-28T19:49:21.4459"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 ID

authorName

String

true

과제 제안 작성자

email

String

true

과제 제안 이메일

webSite

String

true

과제 제안 사이트

title

String

true

과제 제안 제목

projectTypes

Array

true

과제 제안 프로젝트 유형들

content

String

true

과제 제안 내용

replied

Boolean

true

과제 제안 답변 유무

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

과제 제안 수정 (PUT /proposals/{proposalId})

Path parameters

Table 1. /proposals/{proposalId}
Parameter Description

proposalId

수정할 과제제안 ID

HTTP request

PUT /proposals/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Content-Length: 247
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "webSite" : "website.com",
  "title" : "과제제안제목",
  "email" : "이메일@email.com",
  "projectTypes" : [ "LAB", "CLUB" ],
  "content" : "과제제안내용",
  "isVisible" : true,
  "isAnonymous" : true,
  "fileIds" : [ 1, 2, 3 ]
}

Request fields

Name Type Required Description

title

String

true

과제제안 제목

content

String

true

과제제안 내용

webSite

String

false

과제제안 사이트

projectTypes

Array

true

과제제안 프로젝트 유형:RESEARCH_AND_BUSINESS_FOUNDATION, LAB, STARTUP, CLUB

email

String

true

과제제안 이메일

isVisible

Boolean

true

공개 여부

isAnonymous

Boolean

true

익명 여부

fileIds

Array

true

파일 id 리스트

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 906

{
  "id" : 1,
  "authorName" : "작성자",
  "email" : "이메일@email.com",
  "webSite" : "website.com",
  "title" : "과제제안제목",
  "projectTypes" : [ "LAB", "CLUB" ],
  "content" : "과제제안내용",
  "replied" : false,
  "files" : [ {
    "id" : 1,
    "uuid" : "uuid1",
    "name" : "과제제안서 이름1.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.423858",
    "updatedAt" : "2024-11-28T19:49:21.42386"
  }, {
    "id" : 2,
    "uuid" : "uuid2",
    "name" : "과제제안서 이름2.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.423864",
    "updatedAt" : "2024-11-28T19:49:21.423865"
  }, {
    "id" : 3,
    "uuid" : "uuid3",
    "name" : "과제제안서 이름3.pdf",
    "mimeType" : "application/pdf",
    "createdAt" : "2024-11-28T19:49:21.423867",
    "updatedAt" : "2024-11-28T19:49:21.423868"
  } ]
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 ID

authorName

String

true

과제 제안 작성자

email

String

true

과제 제안 이메일

webSite

String

true

과제 제안 사이트

title

String

true

과제 제안 제목

projectTypes

Array

true

과제 제안 프로젝트 유형들

content

String

true

과제 제안 내용

replied

Boolean

true

과제 제안 답변 유무

files

Array

true

파일 목록

files[].id

Number

true

파일 ID

files[].uuid

String

true

파일 UUID

files[].name

String

true

파일 이름

files[].mimeType

String

true

파일 MIME 타입

files[].createdAt

String

true

파일 생성일

files[].updatedAt

String

true

파일 수정일

과제 제안 삭제 (DELETE /proposals/{proposalId})

Path parameters

Table 1. /proposals/{proposalId}
Parameter Description

proposalId

삭제할 과제제안 ID

HTTP request

DELETE /proposals/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

과제 제안 답변 조회 (GET /proposals/{proposalId}/reply)

Query parameters

Snippet query-parameters not found for operation::proposal-controller-test/get-proposal-replies

HTTP request

GET /proposals/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 100

{
  "id" : 1,
  "title" : "과제제안 답변 제목",
  "content" : "과제제안 답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 답변 ID

title

String

true

과제 제안 답변 제목

content

String

true

과제 제안 답변 내용

과제 제안 답변 생성 (PUT /proposals/{proposalId}/reply/)

Path parameters

Table 1. /proposals/{proposalId}/reply
Parameter Description

proposalId

해당 과제제안 ID

HTTP request

POST /proposals/1/reply HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Content-Length: 62
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "답변 제목",
  "content" : "답변 내용"
}

Request fields

Name Type Required Description

title

String

true

과제제안 답변 제목

content

String

true

과제제안 답변 내용

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 74

{
  "id" : 1,
  "title" : "답변 제목",
  "content" : "답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 답변 ID

title

String

true

과제 제안 답변 제목

content

String

true

과제 제안 답변 내용

과제 제안 답변 수정 (PUT /proposals/{proposalId}/reply/{replyId})

Path parameters

Table 1. /proposals/{proposalId}/reply/{replyId}
Parameter Description

proposalId

해당 과제제안 ID

replyId

과제 제안 답변 ID

HTTP request

PUT /proposals/1/reply/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_or_company_access_token
Content-Length: 62
Host: localhost:8080
Cookie: refresh-token=refresh_token

{
  "title" : "답변 제목",
  "content" : "답변 내용"
}

Request fields

Name Type Required Description

title

String

true

과제제안 답변 제목

content

String

true

과제제안 답변 내용

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 74

{
  "id" : 1,
  "title" : "답변 제목",
  "content" : "답변 내용"
}

Response fields

Name Type Required Description

id

Number

true

과제 제안 답변 ID

title

String

true

과제 제안 답변 제목

content

String

true

과제 제안 답변 내용

과제 제안 답변 삭제 (DELETE /proposals/{proposalId}/reply/{replyId})

Path parameters

Table 1. /proposals/{proposalId}/reply/{proposalReplyId}
Parameter Description

proposalId

해당 과제제안 ID

proposalReplyId

삭제할 과제제안 답변 ID

HTTP request

DELETE /proposals/1/reply/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: admin_access_token
Host: localhost:8080
Cookie: refresh-token=refresh_token

HTTP response

HTTP/1.1 204 No Content
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

AI HUB API


AI HUB 모델 리스트 조회 (POST /aihub/models)

Query parameters

Parameter Required Description

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

Request fields

Name Type Required Description

title

String

true

AI 모델 제목

learningModels

Array

true

학습 모델

topics

Array

true

주제 분류

developmentYears

Array

true

개발 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

HTTP request

POST /aihub/models HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 199
Host: localhost:8080

{
  "title" : "title",
  "learningModels" : [ "학습 모델 1" ],
  "topics" : [ "주제 1" ],
  "developmentYears" : [ 2024 ],
  "professor" : "담당 교수 1",
  "participants" : [ "학생 1" ]
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1221

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "title" : "title",
    "learningModels" : [ "학습 모델 1" ],
    "topics" : [ "주제 1" ],
    "developmentYears" : [ 2024 ],
    "professor" : "담당 교수 1",
    "participants" : [ "학생 1", "학생 2" ],
    "object" : "page",
    "id" : "노션 object 아이디",
    "cover" : "커버 이미지 link",
    "url" : "노션 redirect url"
  }, {
    "title" : "title",
    "learningModels" : [ "학습 모델 1" ],
    "topics" : [ "주제 1", "주제 2" ],
    "developmentYears" : [ 2024 ],
    "professor" : "담당 교수 1",
    "participants" : [ "학생 1", "학생 2", "학생 3" ],
    "object" : "page",
    "id" : "노션 object 아이디",
    "cover" : "커버 이미지 link",
    "url" : "노션 redirect url"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 모델 제목

content[].learningModels

Array

true

학습 모델

content[].topics

Array

true

주제 분류

content[].developmentYears

Array

true

개발 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

AI HUB 데이터셋 리스트 조회 (POST /aihub/datasets)

Query parameters

Parameter Required Description

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

Request fields

Name Type Required Description

title

String

true

AI 데이터셋 제목

dataTypes

Array

true

데이터 유형

topics

Array

true

주제 분류

developmentYears

Array

true

구축 년도

professor

String

true

담당 교수

participants

Array

true

참여 학생

HTTP request

POST /aihub/datasets HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 197
Host: localhost:8080

{
  "title" : "title",
  "dataTypes" : [ "주제 1" ],
  "topics" : [ "데이터 유형 1" ],
  "developmentYears" : [ 2024 ],
  "professor" : "담당 교수 1",
  "participants" : [ "학생 1" ]
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1217

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "title" : "title",
    "dataTypes" : [ "주제 1" ],
    "topics" : [ "데이터 유형 1" ],
    "developmentYears" : [ 2024 ],
    "professor" : "담당 교수 1",
    "participants" : [ "학생 1", "학생 2" ],
    "object" : "page",
    "id" : "노션 object 아이디",
    "cover" : "커버 이미지 link",
    "url" : "노션 redirect url"
  }, {
    "title" : "title",
    "dataTypes" : [ "주제 1", "주제 2" ],
    "topics" : [ "데이터 유형 1" ],
    "developmentYears" : [ 2024 ],
    "professor" : "담당 교수 1",
    "participants" : [ "학생 1", "학생 2", "학생 3" ],
    "object" : "page",
    "id" : "노션 object 아이디",
    "cover" : "커버 이미지 link",
    "url" : "노션 redirect url"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].cover

String

true

커버 이미지 link

content[].title

String

true

AI 데이터셋 제목

content[].topics

Array

true

주제 분류

content[].dataTypes

Array

true

데이터 유형

content[].developmentYears

Array

true

구축 년도

content[].professor

String

true

담당 교수

content[].participants

Array

true

참여 학생

content[].url

String

true

노션 redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부

JOB INFO API


JOB INFO 리스트 조회 (POST /jobInfos)

Query parameters

Parameter Required Description

page

false

페이지 번호 [default: 0]

size

false

페이지 크기 [default: 10]

Request fields

Name Type Required Description

company

String

true

기업명

jobTypes

Array

true

고용 형태

region

String

true

근무 지역

position

String

true

채용 포지션

hiringTime

String

true

채용 시점

state

Array

true

채용 상태

HTTP request

POST /jobInfos HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 198
Host: localhost:8080

{
  "company" : "기업명 1",
  "jobTypes" : [ "고용 형태 1" ],
  "region" : "근무 지역 1",
  "position" : "채용 포지션 1",
  "hiringTime" : "채용 시점 1",
  "state" : [ "open" ]
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 1295

{
  "totalPages" : 1,
  "totalElements" : 2,
  "first" : true,
  "last" : true,
  "size" : 10,
  "content" : [ {
    "company" : "기업명 1",
    "jobTypes" : [ "고용 형태 1" ],
    "region" : "근무 지역 1",
    "position" : "채용 포지션 1",
    "logo" : "로고 url",
    "salary" : "연봉",
    "website" : "웹사이트 url",
    "state" : [ "open" ],
    "hiringTime" : "채용 시점 1",
    "object" : "page",
    "id" : "노션 object 아이디 1",
    "url" : "redirect url"
  }, {
    "company" : "기업명 1",
    "jobTypes" : [ "고용 형태 1", "고용 형태 2" ],
    "region" : "근무 지역 2",
    "position" : "채용 포지션 1, 채용 시점 2",
    "logo" : "로고 url",
    "salary" : "연봉",
    "website" : "웹사이트 url",
    "state" : [ "open" ],
    "hiringTime" : "채용 시점 1",
    "object" : "page",
    "id" : "노션 object 아이디 2",
    "url" : "redirect url"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "sorted" : false,
    "unsorted" : true
  },
  "numberOfElements" : 2,
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "offset" : 0,
    "paged" : true,
    "unpaged" : false
  },
  "empty" : false
}

Response fields

Name Type Required Description

content[].object

String

true

object 종류

content[].id

String

true

노션 object 아이디

content[].company

String

true

기업명

content[].jobTypes

Array

true

고용 형태

content[].region

String

true

근무 지역

content[].position

String

true

채용 포지션

content[].logo

String

true

로고 url

content[].salary

String

true

연봉

content[].website

String

true

웹사이트 url

content[].state

Array

true

채용 상태

content[].hiringTime

String

true

채용 시점

content[].url

String

true

redirect url

pageable

Object

true

페이지 정보

pageable.pageNumber

Number

true

현재 페이지 번호

pageable.pageSize

Number

true

페이지 당 요소 수

pageable.sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

true

정렬된 상태인지 여부

pageable.sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

pageable.offset

Number

true

오프셋

pageable.paged

Boolean

true

페이징된 여부

pageable.unpaged

Boolean

true

페이징되지 않은 여부

totalElements

Number

true

전체 요소 수

totalPages

Number

true

전체 페이지 수

size

Number

true

페이지 당 요소 수

number

Number

true

현재 페이지 번호

numberOfElements

Number

true

현재 페이지 요소 수

first

Boolean

true

첫 페이지 여부

last

Boolean

true

마지막 페이지 여부

sort.empty

Boolean

true

정렬 정보가 비어있는지 여부

sort.unsorted

Boolean

true

정렬되지 않은 상태인지 여부

sort.sorted

Boolean

true

정렬된 상태인지 여부

empty

Boolean

true

비어있는 페이지 여부