소개

API 문서입니다.

공통 사항

API 문서에서 공통으로 사용되는 내용을 정의합니다.

공통 응답 구조

성공 응답

{
  "status": 200,
  "data": { ... }
}
  • status: HTTP 상태 코드

  • data: 실제 응답 데이터

실패 응답

{
  "status": 400,
  "data": {
    "errorCode": "COMMON_2",
    "message": "요청 변수가 잘못되었습니다."
  }
}
  • status: HTTP 상태 코드

  • errorCode: 에러 코드

  • message: 에러 메시지

상태 코드

상태 코드 의미 설명

200

OK

요청이 성공적으로 처리됨

401

Unauthorized

인증 실패 (잘못된 토큰 등)

404

Not Found

리소스를 찾을 수 없음

409

Conflict

리소스 충돌 (중복 등)

500

Internal Server Error

서버 내부 오류

Authorization

Authorization: Bearer 액세스 토큰 (필수)
  • 형식: Bearer {token}

  • 인증이 필요한 API 호출 시 반드시 포함

Auth API

1. 학생 로그인

요청(Request)

POST /api/auth/login HTTP/1.1
Content-Type: application/json
Content-Length: 51
Host: iptdesign.mycafe24.com

{
  "password" : "1234",
  "loginId" : "a1001"
}

요청 필드 설명(Request Fields)

Path Type Description

loginId

String

로그인 ID

password

String

비밀번호

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "accessToken" : "access-token-example",
    "refreshToken" : "refresh-token-example",
    "userRole" : null
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.accessToken

String

액세스 토큰

data.refreshToken

String

리프레시 토큰

data.userRole

Null

사용자 역할 (학생 로그인 시 null)

1-1. 학생 로그인 (비밀번호 틀림)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 123

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_4",
    "message" : "비밀번호가 틀렸습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_4

data.message

String

비밀번호가 틀렸습니다.

1-2. 학생 로그인 (사용자 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음.

1-3. 학생 로그인 (권한 없음)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 114

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_5",
    "message" : "권한이 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_5

data.message

String

권한이 없습니다.

2. 강사 로그인

요청(Request)

POST /api/auth/teacher/login HTTP/1.1
Content-Type: application/json
Content-Length: 55
Host: iptdesign.mycafe24.com

{
  "password" : "1234",
  "loginId" : "teacher01"
}

요청 필드 설명(Request Fields)

Path Type Description

loginId

String

로그인 ID

password

String

비밀번호

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "accessToken" : "access-token-example",
    "refreshToken" : "refresh-token-example",
    "userRole" : "TEACHER"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.accessToken

String

액세스 토큰

data.refreshToken

String

리프레시 토큰

data.userRole

String

사용자 역할 (TEACHER, ADMIN)

2-1. 강사 로그인 (비밀번호 틀림)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 123

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_4",
    "message" : "비밀번호가 틀렸습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_4

data.message

String

비밀번호가 틀렸습니다.

2-2. 강사 로그인 (사용자 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음.

2-3. 강사 로그인 (권한 없음)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 114

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_5",
    "message" : "권한이 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_5

data.message

String

권한이 없습니다.

3. 코드 확인

요청(Request)

GET /api/auth/check-code?code=ABC123 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

code

참여 코드

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "name" : "1팀",
    "teamId" : 1
  }, {
    "name" : "2팀",
    "teamId" : 2
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].teamId

Number

팀 ID

data[].name

String

팀 이름

3-1. 코드 확인 (존재하지 않는 코드)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 127

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_1",
    "message" : "코드가 존재하지 않습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

코드가 존재하지 않습니다.

4. 로그인 ID 중복 확인

요청(Request)

GET /api/auth/check-id?loginId=a1001 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

loginId

확인할 로그인 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

4-1. 로그인 ID 중복 확인 (이미 존재하는 ID)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 127

{
  "status" : 409,
  "data" : {
    "errorCode" : "USER_3",
    "message" : "이미 가입된 사용자입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

USER_3

data.message

String

이미 가입된 사용자입니다.

5. 회원가입

요청(Request)

POST /api/auth/signup HTTP/1.1
Content-Type: application/json
Content-Length: 90
Host: iptdesign.mycafe24.com

{
  "code" : "ABC123",
  "teamId" : 1,
  "password" : "1234",
  "loginId" : "a1001"
}

요청 필드 설명(Request Fields)

Path Type Description

loginId

String

로그인 ID

password

String

비밀번호

code

String

참여 코드

teamId

Number

팀 ID

응답(Response)

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 75

{
  "status" : 201,
  "data" : {
    "message" : "생성 완료"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

6. 로그아웃

인증 필요 (Authorization: Bearer {token})

요청(Request)

POST /api/auth/logout HTTP/1.1
Host: iptdesign.mycafe24.com
Content-Type: application/x-www-form-urlencoded

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

Admin API

모든 Admin API는 인증 필요 (Authorization: Bearer {token}) + 관리자 권한 필요

1. 진행중인 전체 강의실 목록 조회

요청(Request)

GET /api/admin/teach HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "ddTerm" : 1,
    "ddYear" : 2026,
    "enddate" : "2026-06-30T18:00:00",
    "gameId" : 1,
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "missionId" : 3,
    "name" : "임팩트디자인 1반",
    "numTeam" : 4,
    "sequence" : 2,
    "startdate" : "2026-03-01T09:00:00",
    "statusCeo" : null,
    "subject" : "사회문제 해결",
    "summary" : "임팩트디자인 수업입니다.",
    "totalDd" : 100
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].gameId

Number

강의실 ID

data[].name

String

강의실 이름

data[].numTeam

Number

팀 수

data[].totalDd

Number

총 의사결정일 수

data[].missionId

Number

현재 미션 ID

data[].sequence

Number

미션 순서 번호

data[].subject

String

미션 제목

data[].summary

String

미션 요약 설명

data[].startdate

String

미션 시작일시

data[].enddate

String

미션 종료일시

data[].ddYear

Number

의사결정 연도

data[].ddTerm

Number

의사결정 분기/기간

data[].statusCeo

Null

CEO 상태

data[].imageUrl

String

이미지 URL

1-1. 진행중인 전체 강의실 목록 조회 (사용자 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음.

1-2. 진행중인 전체 강의실 목록 조회 (권한 없음)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 114

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_5",
    "message" : "권한이 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_5

data.message

String

권한이 없습니다.

2. 전체 강의실 카테고리별 조회

요청(Request)

GET /api/admin/teach/list HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "completed" : [ {
      "ddTerm" : 2,
      "ddYear" : 2025,
      "enddate" : "2025-12-20T18:00:00",
      "gameId" : 3,
      "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/3/image.png",
      "missionId" : 5,
      "name" : "임팩트디자인 3반",
      "numTeam" : 5,
      "sequence" : 4,
      "startdate" : "2025-09-01T09:00:00",
      "statusCeo" : null,
      "subject" : "최종 발표",
      "summary" : "종료된 수업입니다.",
      "totalDd" : 16
    } ],
    "etc" : [ ],
    "inProgress" : [ {
      "ddTerm" : 1,
      "ddYear" : 2026,
      "enddate" : "2026-06-30T18:00:00",
      "gameId" : 1,
      "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
      "missionId" : 3,
      "name" : "임팩트디자인 1반",
      "numTeam" : 4,
      "sequence" : 2,
      "startdate" : "2026-03-01T09:00:00",
      "statusCeo" : null,
      "subject" : "사회문제 해결",
      "summary" : "임팩트디자인 수업입니다.",
      "totalDd" : 100
    } ],
    "setting" : [ {
      "ddTerm" : null,
      "ddYear" : null,
      "enddate" : null,
      "gameId" : 2,
      "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/%ED%98%84%EB%8C%80%EC%9E%90%EB%8F%99%EC%B0%A8.png",
      "missionId" : null,
      "name" : "임팩트디자인 2반",
      "numTeam" : 3,
      "sequence" : null,
      "startdate" : null,
      "statusCeo" : null,
      "subject" : null,
      "summary" : "설정중인 수업입니다.",
      "totalDd" : 16
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.inProgress[]

Array

진행중인 강의실 목록

data.inProgress[].gameId

Number

강의실 ID

data.inProgress[].name

String

강의실 이름

data.inProgress[].numTeam

Number

팀 수

data.inProgress[].totalDd

Number

총 의사결정일 수

data.inProgress[].missionId

Number

현재 미션 ID

data.inProgress[].sequence

Number

미션 순서 번호

data.inProgress[].subject

String

미션 제목

data.inProgress[].summary

String

미션 요약 설명

data.inProgress[].startdate

String

미션 시작일

data.inProgress[].enddate

String

미션 종료일

data.inProgress[].ddYear

Number

의사결정 연도

data.inProgress[].ddTerm

Number

의사결정 분기/기간

data.inProgress[].statusCeo

Null

CEO 상태

data.inProgress[].imageUrl

String

이미지 URL

data.setting[]

Array

설정중인 강의실 목록

data.setting[].gameId

Number

강의실 ID

data.setting[].name

String

강의실 이름

data.setting[].numTeam

Number

팀 수

data.setting[].totalDd

Number

총 의사결정일 수

data.setting[].missionId

Null

현재 미션 ID

data.setting[].sequence

Null

미션 순서 번호

data.setting[].subject

Null

미션 제목

data.setting[].summary

String

미션 요약 설명

data.setting[].startdate

Null

미션 시작일

data.setting[].enddate

Null

미션 종료일

data.setting[].ddYear

Null

의사결정 연도

data.setting[].ddTerm

Null

의사결정 분기/기간

data.setting[].statusCeo

Null

CEO 상태

data.setting[].imageUrl

String

이미지 URL

data.completed[]

Array

종료된 강의실 목록

data.completed[].gameId

Number

강의실 ID

data.completed[].name

String

강의실 이름

data.completed[].numTeam

Number

팀 수

data.completed[].totalDd

Number

총 의사결정일 수

data.completed[].missionId

Number

현재 미션 ID

data.completed[].sequence

Number

미션 순서 번호

data.completed[].subject

String

미션 제목

data.completed[].summary

String

미션 요약 설명

data.completed[].startdate

String

미션 시작일

data.completed[].enddate

String

미션 종료일

data.completed[].ddYear

Number

의사결정 연도

data.completed[].ddTerm

Number

의사결정 분기/기간

data.completed[].statusCeo

Null

CEO 상태

data.completed[].imageUrl

String

이미지 URL

data.etc[]

Array

기타 강의실 목록

2-1. 전체 강의실 카테고리별 조회 (사용자 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음.

2-2. 전체 강의실 카테고리별 조회 (권한 없음)

응답(Response)

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 114

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_5",
    "message" : "권한이 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_5

data.message

String

권한이 없습니다.

Impact Check API

모든 Impact Check API는 인증 필요 (Authorization: Bearer {token})

1. 임팩트 체크 조회

요청(Request)

GET /api/impact-check HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "answerId" : 1,
    "q10Score" : 5,
    "q11Score" : 4,
    "q12Score" : 3,
    "q13Text" : "사회 문제 해결에 관심이 생겼습니다.",
    "q14Text" : "팀원들과의 협업이 좋았습니다.",
    "q15Text" : "시간이 부족했습니다.",
    "q16Text" : "더 많은 사례를 보고 싶습니다.",
    "q1Score" : 5,
    "q2Score" : 4,
    "q3Score" : 3,
    "q4Score" : 5,
    "q5Score" : 4,
    "q6Score" : 3,
    "q7Score" : 5,
    "q8Score" : 4,
    "q9Score" : 3,
    "submitted" : false,
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.answerId

Number

응답 ID

data.q1Score

Number

1번 점수

data.q2Score

Number

2번 점수

data.q3Score

Number

3번 점수

data.q4Score

Number

4번 점수

data.q5Score

Number

5번 점수

data.q6Score

Number

6번 점수

data.q7Score

Number

7번 점수

data.q8Score

Number

8번 점수

data.q9Score

Number

9번 점수

data.q10Score

Number

10번 점수

data.q11Score

Number

11번 점수

data.q12Score

Number

12번 점수

data.q13Text

String

13번 텍스트 답변

data.q14Text

String

14번 텍스트 답변

data.q15Text

String

15번 텍스트 답변

data.q16Text

String

16번 텍스트 답변

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

2. 임팩트 체크 저장

요청(Request)

POST /api/impact-check HTTP/1.1
Content-Type: application/json
Content-Length: 460
Host: iptdesign.mycafe24.com

{
  "q1Score" : 5,
  "q2Score" : 4,
  "q3Score" : 3,
  "q4Score" : 5,
  "q5Score" : 4,
  "q6Score" : 3,
  "q7Score" : 5,
  "q8Score" : 4,
  "q9Score" : 3,
  "q10Score" : 5,
  "q11Score" : 4,
  "q12Score" : 3,
  "q13Text" : "사회 문제 해결에 관심이 생겼습니다.",
  "q14Text" : "팀원들과의 협업이 좋았습니다.",
  "q15Text" : "시간이 부족했습니다.",
  "q16Text" : "더 많은 사례를 보고 싶습니다."
}

요청 필드 설명(Request Fields)

Path Type Description

q1Score

Number

1번 점수

q2Score

Number

2번 점수

q3Score

Number

3번 점수

q4Score

Number

4번 점수

q5Score

Number

5번 점수

q6Score

Number

6번 점수

q7Score

Number

7번 점수

q8Score

Number

8번 점수

q9Score

Number

9번 점수

q10Score

Number

10번 점수

q11Score

Number

11번 점수

q12Score

Number

12번 점수

q13Text

String

13번 텍스트 답변

q14Text

String

14번 텍스트 답변

q15Text

String

15번 텍스트 답변

q16Text

String

16번 텍스트 답변

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "answerId" : 1,
    "q10Score" : 5,
    "q11Score" : 4,
    "q12Score" : 3,
    "q13Text" : "사회 문제 해결에 관심이 생겼습니다.",
    "q14Text" : "팀원들과의 협업이 좋았습니다.",
    "q15Text" : "시간이 부족했습니다.",
    "q16Text" : "더 많은 사례를 보고 싶습니다.",
    "q1Score" : 5,
    "q2Score" : 4,
    "q3Score" : 3,
    "q4Score" : 5,
    "q5Score" : 4,
    "q6Score" : 3,
    "q7Score" : 5,
    "q8Score" : 4,
    "q9Score" : 3,
    "submitted" : false,
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.answerId

Number

응답 ID

data.q1Score

Number

1번 점수

data.q2Score

Number

2번 점수

data.q3Score

Number

3번 점수

data.q4Score

Number

4번 점수

data.q5Score

Number

5번 점수

data.q6Score

Number

6번 점수

data.q7Score

Number

7번 점수

data.q8Score

Number

8번 점수

data.q9Score

Number

9번 점수

data.q10Score

Number

10번 점수

data.q11Score

Number

11번 점수

data.q12Score

Number

12번 점수

data.q13Text

String

13번 텍스트 답변

data.q14Text

String

14번 텍스트 답변

data.q15Text

String

15번 텍스트 답변

data.q16Text

String

16번 텍스트 답변

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

3. 임팩트 체크 제출

요청(Request)

PATCH /api/impact-check/submit HTTP/1.1
Content-Type: application/json
Content-Length: 460
Host: iptdesign.mycafe24.com

{
  "q1Score" : 5,
  "q2Score" : 4,
  "q3Score" : 3,
  "q4Score" : 5,
  "q5Score" : 4,
  "q6Score" : 3,
  "q7Score" : 5,
  "q8Score" : 4,
  "q9Score" : 3,
  "q10Score" : 5,
  "q11Score" : 4,
  "q12Score" : 3,
  "q13Text" : "사회 문제 해결에 관심이 생겼습니다.",
  "q14Text" : "팀원들과의 협업이 좋았습니다.",
  "q15Text" : "시간이 부족했습니다.",
  "q16Text" : "더 많은 사례를 보고 싶습니다."
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "answerId" : 1,
    "q10Score" : 5,
    "q11Score" : 4,
    "q12Score" : 3,
    "q13Text" : "사회 문제 해결에 관심이 생겼습니다.",
    "q14Text" : "팀원들과의 협업이 좋았습니다.",
    "q15Text" : "시간이 부족했습니다.",
    "q16Text" : "더 많은 사례를 보고 싶습니다.",
    "q1Score" : 5,
    "q2Score" : 4,
    "q3Score" : 3,
    "q4Score" : 5,
    "q5Score" : 4,
    "q6Score" : 3,
    "q7Score" : 5,
    "q8Score" : 4,
    "q9Score" : 3,
    "submitted" : true,
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.answerId

Number

응답 ID

data.q1Score

Number

1번 점수

data.q2Score

Number

2번 점수

data.q3Score

Number

3번 점수

data.q4Score

Number

4번 점수

data.q5Score

Number

5번 점수

data.q6Score

Number

6번 점수

data.q7Score

Number

7번 점수

data.q8Score

Number

8번 점수

data.q9Score

Number

9번 점수

data.q10Score

Number

10번 점수

data.q11Score

Number

11번 점수

data.q12Score

Number

12번 점수

data.q13Text

String

13번 텍스트 답변

data.q14Text

String

14번 텍스트 답변

data.q15Text

String

15번 텍스트 답변

data.q16Text

String

16번 텍스트 답변

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

3-1. 임팩트 체크 제출 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

Identity Canvas API

모든 Identity Canvas API는 인증 필요 (Authorization: Bearer {token})

1. Identity 캔버스 조회

요청(Request)

GET /api/identity-canvas HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "capability" : "데이터 분석 역량",
    "competitor" : "기존 복지 서비스",
    "culture" : "수평적 조직 문화",
    "customer" : "지역 주민",
    "etc" : "기타 사항",
    "identityId" : 1,
    "macro" : "고령화 사회",
    "mission" : "사회 문제 해결",
    "newMission" : "새로운 미션",
    "newValue" : "새로운 가치",
    "newVision" : "새로운 비전",
    "structure" : "팀 기반 구조",
    "submitted" : false,
    "tech" : "AI 기술",
    "userId" : 1,
    "value" : "협력과 혁신",
    "vision" : "지속 가능한 미래"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.identityId

Number

Identity 캔버스 ID

data.mission

String

미션

data.vision

String

비전

data.value

String

가치

data.macro

String

정책/경제

data.tech

String

기술

data.customer

String

고객/사회

data.competitor

String

경쟁자

data.capability

String

역량

data.culture

String

문화

data.structure

String

구조

data.etc

String

기타

data.newMission

String

새로운 미션

data.newVision

String

새로운 비전

data.newValue

String

새로운 가치

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

2. Identity 캔버스 저장

요청(Request)

POST /api/identity-canvas HTTP/1.1
Content-Type: application/json
Content-Length: 516
Host: iptdesign.mycafe24.com

{
  "mission" : "사회 문제 해결",
  "vision" : "지속 가능한 미래",
  "value" : "협력과 혁신",
  "macro" : "고령화 사회",
  "tech" : "AI 기술",
  "customer" : "지역 주민",
  "competitor" : "기존 복지 서비스",
  "capability" : "데이터 분석 역량",
  "culture" : "수평적 조직 문화",
  "structure" : "팀 기반 구조",
  "etc" : "기타 사항",
  "newMission" : "새로운 미션",
  "newVision" : "새로운 비전",
  "newValue" : "새로운 가치"
}

요청 필드 설명(Request Fields)

Path Type Description

mission

String

미션

vision

String

비전

value

String

가치

macro

String

정책/경제

tech

String

기술

customer

String

고객/사회

competitor

String

경쟁자

capability

String

역량

culture

String

문화

structure

String

구조

etc

String

기타

newMission

String

새로운 미션

newVision

String

새로운 비전

newValue

String

새로운 가치

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "capability" : "데이터 분석 역량",
    "competitor" : "기존 복지 서비스",
    "culture" : "수평적 조직 문화",
    "customer" : "지역 주민",
    "etc" : "기타 사항",
    "identityId" : 1,
    "macro" : "고령화 사회",
    "mission" : "사회 문제 해결",
    "newMission" : "새로운 미션",
    "newValue" : "새로운 가치",
    "newVision" : "새로운 비전",
    "structure" : "팀 기반 구조",
    "submitted" : false,
    "tech" : "AI 기술",
    "userId" : 1,
    "value" : "협력과 혁신",
    "vision" : "지속 가능한 미래"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.identityId

Number

Identity 캔버스 ID

data.mission

String

미션

data.vision

String

비전

data.value

String

가치

data.macro

String

정책/경제

data.tech

String

기술

data.customer

String

고객/사회

data.competitor

String

경쟁자

data.capability

String

역량

data.culture

String

문화

data.structure

String

구조

data.etc

String

기타

data.newMission

String

새로운 미션

data.newVision

String

새로운 비전

data.newValue

String

새로운 가치

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

2-1. Identity 캔버스 저장 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

3. Identity 캔버스 제출

요청(Request)

PATCH /api/identity-canvas/submit HTTP/1.1
Content-Type: application/json
Content-Length: 516
Host: iptdesign.mycafe24.com

{
  "mission" : "사회 문제 해결",
  "vision" : "지속 가능한 미래",
  "value" : "협력과 혁신",
  "macro" : "고령화 사회",
  "tech" : "AI 기술",
  "customer" : "지역 주민",
  "competitor" : "기존 복지 서비스",
  "capability" : "데이터 분석 역량",
  "culture" : "수평적 조직 문화",
  "structure" : "팀 기반 구조",
  "etc" : "기타 사항",
  "newMission" : "새로운 미션",
  "newVision" : "새로운 비전",
  "newValue" : "새로운 가치"
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "capability" : "데이터 분석 역량",
    "competitor" : "기존 복지 서비스",
    "culture" : "수평적 조직 문화",
    "customer" : "지역 주민",
    "etc" : "기타 사항",
    "identityId" : 1,
    "macro" : "고령화 사회",
    "mission" : "사회 문제 해결",
    "newMission" : "새로운 미션",
    "newValue" : "새로운 가치",
    "newVision" : "새로운 비전",
    "structure" : "팀 기반 구조",
    "submitted" : true,
    "tech" : "AI 기술",
    "userId" : 1,
    "value" : "협력과 혁신",
    "vision" : "지속 가능한 미래"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.identityId

Number

Identity 캔버스 ID

data.mission

String

미션

data.vision

String

비전

data.value

String

가치

data.macro

String

정책/경제

data.tech

String

기술

data.customer

String

고객/사회

data.competitor

String

경쟁자

data.capability

String

역량

data.culture

String

문화

data.structure

String

구조

data.etc

String

기타

data.newMission

String

새로운 미션

data.newVision

String

새로운 비전

data.newValue

String

새로운 가치

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

3-1. Identity 캔버스 제출 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

Flow Canvas API

모든 Flow Canvas API는 인증 필요 (Authorization: Bearer {token})

1. Flow 캔버스 조회

요청(Request)

GET /api/flow-canvas HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "goals" : [ {
      "goalDescription" : "지역 사회 문제를 해결하는 솔루션 개발",
      "goalId" : 1,
      "goalTitle" : "사회적 가치 창출",
      "orderNo" : 1,
      "strategicActivities" : [ {
        "activityId" : 1,
        "activityMetric" : "서비스 개선 횟수",
        "interCriteria" : "월 2회 이상",
        "orderNo" : 1
      } ],
      "tacticals" : [ {
        "metricId" : 1,
        "orderNo" : 1,
        "tacticalGoal" : "90% 이상",
        "tacticalMetric" : "고객 만족도"
      } ]
    } ],
    "newVision" : "지속 가능한 미래",
    "submitted" : false
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.newVision

String

새로운 비전 (Identity 캔버스에서 가져옴)

data.goals[]

Array

목표 목록

data.goals[].goalId

Number

목표 ID

data.goals[].goalTitle

String

목표 제목

data.goals[].goalDescription

String

목표 설명

data.goals[].orderNo

Number

목표 순서(1인당 3개)

data.goals[].tacticals[]

Array

전술 지표 목록(목표당 3개)

data.goals[].tacticals[].metricId

Number

전술적 성과 지표 ID

data.goals[].tacticals[].tacticalMetric

String

전술적 성과 지표

data.goals[].tacticals[].tacticalGoal

String

전술 목표

data.goals[].tacticals[].orderNo

Number

지표 순서

data.goals[].strategicActivities[]

Array

전략 활동 목록(목표당 3개)

data.goals[].strategicActivities[].activityId

Number

전략적 활동 지표 ID

data.goals[].strategicActivities[].activityMetric

String

전략적 활동 지표

data.goals[].strategicActivities[].interCriteria

String

내재화 기준

data.goals[].strategicActivities[].orderNo

Number

활동 순서

data.submitted

Boolean

제출 여부

2. Flow 캔버스 저장

요청(Request)

POST /api/flow-canvas HTTP/1.1
Content-Type: application/json
Content-Length: 541
Host: iptdesign.mycafe24.com

{
  "goals" : [ {
    "tacticals" : [ {
      "tacticalGoal" : "90% 이상",
      "orderNo" : 1,
      "metricId" : 1,
      "tacticalMetric" : "고객 만족도"
    } ],
    "goalDescription" : "지역 사회 문제를 해결하는 솔루션 개발",
    "strategicActivities" : [ {
      "activityMetric" : "서비스 개선 횟수",
      "orderNo" : 1,
      "activityId" : 1,
      "interCriteria" : "월 2회 이상"
    } ],
    "goalTitle" : "사회적 가치 창출",
    "orderNo" : 1,
    "goalId" : 1
  } ]
}

요청 필드 설명(Request Fields)

Path Type Description

goals[]

Array

목표 목록

goals[].goalId

Number

목표 ID (수정 시)

goals[].goalTitle

String

목표 제목

goals[].goalDescription

String

목표 설명

goals[].orderNo

Number

목표 순서(1인당 3개)

goals[].tacticals[]

Array

전술 지표 목록(목표당 3개)

goals[].tacticals[].metricId

Number

전술적 성과 지표 ID (수정 시)

goals[].tacticals[].tacticalMetric

String

전술적 성과 지표

goals[].tacticals[].tacticalGoal

String

전술 목표

goals[].tacticals[].orderNo

Number

지표 순서

goals[].strategicActivities[]

Array

전략 활동 목록(목표당 3개)

goals[].strategicActivities[].activityId

Number

전략적 활동 지표 ID (수정 시)

goals[].strategicActivities[].activityMetric

String

전략적 활동 지표

goals[].strategicActivities[].interCriteria

String

내재화 기준 기준

goals[].strategicActivities[].orderNo

Number

활동 순서

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "goals" : [ {
      "goalDescription" : "지역 사회 문제를 해결하는 솔루션 개발",
      "goalId" : 1,
      "goalTitle" : "사회적 가치 창출",
      "orderNo" : 1,
      "strategicActivities" : [ {
        "activityId" : 1,
        "activityMetric" : "서비스 개선 횟수",
        "interCriteria" : "월 2회 이상",
        "orderNo" : 1
      } ],
      "tacticals" : [ {
        "metricId" : 1,
        "orderNo" : 1,
        "tacticalGoal" : "90% 이상",
        "tacticalMetric" : "고객 만족도"
      } ]
    } ],
    "newVision" : "지속 가능한 미래",
    "submitted" : false
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.newVision

String

새로운 비전

data.goals[]

Array

목표 목록

data.goals[].goalId

Number

목표 ID

data.goals[].goalTitle

String

목표 제목

data.goals[].goalDescription

String

목표 설명

data.goals[].orderNo

Number

목표 순서(1인당 3개)

data.goals[].tacticals[]

Array

전술 지표 목록(목표당 3개)

data.goals[].tacticals[].metricId

Number

전술적 성과 지표 ID

data.goals[].tacticals[].tacticalMetric

String

전술적 성과 지표

data.goals[].tacticals[].tacticalGoal

String

전술 목표

data.goals[].tacticals[].orderNo

Number

지표 순서

data.goals[].strategicActivities[]

Array

전략 활동 목록(목표당 3개)

data.goals[].strategicActivities[].activityId

Number

전략적 활동 지표 ID

data.goals[].strategicActivities[].activityMetric

String

전략적 활동 지표

data.goals[].strategicActivities[].interCriteria

String

내재화 기준

data.goals[].strategicActivities[].orderNo

Number

활동 순서

data.submitted

Boolean

제출 여부

2-1. Flow 캔버스 저장 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

3. Flow 캔버스 제출

요청(Request)

PATCH /api/flow-canvas/submit HTTP/1.1
Content-Type: application/json
Content-Length: 541
Host: iptdesign.mycafe24.com

{
  "goals" : [ {
    "tacticals" : [ {
      "tacticalGoal" : "90% 이상",
      "orderNo" : 1,
      "metricId" : 1,
      "tacticalMetric" : "고객 만족도"
    } ],
    "goalDescription" : "지역 사회 문제를 해결하는 솔루션 개발",
    "strategicActivities" : [ {
      "activityMetric" : "서비스 개선 횟수",
      "orderNo" : 1,
      "activityId" : 1,
      "interCriteria" : "월 2회 이상"
    } ],
    "goalTitle" : "사회적 가치 창출",
    "orderNo" : 1,
    "goalId" : 1
  } ]
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "goals" : [ {
      "goalDescription" : "지역 사회 문제를 해결하는 솔루션 개발",
      "goalId" : 1,
      "goalTitle" : "사회적 가치 창출",
      "orderNo" : 1,
      "strategicActivities" : [ {
        "activityId" : 1,
        "activityMetric" : "서비스 개선 횟수",
        "interCriteria" : "월 2회 이상",
        "orderNo" : 1
      } ],
      "tacticals" : [ {
        "metricId" : 1,
        "orderNo" : 1,
        "tacticalGoal" : "90% 이상",
        "tacticalMetric" : "고객 만족도"
      } ]
    } ],
    "newVision" : "지속 가능한 미래",
    "submitted" : true
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.newVision

String

새로운 비전

data.goals[]

Array

목표 목록

data.goals[].goalId

Number

목표 ID

data.goals[].goalTitle

String

목표 제목

data.goals[].goalDescription

String

목표 설명

data.goals[].orderNo

Number

목표 순서(1인당 3개)

data.goals[].tacticals[]

Array

전술 지표 목록(목표당 3개)

data.goals[].tacticals[].metricId

Number

전술적 성과 지표 ID

data.goals[].tacticals[].tacticalMetric

String

전술적 성과 지표

data.goals[].tacticals[].tacticalGoal

String

전술 목표

data.goals[].tacticals[].orderNo

Number

지표 순서

data.goals[].strategicActivities[]

Array

전략 활동 목록(목표당 3개)

data.goals[].strategicActivities[].activityId

Number

전략적 활동 지표 ID

data.goals[].strategicActivities[].activityMetric

String

전략적 활동 지표

data.goals[].strategicActivities[].interCriteria

String

내재화 기준

data.goals[].strategicActivities[].orderNo

Number

활동 순서

data.submitted

Boolean

제출 여부

3-1. Flow 캔버스 제출 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

QuickWin Canvas API

모든 QuickWin Canvas API는 인증 필요 (Authorization: Bearer {token})

1. QuickWin 캔버스 조회

요청(Request)

GET /api/quick-win-canvas HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "환경 오염 심화",
    "painTouchPoint" : "주민 불편 사항",
    "strategicGoal" : "지역 사회 문제 해결",
    "submitted" : false,
    "taskActivities" : [ {
      "activityContent" : "캠페인 기획 회의",
      "activityId" : 1,
      "duration" : "2주",
      "orderNo" : 1,
      "processStep" : "기획"
    } ],
    "taskDescription" : "지역 환경 개선을 위한 캠페인 기획",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 100,
      "resourceName" : "홍보물"
    } ],
    "taskName" : "환경 캠페인",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "참여 인원 50명",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "주민 만족도 향상",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "팀 회의 진행",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

위기의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

추진 절차

data.taskActivities[].activityContent

String

주요 내용

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

2. QuickWin 캔버스 저장

요청(Request)

POST /api/quick-win-canvas HTTP/1.1
Content-Type: application/json
Content-Length: 845
Host: iptdesign.mycafe24.com

{
  "strategicGoal" : "지역 사회 문제 해결",
  "taskName" : "환경 캠페인",
  "taskDescription" : "지역 환경 개선을 위한 캠페인 기획",
  "crisisSignal" : "환경 오염 심화",
  "painTouchPoint" : "주민 불편 사항",
  "taskInputs" : [ {
    "inputId" : 1,
    "orderNo" : 1,
    "resourceName" : "홍보물",
    "quantity" : 100
  } ],
  "taskActivities" : [ {
    "orderNo" : 1,
    "activityId" : 1,
    "processStep" : "기획",
    "activityContent" : "캠페인 기획 회의",
    "duration" : "2주"
  } ],
  "teamwork" : {
    "workType" : "협업",
    "teamworkId" : 1,
    "activityTeamwork" : "팀 회의 진행"
  },
  "taskOutcomes" : [ {
    "outcomeContent" : "참여 인원 50명",
    "orderNo" : 1,
    "outcomeNo" : 1,
    "outcomeType" : "QUANTITATIVE"
  } ]
}

요청 필드 설명(Request Fields)

Path Type Description

strategicGoal

String

전략 목표

taskName

String

과제명

taskDescription

String

주요 내용

crisisSignal

String

위기의 신호

painTouchPoint

String

페인 포인트

taskInputs[]

Array

투입 자원 목록

taskInputs[].inputId

Number

투입 ID (수정 시)

taskInputs[].resourceName

String

필요 자원

taskInputs[].quantity

Number

수량

taskInputs[].orderNo

Number

순서

taskActivities[]

Array

활동 목록

taskActivities[].activityId

Number

활동 ID (수정 시)

taskActivities[].processStep

String

추진 절차

taskActivities[].activityContent

String

주요 내용

taskActivities[].duration

String

소요 기간

taskActivities[].orderNo

Number

순서

teamwork

Object

팀워크

teamwork.teamworkId

Number

팀워크 ID (수정 시)

teamwork.activityTeamwork

String

활동 팀워크

teamwork.workType

String

산출 팀워크

taskOutcomes[]

Array

성과 목록

taskOutcomes[].outcomeNo

Number

성과 번호 (수정 시)

taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

taskOutcomes[].outcomeContent

String

성과 내용

taskOutcomes[].orderNo

Number

순서

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "환경 오염 심화",
    "painTouchPoint" : "주민 불편 사항",
    "strategicGoal" : "지역 사회 문제 해결",
    "submitted" : false,
    "taskActivities" : [ {
      "activityContent" : "캠페인 기획 회의",
      "activityId" : 1,
      "duration" : "2주",
      "orderNo" : 1,
      "processStep" : "기획"
    } ],
    "taskDescription" : "지역 환경 개선을 위한 캠페인 기획",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 100,
      "resourceName" : "홍보물"
    } ],
    "taskName" : "환경 캠페인",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "참여 인원 50명",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "주민 만족도 향상",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "팀 회의 진행",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

위기의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

추진 절차

data.taskActivities[].activityContent

String

주요 내용

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

2-1. QuickWin 캔버스 저장 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

3. QuickWin 캔버스 제출

요청(Request)

PATCH /api/quick-win-canvas/submit HTTP/1.1
Content-Type: application/json
Content-Length: 845
Host: iptdesign.mycafe24.com

{
  "strategicGoal" : "지역 사회 문제 해결",
  "taskName" : "환경 캠페인",
  "taskDescription" : "지역 환경 개선을 위한 캠페인 기획",
  "crisisSignal" : "환경 오염 심화",
  "painTouchPoint" : "주민 불편 사항",
  "taskInputs" : [ {
    "inputId" : 1,
    "orderNo" : 1,
    "resourceName" : "홍보물",
    "quantity" : 100
  } ],
  "taskActivities" : [ {
    "orderNo" : 1,
    "activityId" : 1,
    "processStep" : "기획",
    "activityContent" : "캠페인 기획 회의",
    "duration" : "2주"
  } ],
  "teamwork" : {
    "workType" : "협업",
    "teamworkId" : 1,
    "activityTeamwork" : "팀 회의 진행"
  },
  "taskOutcomes" : [ {
    "outcomeContent" : "참여 인원 50명",
    "orderNo" : 1,
    "outcomeNo" : 1,
    "outcomeType" : "QUANTITATIVE"
  } ]
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "환경 오염 심화",
    "painTouchPoint" : "주민 불편 사항",
    "strategicGoal" : "지역 사회 문제 해결",
    "submitted" : true,
    "taskActivities" : [ {
      "activityContent" : "캠페인 기획 회의",
      "activityId" : 1,
      "duration" : "2주",
      "orderNo" : 1,
      "processStep" : "기획"
    } ],
    "taskDescription" : "지역 환경 개선을 위한 캠페인 기획",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 100,
      "resourceName" : "홍보물"
    } ],
    "taskName" : "환경 캠페인",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "참여 인원 50명",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "주민 만족도 향상",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "팀 회의 진행",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

위기의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

추진 절차

data.taskActivities[].activityContent

String

주요 내용

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

3-1. QuickWin 캔버스 제출 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

BuildWin Canvas API

모든 BuildWin Canvas API는 인증 필요 (Authorization: Bearer {token})

1. BuildWin 캔버스 조회

요청(Request)

GET /api/build-win-canvas HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "시장 진입 지연",
    "painTouchPoint" : "사용자 피드백 부족",
    "strategicGoal" : "비즈니스 모델 구축",
    "submitted" : false,
    "taskActivities" : [ {
      "activityContent" : "서비스 아키텍처 설계",
      "activityId" : 1,
      "duration" : "3주",
      "orderNo" : 1,
      "processStep" : "설계"
    } ],
    "taskDescription" : "MVP 기반 서비스 프로토타입 제작",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 3,
      "resourceName" : "개발 인력"
    } ],
    "taskName" : "서비스 프로토타입 개발",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "프로토타입 완성률 100%",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "사용자 테스트 완료",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "주간 스프린트 회의",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

변화의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

젼환 단계

data.taskActivities[].activityContent

String

전환 활동

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

2. BuildWin 캔버스 저장

요청(Request)

POST /api/build-win-canvas HTTP/1.1
Content-Type: application/json
Content-Length: 890
Host: iptdesign.mycafe24.com

{
  "strategicGoal" : "비즈니스 모델 구축",
  "taskName" : "서비스 프로토타입 개발",
  "taskDescription" : "MVP 기반 서비스 프로토타입 제작",
  "crisisSignal" : "시장 진입 지연",
  "painTouchPoint" : "사용자 피드백 부족",
  "taskInputs" : [ {
    "inputId" : 1,
    "orderNo" : 1,
    "resourceName" : "개발 인력",
    "quantity" : 3
  } ],
  "taskActivities" : [ {
    "orderNo" : 1,
    "activityId" : 1,
    "processStep" : "설계",
    "activityContent" : "서비스 아키텍처 설계",
    "duration" : "3주"
  } ],
  "teamwork" : {
    "workType" : "협업",
    "teamworkId" : 1,
    "activityTeamwork" : "주간 스프린트 회의"
  },
  "taskOutcomes" : [ {
    "outcomeContent" : "프로토타입 완성률 100%",
    "orderNo" : 1,
    "outcomeNo" : 1,
    "outcomeType" : "QUANTITATIVE"
  } ]
}

요청 필드 설명(Request Fields)

Path Type Description

strategicGoal

String

전략 목표

taskName

String

과제명

taskDescription

String

주요 내용

crisisSignal

String

변화의 신호

painTouchPoint

String

페인 포인트

taskInputs[]

Array

투입 자원 목록

taskInputs[].inputId

Number

투입 ID (수정 시)

taskInputs[].resourceName

String

필요 자원

taskInputs[].quantity

Number

수량

taskInputs[].orderNo

Number

순서

taskActivities[]

Array

활동 목록

taskActivities[].activityId

Number

활동 ID (수정 시)

taskActivities[].processStep

String

전환 단계

taskActivities[].activityContent

String

전환 활동

taskActivities[].duration

String

소요 기간

taskActivities[].orderNo

Number

순서

teamwork

Object

팀워크

teamwork.teamworkId

Number

팀워크 ID (수정 시)

teamwork.activityTeamwork

String

활동 팀워크

teamwork.workType

String

산출 팀워크

taskOutcomes[]

Array

성과 목록

taskOutcomes[].outcomeNo

Number

성과 번호 (수정 시)

taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

taskOutcomes[].outcomeContent

String

성과 내용

taskOutcomes[].orderNo

Number

순서

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "시장 진입 지연",
    "painTouchPoint" : "사용자 피드백 부족",
    "strategicGoal" : "비즈니스 모델 구축",
    "submitted" : false,
    "taskActivities" : [ {
      "activityContent" : "서비스 아키텍처 설계",
      "activityId" : 1,
      "duration" : "3주",
      "orderNo" : 1,
      "processStep" : "설계"
    } ],
    "taskDescription" : "MVP 기반 서비스 프로토타입 제작",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 3,
      "resourceName" : "개발 인력"
    } ],
    "taskName" : "서비스 프로토타입 개발",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "프로토타입 완성률 100%",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "사용자 테스트 완료",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "주간 스프린트 회의",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

변화의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

전환 단계

data.taskActivities[].activityContent

String

전환 활동

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

2-1. BuildWin 캔버스 저장 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

3. BuildWin 캔버스 제출

요청(Request)

PATCH /api/build-win-canvas/submit HTTP/1.1
Content-Type: application/json
Content-Length: 890
Host: iptdesign.mycafe24.com

{
  "strategicGoal" : "비즈니스 모델 구축",
  "taskName" : "서비스 프로토타입 개발",
  "taskDescription" : "MVP 기반 서비스 프로토타입 제작",
  "crisisSignal" : "시장 진입 지연",
  "painTouchPoint" : "사용자 피드백 부족",
  "taskInputs" : [ {
    "inputId" : 1,
    "orderNo" : 1,
    "resourceName" : "개발 인력",
    "quantity" : 3
  } ],
  "taskActivities" : [ {
    "orderNo" : 1,
    "activityId" : 1,
    "processStep" : "설계",
    "activityContent" : "서비스 아키텍처 설계",
    "duration" : "3주"
  } ],
  "teamwork" : {
    "workType" : "협업",
    "teamworkId" : 1,
    "activityTeamwork" : "주간 스프린트 회의"
  },
  "taskOutcomes" : [ {
    "outcomeContent" : "프로토타입 완성률 100%",
    "orderNo" : 1,
    "outcomeNo" : 1,
    "outcomeType" : "QUANTITATIVE"
  } ]
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "시장 진입 지연",
    "painTouchPoint" : "사용자 피드백 부족",
    "strategicGoal" : "비즈니스 모델 구축",
    "submitted" : true,
    "taskActivities" : [ {
      "activityContent" : "서비스 아키텍처 설계",
      "activityId" : 1,
      "duration" : "3주",
      "orderNo" : 1,
      "processStep" : "설계"
    } ],
    "taskDescription" : "MVP 기반 서비스 프로토타입 제작",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 3,
      "resourceName" : "개발 인력"
    } ],
    "taskName" : "서비스 프로토타입 개발",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "프로토타입 완성률 100%",
      "outcomeNo" : 1,
      "outcomeType" : "QUANTITATIVE"
    }, {
      "orderNo" : 2,
      "outcomeContent" : "사용자 테스트 완료",
      "outcomeNo" : 2,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "주간 스프린트 회의",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 1
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

변화의 신호

data.painTouchPoint

String

페인 포인트

data.userId

Number

사용자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

전환 단계

data.taskActivities[].activityContent

String

전환 활동

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

성과 목록

data.taskOutcomes[].outcomeNo

Number

성과 번호

data.taskOutcomes[].outcomeType

String

성과 유형 (QUANTITATIVE, QUALITATIVE)

data.taskOutcomes[].outcomeContent

String

성과 내용

data.taskOutcomes[].orderNo

Number

순서

3-1. BuildWin 캔버스 제출 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

Funding API

모든 Funding API는 인증 필요 (Authorization: Bearer {token})
canvasType 경로 변수: build 또는 quick

1. 투자 대상 팀 목록 조회

요청(Request)

GET /api/funding/build/teams HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "myTeamId" : 1,
    "teams" : [ {
      "businessName" : "그린테크",
      "teamId" : 2,
      "teamName" : "2팀"
    }, {
      "businessName" : "에듀플러스",
      "teamId" : 3,
      "teamName" : "3팀"
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.teams[]

Array

투자 대상 팀 목록

data.teams[].teamId

Number

팀 ID

data.teams[].teamName

String

팀 이름

data.teams[].businessName

String

실행 과제명

data.myTeamId

Number

내 팀 ID

2. 특정 팀 투자 정보 조회

요청(Request)

GET /api/funding/build/investment?teamId=2 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

대상 팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "businessName" : "그린테크",
    "intentIndex" : 1,
    "investmentPrice" : "50000000",
    "investmentTarget" : 2,
    "opinion" : "성장 가능성이 높은 팀입니다.",
    "score1" : 5,
    "score2" : 4,
    "score3" : 5,
    "score4" : 3,
    "score5" : 4,
    "score6" : 5,
    "score7" : 4,
    "score8" : 3,
    "score9" : 5,
    "submitted" : false,
    "teamName" : "2팀"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.intentIndex

Number

투자 의향서 인덱스

data.investmentTarget

Number

투자 대상 팀 ID

data.teamName

String

팀 이름

data.businessName

String

실행 과제명

data.investmentPrice

String

투자 금액

data.score1

Number

문제정의 A1 점수

data.score2

Number

문제정의 A2 점수

data.score3

Number

솔루션 B1 점수

data.score4

Number

솔루션 B2 점수

data.score5

Number

솔루션 B3 점수

data.score6

Number

실행력 C1 점수

data.score7

Number

실행력 C2 점수

data.score8

Number

파급효과 D1 점수

data.score9

Number

파급효과 D2 점수

data.opinion

String

종합 의견

data.submitted

Boolean

제출 여부

3. 투자 의향서 저장/수정

요청(Request)

POST /api/funding/build/investment HTTP/1.1
Content-Type: application/json
Content-Length: 298
Host: iptdesign.mycafe24.com

{
  "investmentTarget" : 2,
  "investmentPrice" : "50000000",
  "score1" : 5,
  "score2" : 4,
  "score3" : 5,
  "score4" : 3,
  "score5" : 4,
  "score6" : 5,
  "score7" : 4,
  "score8" : 3,
  "score9" : 5,
  "opinion" : "성장 가능성이 높은 팀입니다.",
  "submit" : false
}

요청 필드 설명(Request Fields)

Path Type Description

investmentTarget

Number

투자 대상 팀 ID

investmentPrice

String

투자 금액

score1

Number

문제정의 A1 점수

score2

Number

문제정의 A2 점수

score3

Number

솔루션 B1 점수

score4

Number

솔루션 B2 점수

score5

Number

솔루션 B3 점수

score6

Number

실행력 C1 점수

score7

Number

실행력 C2 점수

score8

Number

파급효과 D1 점수

score9

Number

파급효과 D2 점수

opinion

String

종합 의견

submit

Boolean

제출 여부 (true: 제출, false: 임시저장)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "businessName" : "그린테크",
    "intentIndex" : 1,
    "investmentPrice" : "50000000",
    "investmentTarget" : 2,
    "opinion" : "성장 가능성이 높은 팀입니다.",
    "score1" : 5,
    "score2" : 4,
    "score3" : 5,
    "score4" : 3,
    "score5" : 4,
    "score6" : 5,
    "score7" : 4,
    "score8" : 3,
    "score9" : 5,
    "submitted" : false,
    "teamName" : "2팀"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.intentIndex

Number

투자 의향서 인덱스

data.investmentTarget

Number

투자 대상 팀 ID

data.teamName

String

팀 이름

data.businessName

String

실행 과제명

data.investmentPrice

String

투자 금액

data.score1

Number

문제정의 A1 점수

data.score2

Number

문제정의 A2 점수

data.score3

Number

솔루션 B1 점수

data.score4

Number

솔루션 B2 점수

data.score5

Number

솔루션 B3 점수

data.score6

Number

실행력 C1 점수

data.score7

Number

실행력 C2 점수

data.score8

Number

파급효과 D1 점수

data.score9

Number

파급효과 D2 점수

data.opinion

String

종합 의견

data.submitted

Boolean

제출 여부

3-1. 투자 의향서 저장 (이미 제출 완료)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

3-2. 투자 의향서 저장 (투자 한도 초과)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 150

{
  "status" : 409,
  "data" : {
    "errorCode" : "FUNDING_1",
    "message" : "총 투자 금액이 1억을 초과할 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

FUNDING_1

data.message

String

총 투자 금액이 1억을 초과할 수 없습니다.

4. 내 투자 포트폴리오 조회

요청(Request)

GET /api/funding/build/portfolio HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "investments" : [ {
      "investmentPrice" : 50000000,
      "teamId" : 2,
      "teamName" : "2팀"
    }, {
      "investmentPrice" : 30000000,
      "teamId" : 3,
      "teamName" : "3팀"
    } ],
    "maxBudget" : 100000000,
    "remainingBudget" : 20000000,
    "totalInvested" : 80000000
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.investments[]

Array

투자 목록

data.investments[].teamId

Number

팀 ID

data.investments[].teamName

String

팀 이름

data.investments[].investmentPrice

Number

투자 금액

data.totalInvested

Number

총 투자 금액

data.remainingBudget

Number

잔여 예산

data.maxBudget

Number

최대 예산 (1억)

5. 전체 팀 평가 점수 조회

요청(Request)

GET /api/funding/build/scores HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "teamScores" : [ {
      "effectScore" : 8,
      "problemScore" : 9,
      "scaleUpScore" : 9,
      "solutionScore" : 12,
      "teamId" : 1,
      "teamName" : "1팀",
      "totalScore" : 38
    }, {
      "effectScore" : 9,
      "problemScore" : 8,
      "scaleUpScore" : 7,
      "solutionScore" : 11,
      "teamId" : 2,
      "teamName" : "2팀",
      "totalScore" : 35
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.teamScores[]

Array

팀별 점수 목록

data.teamScores[].teamId

Number

팀 ID

data.teamScores[].teamName

String

팀 이름

data.teamScores[].problemScore

Number

문제정의 점수 (A1+A2)

data.teamScores[].solutionScore

Number

솔루션 점수 (B1+B2+B3)

data.teamScores[].scaleUpScore

Number

실행력 점수 (C1+C2)

data.teamScores[].effectScore

Number

파급효과 점수 (D1+D2)

data.teamScores[].totalScore

Number

총점

6. 제출 완료

요청(Request)

PATCH /api/funding/build/submit HTTP/1.1
Content-Type: application/json
Content-Length: 298
Host: iptdesign.mycafe24.com

{
  "investmentTarget" : 2,
  "investmentPrice" : "50000000",
  "score1" : 5,
  "score2" : 4,
  "score3" : 5,
  "score4" : 3,
  "score5" : 4,
  "score6" : 5,
  "score7" : 4,
  "score8" : 3,
  "score9" : 5,
  "opinion" : "성장 가능성이 높은 팀입니다.",
  "submit" : false
}

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "submitted" : true
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.submitted

Boolean

제출 여부

6-1. 제출 완료 (이미 제출됨)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 136

{
  "status" : 409,
  "data" : {
    "errorCode" : "CANVAS_1",
    "message" : "이미 제출 완료된 캔버스입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

CANVAS_1

data.message

String

이미 제출 완료된 캔버스입니다.

7. 내 팀 결과 조회

요청(Request)

GET /api/funding/my-result HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "build" : {
      "opinions" : [ "좋은 사업 모델입니다.", "실현 가능성이 높습니다." ],
      "scores" : {
        "effectScore" : 8,
        "evaluatorCount" : 5,
        "problemScore" : 9,
        "scaleUpScore" : 9,
        "solutionScore" : 12,
        "totalScore" : 38
      }
    },
    "quick" : {
      "opinions" : [ "빠른 실행이 가능합니다." ],
      "scores" : {
        "effectScore" : 9,
        "evaluatorCount" : 4,
        "problemScore" : 8,
        "scaleUpScore" : 7,
        "solutionScore" : 11,
        "totalScore" : 35
      }
    }
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.build

Object

Build 캔버스 결과

data.build.scores

Object

Build 점수

data.build.scores.problemScore

Number

문제정의 점수

data.build.scores.solutionScore

Number

솔루션 점수

data.build.scores.scaleUpScore

Number

실행력 점수

data.build.scores.effectScore

Number

파급효과 점수

data.build.scores.totalScore

Number

총점

data.build.scores.evaluatorCount

Number

평가 참가자 수

data.build.opinions[]

Array

Build 종합 의견 목록

data.quick

Object

Quick 캔버스 결과

data.quick.scores

Object

Quick 점수

data.quick.scores.problemScore

Number

문제정의 점수

data.quick.scores.solutionScore

Number

솔루션 점수

data.quick.scores.scaleUpScore

Number

실행력 점수

data.quick.scores.effectScore

Number

파급효과 점수

data.quick.scores.totalScore

Number

총점

data.quick.scores.evaluatorCount

Number

평가 참가자 수

data.quick.opinions[]

Array

Quick 종합 의견 목록

Game API

모든 Game API는 인증 필요 (Authorization: Bearer {token})

1. 학생 대시보드 조회

요청(Request)

GET /api/game/dashboard HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "classImage" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "className" : "임팩트디자인 1반",
    "teamName" : "A팀",
    "userName" : "홍길동"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.className

String

강의실명

data.classImage

String

강의실 이미지 URL

data.teamName

String

팀명

data.userName

String

사용자명

2. 학생용 공개범위(step) 조회

요청(Request)

GET /api/game/step HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "step" : "A-1,B-1,C-1,D-1,E-1,F-1,F-2,F-3"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.step

String

현재 공개된 단계 (A-1,B-1,C-1,D-1,E-1,F-1,F-2,F-3) → (예: IMPACT_CHECK, IDENTITY, FLOW, QUICK_WIN, BUILD_WIN, FUNDING)

Teach API

모든 Teach API는 인증 필요 (Authorization: Bearer {token})

1. 강의실 목록 조회

요청(Request)

GET /api/teach HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "ddTerm" : 1,
    "ddYear" : 1,
    "enddate" : "2026-03-01T18:00:00",
    "gameId" : 1,
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "missionId" : 1,
    "name" : "임팩트 디자인 수업",
    "numTeam" : 4,
    "sequence" : 1,
    "startdate" : "2026-02-01T09:00:00",
    "statusCeo" : 20,
    "subject" : "미션 1",
    "summary" : "수업 요약",
    "totalDd" : 16
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].gameId

Number

강의실 ID

data[].name

String

강의실 이름

data[].numTeam

Number

팀 수

data[].totalDd

Number

총 의사결정일 수

data[].missionId

Number

미션 ID

data[].sequence

Number

미션 순서 번호

data[].subject

String

미션 제목

data[].summary

String

미션 요약 설명

data[].startdate

String

미션 시작일

data[].enddate

String

미션 종료일

data[].ddYear

Number

의사결정 연도

data[].ddTerm

Number

의사결정 분기/기간

data[].statusCeo

Number

CEO 상태

data[].imageUrl

String

이미지 URL

2. 강의실 카테고리별 목록 조회

요청(Request)

GET /api/teach/list HTTP/1.1
Host: iptdesign.mycafe24.com

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "completed" : [ ],
    "etc" : [ ],
    "inProgress" : [ {
      "ddTerm" : 1,
      "ddYear" : 1,
      "enddate" : "2026-03-01T18:00:00",
      "gameId" : 1,
      "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
      "missionId" : 1,
      "name" : "임팩트 디자인 수업",
      "numTeam" : 4,
      "sequence" : 1,
      "startdate" : "2026-02-01T09:00:00",
      "statusCeo" : 20,
      "subject" : "미션 1",
      "summary" : "수업 요약",
      "totalDd" : 16
    } ],
    "setting" : [ ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.inProgress[]

Array

진행중 강의실 목록

data.inProgress[].gameId

Number

강의실 ID

data.inProgress[].name

String

강의실 이름

data.inProgress[].numTeam

Number

팀 수

data.inProgress[].totalDd

Number

총 의사결정일 수

data.inProgress[].missionId

Number

미션 ID

data.inProgress[].sequence

Number

미션 순서 번호

data.inProgress[].subject

String

미션 제목

data.inProgress[].summary

String

미션 요약 설명

data.inProgress[].startdate

String

미션 시작일

data.inProgress[].enddate

String

미션 종료일

data.inProgress[].ddYear

Number

의사결정 연도

data.inProgress[].ddTerm

Number

의사결정 분기/기간

data.inProgress[].statusCeo

Number

CEO 상태

data.inProgress[].imageUrl

String

이미지 URL

data.setting[]

Array

설정중 강의실 목록

data.completed[]

Array

완료된 강의실 목록

data.etc[]

Array

기타 강의실 목록

3. 클래스 상세 조회

요청(Request)

GET /api/teach/detail?gameId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "code" : "ABC123",
    "gameId" : 1,
    "gameLogo" : {
      "contentsId" : 1,
      "extDir" : "uploads",
      "newFilename" : "logo_new.png",
      "orgFilename" : "logo.png",
      "subject" : "로고"
    },
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "mission" : {
      "ddTerm" : 1,
      "ddYear" : 1,
      "enddate" : "2026-03-01T18:00:00",
      "missionId" : 1,
      "sequence" : 1,
      "startdate" : "2026-02-01T09:00:00",
      "subject" : "미션 1",
      "summary" : "미션 요약"
    },
    "name" : "임팩트 디자인 수업",
    "numTeam" : 4,
    "status" : 10,
    "step" : "A-1,B-1,C-1,E-1",
    "stepArr" : [ "A-1", "B-1", "C-1", "E-1" ],
    "summary" : "수업 요약",
    "teams" : [ {
      "numUser" : 3,
      "sequence" : 1,
      "status" : 0,
      "submitA" : "Y",
      "submitB" : "N",
      "submitC" : "N",
      "submitD" : "N",
      "submitE" : "N",
      "submitF" : "N",
      "teamId" : 1,
      "teamName" : "팀1"
    } ],
    "totalDd" : 16
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.gameId

Number

강의실 ID

data.name

String

강의실 이름

data.numTeam

Number

팀 수

data.totalDd

Number

총 의사결정일 수

data.status

Number

강의실 상태(진행중 = 10, 준비중 = 1, 종료된 = 0, 100)

data.summary

String

강의실 요약(현재는 쓰지않음)

data.code

String

강의실 코드

data.step

String

공개 단계

data.stepArr[]

Array

공개 단계 배열

data.mission

Object

최신 미션 정보

data.mission.missionId

Number

미션 ID

data.mission.sequence

Number

미션 순서 번호

data.mission.subject

String

미션 제목

data.mission.summary

String

미션 요약 설명

data.mission.startdate

String

미션 시작일

data.mission.enddate

String

미션 종료일

data.mission.ddYear

Number

의사결정 연도

data.mission.ddTerm

Number

의사결정 분기/기간

data.teams[]

Array

팀 목록

data.teams[].teamId

Number

팀 ID

data.teams[].teamName

String

팀 이름

data.teams[].sequence

Number

팀 순서 번호

data.teams[].status

Number

팀 삭제 여부(0: 일반팀, 1: 평가팀, -1: 삭제된 팀, null: 미설정)

data.teams[].numUser

Number

팀원 수

data.teams[].submitA

String

성과관리 현황진단 제출 여부

data.teams[].submitB

String

정체성 설계 제출 여부

data.teams[].submitC

String

성과경로 설계 제출 여부

data.teams[].submitD

String

전술적 실행과제 제출 여부

data.teams[].submitE

String

전략적 실행과제 제출 여부

data.teams[].submitF

String

실행과제 검증 제출 여부

data.gameLogo

Object

게임 로고 정보

data.gameLogo.contentsId

Number

콘텐츠 ID

data.gameLogo.subject

String

제목

data.gameLogo.extDir

String

확장 디렉토리

data.gameLogo.orgFilename

String

원본 파일명

data.gameLogo.newFilename

String

새 파일명

data.imageUrl

String

이미지 URL

3-1. 클래스 상세 조회 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

4. 클래스 상세 조회 2

요청(Request)

GET /api/teach/detail2?gameId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID (없으면 첫 번째 진행중 클래스)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "classList" : [ {
      "ddTerm" : 1,
      "ddYear" : 1,
      "enddate" : "2026-03-01T18:00:00",
      "gameId" : 1,
      "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
      "missionId" : 1,
      "name" : "임팩트 디자인 수업",
      "numTeam" : 4,
      "sequence" : 1,
      "startdate" : "2026-02-01T09:00:00",
      "statusCeo" : 20,
      "subject" : "미션 1",
      "summary" : "수업 요약",
      "totalDd" : 16
    } ],
    "code" : "ABC123",
    "gameId" : 1,
    "gameLogo" : null,
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "mission" : {
      "ddTerm" : 1,
      "ddYear" : 1,
      "enddate" : "2026-03-01T18:00:00",
      "missionId" : 1,
      "sequence" : 1,
      "startdate" : "2026-02-01T09:00:00",
      "subject" : "미션 1",
      "summary" : "미션 요약"
    },
    "name" : "임팩트 디자인 수업",
    "numTeam" : 4,
    "status" : 10,
    "step" : "A-1,B-1,C-1",
    "stepArr" : [ "A-1", "B-1", "C-1" ],
    "summary" : "강의 요약",
    "teams" : [ {
      "numUser" : 3,
      "sequence" : 1,
      "status" : 0,
      "submitA" : "Y",
      "submitB" : "N",
      "submitC" : "N",
      "submitD" : "N",
      "submitE" : "N",
      "submitF" : "N",
      "teamId" : 1,
      "teamName" : "팀1"
    } ],
    "totalDd" : 16
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.gameId

Number

강의실 ID

data.name

String

강의실 이름

data.numTeam

Number

팀 수

data.totalDd

Number

총 의사결정일 수

data.status

Number

강의실 상태(진행중 = 10, 준비중 = 1, 종료된 = 0, 100)

data.summary

String

강의실 요약(현재는 미사용)

data.code

String

강의실 코드

data.step

String

공개 단계

data.stepArr[]

Array

공개 단계 배열

data.mission

Object

최신 미션 정보

data.mission.missionId

Number

미션 ID

data.mission.sequence

Number

미션 순서 번호

data.mission.subject

String

미션 제목

data.mission.summary

String

미션 요약 설명

data.mission.startdate

String

미션 시작일

data.mission.enddate

String

미션 종료일

data.mission.ddYear

Number

의사결정 연도

data.mission.ddTerm

Number

의사결정 분기/기간

data.teams[]

Array

팀 목록

data.teams[].teamId

Number

팀 ID

data.teams[].teamName

String

팀 이름

data.teams[].sequence

Number

팀 순서 번호

data.teams[].status

Number

팀 삭제 여부(0: 일반팀, 1: 평가팀, -1: 삭제된 팀, null: 미설정)

data.teams[].numUser

Number

팀원 수

data.teams[].submitA

String

성과관리 현황진단 제출 여부

data.teams[].submitB

String

정체성 설계 제출 여부

data.teams[].submitC

String

성과경로 설계 제출 여부

data.teams[].submitD

String

전술적 실행과제 제출 여부

data.teams[].submitE

String

전략적 실행과제 제출 여부

data.teams[].submitF

String

실행과제 검증 제출 여부

data.gameLogo

Null

강의실 로고 정보

data.imageUrl

String

이미지 URL

data.classList[]

Array

교사의 진행중 클래스 목록

data.classList[].gameId

Number

강의실 ID

data.classList[].name

String

강의실 이름

data.classList[].numTeam

Number

팀 수

data.classList[].totalDd

Number

총 의사결정일 수

data.classList[].missionId

Number

미션 ID

data.classList[].sequence

Number

미션 순서 번호

data.classList[].subject

String

미션 제목

data.classList[].summary

String

미션 요약 설명

data.classList[].startdate

String

미션 시작일

data.classList[].enddate

String

미션 종료일

data.classList[].ddYear

Number

의사결정 연도

data.classList[].ddTerm

Number

의사결정 분기/기간

data.classList[].statusCeo

Number

CEO 상태

data.classList[].imageUrl

String

이미지 URL

4-1. 클래스 상세 조회 2 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

5. 학생 목록 조회

요청(Request)

GET /api/teach/student-list?gameId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

게임 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "game" : {
      "code" : "ABC123",
      "gameId" : 1,
      "name" : "임팩트 디자인 수업",
      "numTeam" : 4,
      "status" : 10,
      "step" : "A-1,B-1,C-1,D-1,E-1",
      "summary" : "수업 요약",
      "totalDd" : 16
    },
    "studentList" : [ {
      "loginId" : "a1001",
      "mail" : null,
      "name" : "홍길동",
      "teamId" : 1,
      "teamName" : "팀1",
      "userId" : 10
    } ],
    "teamList" : [ {
      "name" : "팀1",
      "numUser" : 3,
      "sequence" : 1,
      "teamId" : 1
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.game.gameId

Number

강의실 ID

data.game.name

String

강의실 이름

data.game.numTeam

Number

팀 수

data.game.totalDd

Number

총 의사결정일 수

data.game.status

Number

강의실 상태(진행중 = 10, 준비중 = 1, 종료된 = 0, 100)

data.game.summary

String

강의실 요약

data.game.code

String

강의실 코드

data.game.step

String

공개 단계

data.teamList[]

Array

팀 목록

data.teamList[].teamId

Number

팀 ID

data.teamList[].name

String

팀 이름

data.teamList[].sequence

Number

팀 순서 번호

data.teamList[].numUser

Number

팀원 수

data.studentList[]

Array

학생 목록

data.studentList[].userId

Number

사용자 ID

data.studentList[].loginId

String

로그인 ID

data.studentList[].name

String

학생 이름

data.studentList[].mail

Null

이메일

data.studentList[].teamId

Number

소속 팀 ID

data.studentList[].teamName

String

소속 팀 이름

5-1. 학생 목록 조회 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

6. 클래스 생성

요청(Request)

POST /api/teach/class HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: iptdesign.mycafe24.com

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request; filename=request
Content-Type: application/json

{
  "worldType" : 1,
  "target" : "대학생",
  "classType" : "BASIC",
  "numMember" : 10,
  "summary" : "강의실 설명",
  "numTeam" : 4,
  "name" : "새 강의실",
  "projectDate" : "2026-06-30",
  "popupId" : 0
}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=image.png
Content-Type: image/png

fake-image
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

응답(Response)

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 37

{
  "status" : 201,
  "data" : 1
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data

Number

생성된 게임 ID

6-1. 클래스 생성 (유효하지 않은 날짜)

응답(Response)

HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 127

{
  "status" : 400,
  "data" : {
    "errorCode" : "DATE_1",
    "message" : "유효하지 않은 날짜입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

400

data.errorCode

String

DATE_1

data.message

String

유효하지 않은 날짜입니다.

7. 클래스 수정

요청(Request)

PUT /api/teach/class/1 HTTP/1.1
Content-Type: application/json
Content-Length: 73
Host: iptdesign.mycafe24.com

{
  "name" : "수정된 강의실",
  "enddate" : "2026-07-15 18:00"
}

응답(Response)

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

{
  "status" : 200,
  "data" : 1
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data

Number

수정된 게임 ID

7-1. 클래스 수정 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

8. 강의실 시작

요청(Request)

POST /api/teach/class/1/start HTTP/1.1
Content-Type: application/json
Content-Length: 38
Host: iptdesign.mycafe24.com

{
  "enddate" : "2026-03-01 18:00"
}

경로 변수 설명(Path Parameters)

Table 1. /api/teach/class/{gameId}/start
Parameter Description

gameId

게임 ID

요청 필드 설명(Request Fields)

Path Type Description

enddate

String

제출 기한 (yyyy-MM-dd HH:mm)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

8-1. 강의실 시작 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

8-2. 강의실 시작 (유효하지 않은 날짜)

응답(Response)

HTTP/1.1 400 Bad Request
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 127

{
  "status" : 400,
  "data" : {
    "errorCode" : "DATE_1",
    "message" : "유효하지 않은 날짜입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

400

data.errorCode

String

DATE_1

data.message

String

유효하지 않은 날짜입니다.

9. 강의실 종료

요청(Request)

POST /api/teach/class/1/end HTTP/1.1
Host: iptdesign.mycafe24.com
Content-Type: application/x-www-form-urlencoded

경로 변수 설명(Path Parameters)

Table 2. /api/teach/class/{gameId}/end
Parameter Description

gameId

게임 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

9-1. 강의실 종료 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

10. 강의실 복원

요청(Request)

POST /api/teach/class/1/restore HTTP/1.1
Content-Type: application/json
Content-Length: 38
Host: iptdesign.mycafe24.com

{
  "enddate" : "2026-03-01 18:00"
}

경로 변수 설명(Path Parameters)

Table 3. /api/teach/class/{gameId}/restore
Parameter Description

gameId

게임 ID

요청 필드 설명(Request Fields)

Path Type Description

enddate

String

제출 기한 (yyyy-MM-dd HH:mm)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

10-1. 강의실 복원 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

11. 다음 단계 시작

요청(Request)

POST /api/teach/class/1/next-stage HTTP/1.1
Content-Type: application/json
Content-Length: 38
Host: iptdesign.mycafe24.com

{
  "enddate" : "2026-04-01 18:00"
}

경로 변수 설명(Path Parameters)

Table 4. /api/teach/class/{gameId}/next-stage
Parameter Description

gameId

게임 ID

요청 필드 설명(Request Fields)

Path Type Description

enddate

String

제출 기한 (yyyy-MM-dd HH:mm)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

11-1. 다음 단계 시작 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

Teach Team API

모든 Teach Team API는 인증 필요 (Authorization: Bearer {token})

1. 단계(step) 설정 저장

요청(Request)

POST /api/teach/step HTTP/1.1
Content-Type: application/json
Content-Length: 55
Host: iptdesign.mycafe24.com

{
  "step" : "A-1,B-1,C-1,D-1,E-1",
  "gameId" : 1
}

요청 필드 설명(Request Fields)

Path Type Description

gameId

Number

강의실 ID

step

String

공개 단계 (쉼표 구분)

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

1-1. 단계(step) 설정 저장 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

2. 팀 추가

요청(Request)

POST /api/teach/team?gameId=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 38

{
  "status" : 201,
  "data" : 10
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data

Number

생성된 팀 ID

2-1. 팀 추가 (게임 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 125

{
  "status" : 404,
  "data" : {
    "errorCode" : "GAME_1",
    "message" : "게임을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

GAME_1

data.message

String

게임을 찾을 수 없습니다.

2-2. 팀 추가 (최대 팀 수 초과)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 143

{
  "status" : 409,
  "data" : {
    "errorCode" : "TEAM_4",
    "message" : "팀은 최대 6개까지 생성할 수 있습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

TEAM_4

data.message

String

팀은 최대 6개까지 생성할 수 있습니다.

3. 평가팀 추가

요청(Request)

POST /api/teach/evaluation-team?gameId=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 38

{
  "status" : 201,
  "data" : 11
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data

Number

생성된 평가팀 ID

3-1. 평가팀 추가 (최대 팀 수 초과)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 143

{
  "status" : 409,
  "data" : {
    "errorCode" : "TEAM_4",
    "message" : "팀은 최대 6개까지 생성할 수 있습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

TEAM_4

data.message

String

팀은 최대 6개까지 생성할 수 있습니다.

4. 팀원 추가

요청(Request)

POST /api/teach/team/1/members?gameId=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 5. /api/teach/team/{teamId}/members
Parameter Description

teamId

팀 ID

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 41

{
  "status" : 201,
  "data" : "a11"
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data

String

생성된 로그인 ID

4-1. 팀원 추가 (팀 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

팀을 찾을 수 없습니다.

4-2. 팀원 추가 (최대 팀원 수 초과)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 147

{
  "status" : 409,
  "data" : {
    "errorCode" : "TEAM_5",
    "message" : "팀원은 최대 10명까지 추가할 수 있습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

TEAM_5

data.message

String

팀원은 최대 10명까지 추가할 수 있습니다.

5. 팀 삭제

요청(Request)

DELETE /api/teach/team/1?gameId=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 6. /api/teach/team/{teamId}
Parameter Description

teamId

팀 ID

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

5-1. 팀 삭제 (팀 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

팀을 찾을 수 없습니다.

6. 삭제된 팀 복원

요청(Request)

POST /api/teach/team/1/restore?gameId=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 7. /api/teach/team/{teamId}/restore
Parameter Description

teamId

팀 ID

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

6-1. 삭제된 팀 복원 (팀 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

팀을 찾을 수 없습니다.

7. 삭제된 팀 목록 조회

요청(Request)

GET /api/teach/deleted-teams?gameId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "sequence" : 5,
    "teamId" : 5,
    "teamName" : "팀5"
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].teamId

Number

팀 ID

data[].teamName

String

팀 이름

data[].sequence

Number

팀 순서

8. 학생 팀 이동

요청(Request)

PUT /api/teach/team-member HTTP/1.1
Content-Type: application/json
Content-Length: 38
Host: iptdesign.mycafe24.com

{
  "teamId" : 2,
  "userId" : 10
}

요청 필드 설명(Request Fields)

Path Type Description

userId

Number

이동할 학생 ID

teamId

Number

이동할 팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

8-1. 학생 팀 이동 (대표작성자 이동 불가)

응답(Response)

HTTP/1.1 409 Conflict
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 144

{
  "status" : 409,
  "data" : {
    "errorCode" : "TEAM_3",
    "message" : "대표작성자는 팀을 이동할 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

TEAM_3

data.message

String

대표작성자는 팀을 이동할 수 없습니다.

9. 팀 상세 정보 조회

요청(Request)

GET /api/teach/team/1 HTTP/1.1
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 8. /api/teach/team/{teamId}
Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "isDoing" : 1,
    "members" : [ {
      "loginId" : "a11",
      "mail" : null,
      "name" : "홍길동",
      "userId" : 10,
      "writer" : "1"
    }, {
      "loginId" : "a12",
      "mail" : null,
      "name" : "김철수",
      "userId" : 11,
      "writer" : null
    } ],
    "numUser" : 2,
    "sequence" : 1,
    "teamCategory" : 0,
    "teamId" : 1,
    "teamName" : "팀1"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.teamId

Number

팀 ID

data.teamName

String

팀 이름

data.sequence

Number

팀 순서

data.isDoing

Number

활성 여부

data.teamCategory

Number

팀 카테고리 (0: 일반, 1: 평가팀) (DB는 팀 구분 컬럼)

data.numUser

Number

팀원 수

data.members[]

Array

팀원 목록

data.members[].userId

Number

사용자 ID

data.members[].loginId

String

로그인 ID

data.members[].name

String

이름

data.members[].mail

Null

이메일

data.members[].writer

String

대표작성자 여부 ("1": 대표작성자)

9-1. 팀 상세 정보 조회 (팀 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

팀을 찾을 수 없습니다.

10. 팀 정보 수정

요청(Request)

PUT /api/teach/team/1 HTTP/1.1
Content-Type: application/json
Content-Length: 90
Host: iptdesign.mycafe24.com

{
  "isDoing" : 1,
  "teamName" : "수정된 팀",
  "sequence" : 2,
  "aiPlay" : 0
}

경로 변수 설명(Path Parameters)

Table 9. /api/teach/team/{teamId}
Parameter Description

teamId

팀 ID

요청 필드 설명(Request Fields)

Path Type Description

teamName

String

팀 이름

sequence

Number

팀 순서

isDoing

Number

활성 여부

aiPlay

Number

AI 플레이 여부

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

10-1. 팀 정보 수정 (팀 없음)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_1

data.message

String

팀을 찾을 수 없습니다.

11. 선택한 팀원 삭제

요청(Request)

DELETE /api/teach/team-members HTTP/1.1
Content-Type: application/json
Content-Length: 30
Host: iptdesign.mycafe24.com

{
  "userIds" : [ 10, 11 ]
}

요청 필드 설명(Request Fields)

Path Type Description

userIds[]

Array

삭제할 사용자 ID 목록

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

12. 대표작성자 지정

요청(Request)

POST /api/teach/team/1/writer HTTP/1.1
Content-Type: application/json
Content-Length: 21
Host: iptdesign.mycafe24.com

{
  "userId" : 10
}

경로 변수 설명(Path Parameters)

Table 10. /api/teach/team/{teamId}/writer
Parameter Description

teamId

팀 ID

요청 필드 설명(Request Fields)

Path Type Description

userId

Number

대표작성자로 지정할 사용자 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공

12-1. 대표작성자 지정 (팀 소속 아님)

응답(Response)

HTTP/1.1 404 Not Found
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Content-Length: 122

{
  "status" : 404,
  "data" : {
    "errorCode" : "TEAM_2",
    "message" : "팀을 찾을 수 없습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

TEAM_2

data.message

String

팀을 찾을 수 없습니다.

Teach Submission API

모든 Teach Submission API는 인증 필요 (Authorization: Bearer {token}) + 강사 권한 필요

1. 게임별 팀 제출 현황 목록

요청(Request)

GET /api/teach/submission/list?gameId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

gameId

강의실 ID

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "numUser" : 3,
    "sequence" : 1,
    "submitA" : "Y",
    "submitB" : "Y",
    "submitC" : "N",
    "submitD" : "N",
    "submitE" : "N",
    "submitF" : "N",
    "teamId" : 1,
    "teamName" : "팀1"
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].teamId

Number

팀 ID

data[].teamName

String

팀 이름

data[].sequence

Number

팀 순서 번호

data[].numUser

Number

팀원 수

data[].submitA

String

A: 성과관리 현황진단 제출 여부

data[].submitB

String

B: 정체성 설계 제출 여부

data[].submitC

String

C: 성과경로 설계 제출 여부

data[].submitD

String

D: 전술적 실행과제 제출 여부

data[].submitE

String

E: 전략적 실행과제 제출 여부

data[].submitF

String

F: 실행과제 검증 제출 여부

2. A: 성과관리 현황진단 열람

요청(Request)

GET /api/teach/submission/impact-check?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "answerId" : 1,
    "q10Score" : 4,
    "q11Score" : 5,
    "q12Score" : 3,
    "q13Text" : "답변13",
    "q14Text" : "답변14",
    "q15Text" : "답변15",
    "q16Text" : "답변16",
    "q1Score" : 4,
    "q2Score" : 3,
    "q3Score" : 5,
    "q4Score" : 2,
    "q5Score" : 4,
    "q6Score" : 3,
    "q7Score" : 5,
    "q8Score" : 4,
    "q9Score" : 3,
    "submitted" : true,
    "userId" : 10
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.answerId

Number

답변 ID

data.q1Score

Number

문항1 점수

data.q2Score

Number

문항2 점수

data.q3Score

Number

문항3 점수

data.q4Score

Number

문항4 점수

data.q5Score

Number

문항5 점수

data.q6Score

Number

문항6 점수

data.q7Score

Number

문항7 점수

data.q8Score

Number

문항8 점수

data.q9Score

Number

문항9 점수

data.q10Score

Number

문항10 점수

data.q11Score

Number

문항11 점수

data.q12Score

Number

문항12 점수

data.q13Text

String

문항13 텍스트

data.q14Text

String

문항14 텍스트

data.q15Text

String

문항15 텍스트

data.q16Text

String

문항16 텍스트

data.userId

Number

작성자 ID

data.submitted

Boolean

제출 여부

3. B: 정체성 설계 열람

요청(Request)

GET /api/teach/submission/identity-canvas?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "capability" : "기술력",
    "competitor" : "타 사회적 기업",
    "culture" : "수평적 문화",
    "customer" : "청년층",
    "etc" : "기타 사항",
    "identityId" : 1,
    "macro" : "인구 감소",
    "mission" : "사회적 가치 창출",
    "newMission" : "새로운 미션",
    "newValue" : "새로운 가치",
    "newVision" : "새로운 비전",
    "structure" : "팀 기반",
    "submitted" : true,
    "tech" : "AI 기술",
    "userId" : 10,
    "value" : "혁신과 협력",
    "vision" : "지속 가능한 미래"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.identityId

Number

Identity ID

data.mission

String

미션

data.vision

String

비전

data.value

String

가치

data.macro

String

정책/경제

data.tech

String

기술

data.customer

String

고객/사회

data.competitor

String

경쟁자

data.capability

String

역량

data.culture

String

문화

data.structure

String

구조

data.etc

String

기타

data.newMission

String

새로운 미션

data.newVision

String

새로운 비전

data.newValue

String

새로운 가치

data.userId

Number

작성자 ID

data.submitted

Boolean

제출 여부

4. C: 성과경로 설계 열람

요청(Request)

GET /api/teach/submission/flow-canvas?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "goals" : [ {
      "goalDescription" : "지역 사회 문제 해결",
      "goalId" : 1,
      "goalTitle" : "사회적 가치 창출",
      "orderNo" : 1,
      "strategicActivities" : [ {
        "activityId" : 1,
        "activityMetric" : "서비스 개선 횟수",
        "interCriteria" : "월 2회 이상",
        "orderNo" : 1
      } ],
      "tacticals" : [ {
        "metricId" : 1,
        "orderNo" : 1,
        "tacticalGoal" : "90% 이상",
        "tacticalMetric" : "고객 만족도"
      } ]
    } ],
    "newVision" : "지속 가능한 미래",
    "submitted" : true
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.newVision

String

새로운 비전

data.goals[]

Array

목표 목록

data.goals[].goalId

Number

목표 ID

data.goals[].goalTitle

String

목표 제목

data.goals[].goalDescription

String

존재 이유

data.goals[].orderNo

Number

목표 순서

data.goals[].tacticals[]

Array

전술적 성과 목록

data.goals[].tacticals[].metricId

Number

지표 ID

data.goals[].tacticals[].tacticalMetric

String

전술적 성과 지표

data.goals[].tacticals[].tacticalGoal

String

전술 목표

data.goals[].tacticals[].orderNo

Number

성과 순서

data.goals[].strategicActivities[]

Array

전략적 활동 목록

data.goals[].strategicActivities[].activityId

Number

활동 ID

data.goals[].strategicActivities[].activityMetric

String

전략적 활동 지표

data.goals[].strategicActivities[].interCriteria

String

내재화 기준

data.goals[].strategicActivities[].orderNo

Number

활동 순서

data.submitted

Boolean

제출 여부

5. D: 전술적 실행과제 (QuickWin) 열람

요청(Request)

GET /api/teach/submission/quick-win?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "위기의 신호",
    "painTouchPoint" : "페인 포인트",
    "strategicGoal" : "전략 목표",
    "submitted" : true,
    "taskActivities" : [ {
      "activityContent" : "활동 내용",
      "activityId" : 1,
      "duration" : "2주",
      "orderNo" : 1,
      "processStep" : "1단계"
    } ],
    "taskDescription" : "주요 내용",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 3,
      "resourceName" : "인적 자원"
    } ],
    "taskName" : "과제명",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "산출물",
      "outcomeNo" : 1,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "협업 내용",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 10
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

위기의 신호

data.painTouchPoint

String

페인/터치포인트

data.userId

Number

작성자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

추진 절차

data.taskActivities[].activityContent

String

주요 내용

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크 정보

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

산출물 목록

data.taskOutcomes[].outcomeNo

Number

산출물 번호

data.taskOutcomes[].outcomeType

String

산출물 유형 (QUALITATIVE/QUANTITATIVE)

data.taskOutcomes[].outcomeContent

String

산출물 내용

data.taskOutcomes[].orderNo

Number

순서

6. E: 전략적 실행과제 (BuildWin) 열람

요청(Request)

GET /api/teach/submission/build-win?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "canvasId" : 1,
    "crisisSignal" : "변화의 신호",
    "painTouchPoint" : "페인포인트",
    "strategicGoal" : "전략 목표",
    "submitted" : true,
    "taskActivities" : [ {
      "activityContent" : "활동 내용",
      "activityId" : 1,
      "duration" : "2주",
      "orderNo" : 1,
      "processStep" : "1단계"
    } ],
    "taskDescription" : "주요 내용",
    "taskInputs" : [ {
      "inputId" : 1,
      "orderNo" : 1,
      "quantity" : 3,
      "resourceName" : "인적 자원"
    } ],
    "taskName" : "과제명",
    "taskOutcomes" : [ {
      "orderNo" : 1,
      "outcomeContent" : "산출물",
      "outcomeNo" : 1,
      "outcomeType" : "QUALITATIVE"
    } ],
    "teamwork" : {
      "activityTeamwork" : "협업 내용",
      "teamworkId" : 1,
      "workType" : "협업"
    },
    "userId" : 10
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.canvasId

Number

캔버스 ID

data.strategicGoal

String

전략 목표

data.taskName

String

과제명

data.taskDescription

String

주요 내용

data.crisisSignal

String

변화의 신호

data.painTouchPoint

String

페인/터치포인트

data.userId

Number

작성자 ID

data.submitted

Boolean

제출 여부

data.taskInputs[]

Array

투입 자원 목록

data.taskInputs[].inputId

Number

투입 ID

data.taskInputs[].resourceName

String

필요 자원

data.taskInputs[].quantity

Number

수량

data.taskInputs[].orderNo

Number

순서

data.taskActivities[]

Array

활동 목록

data.taskActivities[].activityId

Number

활동 ID

data.taskActivities[].processStep

String

전환 단계

data.taskActivities[].activityContent

String

전환 활동

data.taskActivities[].duration

String

소요 기간

data.taskActivities[].orderNo

Number

순서

data.teamwork

Object

팀워크 정보

data.teamwork.teamworkId

Number

팀워크 ID

data.teamwork.activityTeamwork

String

활동 팀워크

data.teamwork.workType

String

산출 팀워크

data.taskOutcomes[]

Array

산출물 목록

data.taskOutcomes[].outcomeNo

Number

산출물 번호

data.taskOutcomes[].outcomeType

String

산출물 유형 (QUALITATIVE/QUANTITATIVE)

data.taskOutcomes[].outcomeContent

String

산출물 내용

data.taskOutcomes[].orderNo

Number

순서

7. F: 실행과제 검증 (Funding) 열람

요청(Request)

GET /api/teach/submission/funding/build?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 11. /api/teach/submission/funding/{canvasType}
Parameter Description

canvasType

캔버스 유형 (build 또는 quick)

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "businessName" : "사업명",
    "intentIndex" : 1,
    "investmentPrice" : "1000000",
    "investmentTarget" : 2,
    "opinion" : "좋은 사업입니다",
    "score1" : 4,
    "score2" : 3,
    "score3" : 5,
    "score4" : 4,
    "score5" : 3,
    "score6" : 4,
    "score7" : 5,
    "score8" : 3,
    "score9" : 4,
    "submitted" : true,
    "teamName" : "팀2"
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].intentIndex

Number

투자 의향서 인덱스

data[].investmentTarget

Number

투자 대상 팀 ID

data[].teamName

String

대상 팀 이름

data[].businessName

String

사업명

data[].investmentPrice

String

투자 금액

data[].score1

Number

평가 점수 1

data[].score2

Number

평가 점수 2

data[].score3

Number

평가 점수 3

data[].score4

Number

평가 점수 4

data[].score5

Number

평가 점수 5

data[].score6

Number

평가 점수 6

data[].score7

Number

평가 점수 7

data[].score8

Number

평가 점수 8

data[].score9

Number

평가 점수 9

data[].opinion

String

투자 의견

data[].submitted

Boolean

제출 여부

8. F-3: 팀별 결과 열람

요청(Request)

GET /api/teach/submission/funding/result?teamId=1 HTTP/1.1
Host: iptdesign.mycafe24.com

요청 파라미터 설명(Query Parameters)

Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "build" : {
      "opinions" : [ "좋은 사업입니다", "발전 가능성이 높습니다" ],
      "scores" : {
        "effectScore" : 7,
        "evaluatorCount" : 3,
        "problemScore" : 7,
        "scaleUpScore" : 9,
        "solutionScore" : 12,
        "totalScore" : 35
      }
    },
    "quick" : {
      "opinions" : [ ],
      "scores" : {
        "effectScore" : 0,
        "evaluatorCount" : 0,
        "problemScore" : 0,
        "scaleUpScore" : 0,
        "solutionScore" : 0,
        "totalScore" : 0
      }
    }
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.build

Object

BUILD 캔버스 결과

data.build.scores.problemScore

Number

문제 점수 (score1+score2)

data.build.scores.solutionScore

Number

솔루션 점수 (score3+score4+score5)

data.build.scores.scaleUpScore

Number

확장 점수 (score6+score7)

data.build.scores.effectScore

Number

효과 점수 (score8+score9)

data.build.scores.totalScore

Number

총 점수

data.build.scores.evaluatorCount

Number

평가 참가자 수

data.build.opinions[]

Array

투자 의견 목록

data.quick

Object

QUICK 캔버스 결과

data.quick.scores.problemScore

Number

문제정의 점수

data.quick.scores.solutionScore

Number

솔루션 점수

data.quick.scores.scaleUpScore

Number

실행력 점수

data.quick.scores.effectScore

Number

파급효과 점수

data.quick.scores.totalScore

Number

총 점수

data.quick.scores.evaluatorCount

Number

평가 참가자 수

data.quick.opinions[]

Array

투자 의견 목록

Report API

인증 필요 (Authorization: Bearer {token})

1. 팀별 리포트 조회

요청(Request)

GET /api/teach/report/1 HTTP/1.1
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 12. /api/teach/report/{teamId}
Parameter Description

teamId

팀 ID

응답(Response)

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

{
  "status" : 200,
  "data" : {
    "buildWinCanvasList" : [ {
      "canvasId" : 2,
      "evaluations" : [ {
        "intentIndex" : 1,
        "score1" : 4,
        "score2" : 3,
        "score3" : 5,
        "score4" : 4,
        "score5" : 3,
        "score6" : 4,
        "score7" : 5,
        "score8" : 3,
        "score9" : 4,
        "stdntNo" : 10,
        "totalScore" : 35
      } ],
      "taskDescription" : "과제 설명",
      "taskName" : "전략 과제",
      "totalScore" : 38,
      "userId" : 10
    } ],
    "className" : "임팩트 디자인 수업",
    "externalThreats" : {
      "aiSummary" : [ "인구 감소가 가장 큰 위협입니다." ],
      "allData" : [ "인구 감소", "기후 변화", "인구 감소" ],
      "keywords" : [ "인구", "기후" ],
      "top4" : [ {
        "content" : "인구 감소",
        "count" : 2
      } ]
    },
    "flowCanvasGoals" : {
      "goals" : [ {
        "count" : 2,
        "description" : "지역 사회 문제 해결",
        "title" : "사회적 가치 창출"
      } ],
      "keywords" : [ "사회적 가치", "지역 사회" ]
    },
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "impactCheckScores" : [ {
      "q10Score" : 4,
      "q11Score" : 5,
      "q12Score" : 3,
      "q1Score" : 4,
      "q2Score" : 3,
      "q3Score" : 5,
      "q4Score" : 2,
      "q5Score" : 4,
      "q6Score" : 3,
      "q7Score" : 5,
      "q8Score" : 4,
      "q9Score" : 3,
      "userId" : 10
    } ],
    "internalLimitations" : {
      "aiSummary" : [ "자금 부족이 주요 내부 한계입니다." ],
      "allData" : [ "자금 부족" ],
      "keywords" : [ "자금" ],
      "top4" : [ {
        "content" : "자금 부족",
        "count" : 1
      } ]
    },
    "projectDate" : "2026-06-30",
    "quickWinCanvasList" : [ {
      "canvasId" : 1,
      "evaluations" : [ {
        "intentIndex" : 1,
        "score1" : 4,
        "score2" : 3,
        "score3" : 5,
        "score4" : 4,
        "score5" : 3,
        "score6" : 4,
        "score7" : 5,
        "score8" : 3,
        "score9" : 4,
        "stdntNo" : 10,
        "totalScore" : 35
      } ],
      "taskDescription" : "과제 설명",
      "taskName" : "전술 과제",
      "totalScore" : 35,
      "userId" : 10
    } ],
    "strategicActivities" : [ {
      "activityMetric" : "서비스 개선 횟수",
      "interCriteria" : "월 2회 이상"
    } ],
    "tacticals" : [ {
      "goal" : "90% 이상",
      "metric" : "고객 만족도"
    } ],
    "target" : "대학생",
    "teamId" : 1,
    "teamName" : "1팀",
    "visionMissionValue" : {
      "aiMission" : "사회적 가치를 창출하는 미션",
      "aiValue" : "혁신과 협력의 가치",
      "aiVision" : "지속 가능한 미래를 향한 비전",
      "missionTop4" : [ {
        "content" : "사회적 가치 창출",
        "count" : 2
      } ],
      "valueTop4" : [ {
        "content" : "혁신",
        "count" : 2
      } ],
      "visionTop4" : [ {
        "content" : "지속 가능한 미래",
        "count" : 3
      } ]
    }
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.teamId

Number

팀 ID

data.teamName

String

팀 이름

data.className

String

강의실 이름

data.target

String

대상

data.projectDate

String

프로젝트 일자

data.imageUrl

String

강의실 이미지 URL

data.impactCheckScores[]

Array

임팩트 체크 점수 목록

data.impactCheckScores[].userId

Number

사용자 ID

data.impactCheckScores[].q1Score

Number

문항1 점수

data.impactCheckScores[].q2Score

Number

문항2 점수

data.impactCheckScores[].q3Score

Number

문항3 점수

data.impactCheckScores[].q4Score

Number

문항4 점수

data.impactCheckScores[].q5Score

Number

문항5 점수

data.impactCheckScores[].q6Score

Number

문항6 점수

data.impactCheckScores[].q7Score

Number

문항7 점수

data.impactCheckScores[].q8Score

Number

문항8 점수

data.impactCheckScores[].q9Score

Number

문항9 점수

data.impactCheckScores[].q10Score

Number

문항10 점수

data.impactCheckScores[].q11Score

Number

문항11 점수

data.impactCheckScores[].q12Score

Number

문항12 점수

data.externalThreats

Object

외부 위협 빈도 분석

data.externalThreats.allData[]

Array

전체 데이터

data.externalThreats.top4[]

Array

상위 4개

data.externalThreats.top4[].content

String

내용

data.externalThreats.top4[].count

Number

빈도 수

data.externalThreats.keywords[]

Array

키워드 목록

data.externalThreats.aiSummary[]

Array

AI 요약

data.internalLimitations

Object

내부 한계 빈도 분석

data.internalLimitations.allData[]

Array

전체 데이터

data.internalLimitations.top4[]

Array

상위 4개

data.internalLimitations.top4[].content

String

내용

data.internalLimitations.top4[].count

Number

빈도 수

data.internalLimitations.keywords[]

Array

키워드 목록

data.internalLimitations.aiSummary[]

Array

AI 요약

data.visionMissionValue

Object

비전/미션/가치 분석

data.visionMissionValue.visionTop4[]

Array

비전 상위 4개

data.visionMissionValue.visionTop4[].content

String

내용

data.visionMissionValue.visionTop4[].count

Number

빈도 수

data.visionMissionValue.missionTop4[]

Array

미션 상위 4개

data.visionMissionValue.missionTop4[].content

String

내용

data.visionMissionValue.missionTop4[].count

Number

빈도 수

data.visionMissionValue.valueTop4[]

Array

가치 상위 4개

data.visionMissionValue.valueTop4[].content

String

내용

data.visionMissionValue.valueTop4[].count

Number

빈도 수

data.visionMissionValue.aiVision

String

AI 비전 요약

data.visionMissionValue.aiMission

String

AI 미션 요약

data.visionMissionValue.aiValue

String

AI 가치 요약

data.flowCanvasGoals

Object

성과경로 목표 분석

data.flowCanvasGoals.goals[]

Array

목표 목록

data.flowCanvasGoals.goals[].title

String

목표 제목

data.flowCanvasGoals.goals[].description

String

목표 설명

data.flowCanvasGoals.goals[].count

Number

빈도 수

data.flowCanvasGoals.keywords[]

Array

키워드 목록

data.tacticals[]

Array

전술 지표 목록

data.tacticals[].metric

String

전술 지표

data.tacticals[].goal

String

전술 목표

data.strategicActivities[]

Array

전략 활동 목록

data.strategicActivities[].activityMetric

String

활동 지표

data.strategicActivities[].interCriteria

String

중간 기준

data.quickWinCanvasList[]

Array

QuickWin 캔버스 목록

data.quickWinCanvasList[].canvasId

Number

캔버스 ID

data.quickWinCanvasList[].userId

Number

작성자 ID

data.quickWinCanvasList[].taskName

String

과제명

data.quickWinCanvasList[].taskDescription

String

과제 설명

data.quickWinCanvasList[].totalScore

Number

총 점수

data.quickWinCanvasList[].evaluations[]

Array

평가 목록

data.quickWinCanvasList[].evaluations[].intentIndex

Number

투자 의향서 인덱스

data.quickWinCanvasList[].evaluations[].stdntNo

Number

학생 번호

data.quickWinCanvasList[].evaluations[].score1

Number

점수1

data.quickWinCanvasList[].evaluations[].score2

Number

점수2

data.quickWinCanvasList[].evaluations[].score3

Number

점수3

data.quickWinCanvasList[].evaluations[].score4

Number

점수4

data.quickWinCanvasList[].evaluations[].score5

Number

점수5

data.quickWinCanvasList[].evaluations[].score6

Number

점수6

data.quickWinCanvasList[].evaluations[].score7

Number

점수7

data.quickWinCanvasList[].evaluations[].score8

Number

점수8

data.quickWinCanvasList[].evaluations[].score9

Number

점수9

data.quickWinCanvasList[].evaluations[].totalScore

Number

총 점수

data.buildWinCanvasList[]

Array

BuildWin 캔버스 목록

data.buildWinCanvasList[].canvasId

Number

캔버스 ID

data.buildWinCanvasList[].userId

Number

작성자 ID

data.buildWinCanvasList[].taskName

String

과제명

data.buildWinCanvasList[].taskDescription

String

과제 설명

data.buildWinCanvasList[].totalScore

Number

총 점수

data.buildWinCanvasList[].evaluations[]

Array

평가 목록

data.buildWinCanvasList[].evaluations[].intentIndex

Number

투자 의향서 인덱스

data.buildWinCanvasList[].evaluations[].stdntNo

Number

학생 번호

data.buildWinCanvasList[].evaluations[].score1

Number

점수1

data.buildWinCanvasList[].evaluations[].score2

Number

점수2

data.buildWinCanvasList[].evaluations[].score3

Number

점수3

data.buildWinCanvasList[].evaluations[].score4

Number

점수4

data.buildWinCanvasList[].evaluations[].score5

Number

점수5

data.buildWinCanvasList[].evaluations[].score6

Number

점수6

data.buildWinCanvasList[].evaluations[].score7

Number

점수7

data.buildWinCanvasList[].evaluations[].score8

Number

점수8

data.buildWinCanvasList[].evaluations[].score9

Number

점수9

data.buildWinCanvasList[].evaluations[].totalScore

Number

총 점수

2. 게임별 벌크 리포트 조회

요청(Request)

GET /api/teach/report/bulk/1 HTTP/1.1
Host: iptdesign.mycafe24.com

경로 변수 설명(Path Parameters)

Table 13. /api/teach/report/bulk/{gameId}
Parameter Description

gameId

게임 ID

응답(Response)

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

{
  "status" : 200,
  "data" : [ {
    "buildWinCanvasList" : [ {
      "canvasId" : 2,
      "evaluations" : [ {
        "intentIndex" : 1,
        "score1" : 4,
        "score2" : 3,
        "score3" : 5,
        "score4" : 4,
        "score5" : 3,
        "score6" : 4,
        "score7" : 5,
        "score8" : 3,
        "score9" : 4,
        "stdntNo" : 10,
        "totalScore" : 35
      } ],
      "taskDescription" : "과제 설명",
      "taskName" : "전략 과제",
      "totalScore" : 38,
      "userId" : 10
    } ],
    "className" : "임팩트 디자인 수업",
    "externalThreats" : {
      "aiSummary" : [ "인구 감소가 가장 큰 위협입니다." ],
      "allData" : [ "인구 감소" ],
      "keywords" : [ "인구" ],
      "top4" : [ {
        "content" : "인구 감소",
        "count" : 2
      } ]
    },
    "flowCanvasGoals" : {
      "goals" : [ {
        "count" : 2,
        "description" : "지역 사회 문제 해결",
        "title" : "사회적 가치 창출"
      } ],
      "keywords" : [ "사회적 가치" ]
    },
    "imageUrl" : "http://iptdesign.mycafe24.com/uploads/class/1/image.png",
    "impactCheckScores" : [ {
      "q10Score" : 4,
      "q11Score" : 5,
      "q12Score" : 3,
      "q1Score" : 4,
      "q2Score" : 3,
      "q3Score" : 5,
      "q4Score" : 2,
      "q5Score" : 4,
      "q6Score" : 3,
      "q7Score" : 5,
      "q8Score" : 4,
      "q9Score" : 3,
      "userId" : 10
    } ],
    "internalLimitations" : {
      "aiSummary" : [ "자금 부족이 주요 내부 한계입니다." ],
      "allData" : [ "자금 부족" ],
      "keywords" : [ "자금" ],
      "top4" : [ {
        "content" : "자금 부족",
        "count" : 1
      } ]
    },
    "projectDate" : "2026-06-30",
    "quickWinCanvasList" : [ {
      "canvasId" : 1,
      "evaluations" : [ {
        "intentIndex" : 1,
        "score1" : 4,
        "score2" : 3,
        "score3" : 5,
        "score4" : 4,
        "score5" : 3,
        "score6" : 4,
        "score7" : 5,
        "score8" : 3,
        "score9" : 4,
        "stdntNo" : 10,
        "totalScore" : 35
      } ],
      "taskDescription" : "과제 설명",
      "taskName" : "전술 과제",
      "totalScore" : 35,
      "userId" : 10
    } ],
    "strategicActivities" : [ {
      "activityMetric" : "서비스 개선 횟수",
      "interCriteria" : "월 2회 이상"
    } ],
    "tacticals" : [ {
      "goal" : "90% 이상",
      "metric" : "고객 만족도"
    } ],
    "target" : "대학생",
    "teamId" : 1,
    "teamName" : "1팀",
    "visionMissionValue" : {
      "aiMission" : "사회적 가치를 창출하는 미션",
      "aiValue" : "혁신과 협력의 가치",
      "aiVision" : "지속 가능한 미래를 향한 비전",
      "missionTop4" : [ {
        "content" : "사회적 가치 창출",
        "count" : 2
      } ],
      "valueTop4" : [ {
        "content" : "혁신",
        "count" : 2
      } ],
      "visionTop4" : [ {
        "content" : "지속 가능한 미래",
        "count" : 3
      } ]
    }
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].teamId

Number

팀 ID

data[].teamName

String

팀 이름

data[].className

String

강의실 이름

data[].target

String

대상

data[].projectDate

String

프로젝트 일자

data[].imageUrl

String

강의실 이미지 URL

data[].impactCheckScores[]

Array

임팩트 체크 점수 목록

data[].impactCheckScores[].userId

Number

사용자 ID

data[].impactCheckScores[].q1Score

Number

문항1 점수

data[].impactCheckScores[].q2Score

Number

문항2 점수

data[].impactCheckScores[].q3Score

Number

문항3 점수

data[].impactCheckScores[].q4Score

Number

문항4 점수

data[].impactCheckScores[].q5Score

Number

문항5 점수

data[].impactCheckScores[].q6Score

Number

문항6 점수

data[].impactCheckScores[].q7Score

Number

문항7 점수

data[].impactCheckScores[].q8Score

Number

문항8 점수

data[].impactCheckScores[].q9Score

Number

문항9 점수

data[].impactCheckScores[].q10Score

Number

문항10 점수

data[].impactCheckScores[].q11Score

Number

문항11 점수

data[].impactCheckScores[].q12Score

Number

문항12 점수

data[].externalThreats

Object

외부 위협 빈도 분석

data[].externalThreats.allData[]

Array

전체 데이터

data[].externalThreats.top4[]

Array

상위 4개

data[].externalThreats.top4[].content

String

내용

data[].externalThreats.top4[].count

Number

빈도 수

data[].externalThreats.keywords[]

Array

키워드 목록

data[].externalThreats.aiSummary[]

Array

AI 요약

data[].internalLimitations

Object

내부 한계 빈도 분석

data[].internalLimitations.allData[]

Array

전체 데이터

data[].internalLimitations.top4[]

Array

상위 4개

data[].internalLimitations.top4[].content

String

내용

data[].internalLimitations.top4[].count

Number

빈도 수

data[].internalLimitations.keywords[]

Array

키워드 목록

data[].internalLimitations.aiSummary[]

Array

AI 요약

data[].visionMissionValue

Object

비전/미션/가치 분석

data[].visionMissionValue.visionTop4[]

Array

비전 상위 4개

data[].visionMissionValue.visionTop4[].content

String

내용

data[].visionMissionValue.visionTop4[].count

Number

빈도 수

data[].visionMissionValue.missionTop4[]

Array

미션 상위 4개

data[].visionMissionValue.missionTop4[].content

String

내용

data[].visionMissionValue.missionTop4[].count

Number

빈도 수

data[].visionMissionValue.valueTop4[]

Array

가치 상위 4개

data[].visionMissionValue.valueTop4[].content

String

내용

data[].visionMissionValue.valueTop4[].count

Number

빈도 수

data[].visionMissionValue.aiVision

String

AI 비전 요약

data[].visionMissionValue.aiMission

String

AI 미션 요약

data[].visionMissionValue.aiValue

String

AI 가치 요약

data[].flowCanvasGoals

Object

성과경로 목표 분석

data[].flowCanvasGoals.goals[]

Array

목표 목록

data[].flowCanvasGoals.goals[].title

String

목표 제목

data[].flowCanvasGoals.goals[].description

String

목표 설명

data[].flowCanvasGoals.goals[].count

Number

빈도 수

data[].flowCanvasGoals.keywords[]

Array

키워드 목록

data[].tacticals[]

Array

전술 지표 목록

data[].tacticals[].metric

String

전술 지표

data[].tacticals[].goal

String

전술 목표

data[].strategicActivities[]

Array

전략 활동 목록

data[].strategicActivities[].activityMetric

String

활동 지표

data[].strategicActivities[].interCriteria

String

중간 기준

data[].quickWinCanvasList[]

Array

QuickWin 캔버스 목록

data[].quickWinCanvasList[].canvasId

Number

캔버스 ID

data[].quickWinCanvasList[].userId

Number

작성자 ID

data[].quickWinCanvasList[].taskName

String

과제명

data[].quickWinCanvasList[].taskDescription

String

과제 설명

data[].quickWinCanvasList[].totalScore

Number

총 점수

data[].quickWinCanvasList[].evaluations[]

Array

평가 목록

data[].quickWinCanvasList[].evaluations[].intentIndex

Number

투자 의향서 인덱스

data[].quickWinCanvasList[].evaluations[].stdntNo

Number

학생 번호

data[].quickWinCanvasList[].evaluations[].score1

Number

점수1

data[].quickWinCanvasList[].evaluations[].score2

Number

점수2

data[].quickWinCanvasList[].evaluations[].score3

Number

점수3

data[].quickWinCanvasList[].evaluations[].score4

Number

점수4

data[].quickWinCanvasList[].evaluations[].score5

Number

점수5

data[].quickWinCanvasList[].evaluations[].score6

Number

점수6

data[].quickWinCanvasList[].evaluations[].score7

Number

점수7

data[].quickWinCanvasList[].evaluations[].score8

Number

점수8

data[].quickWinCanvasList[].evaluations[].score9

Number

점수9

data[].quickWinCanvasList[].evaluations[].totalScore

Number

총 점수

data[].buildWinCanvasList[]

Array

BuildWin 캔버스 목록

data[].buildWinCanvasList[].canvasId

Number

캔버스 ID

data[].buildWinCanvasList[].userId

Number

작성자 ID

data[].buildWinCanvasList[].taskName

String

과제명

data[].buildWinCanvasList[].taskDescription

String

과제 설명

data[].buildWinCanvasList[].totalScore

Number

총 점수

data[].buildWinCanvasList[].evaluations[]

Array

평가 목록

data[].buildWinCanvasList[].evaluations[].intentIndex

Number

투자 의향서 인덱스

data[].buildWinCanvasList[].evaluations[].stdntNo

Number

학생 번호

data[].buildWinCanvasList[].evaluations[].score1

Number

점수1

data[].buildWinCanvasList[].evaluations[].score2

Number

점수2

data[].buildWinCanvasList[].evaluations[].score3

Number

점수3

data[].buildWinCanvasList[].evaluations[].score4

Number

점수4

data[].buildWinCanvasList[].evaluations[].score5

Number

점수5

data[].buildWinCanvasList[].evaluations[].score6

Number

점수6

data[].buildWinCanvasList[].evaluations[].score7

Number

점수7

data[].buildWinCanvasList[].evaluations[].score8

Number

점수8

data[].buildWinCanvasList[].evaluations[].score9

Number

점수9

data[].buildWinCanvasList[].evaluations[].totalScore

Number

총 점수