mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 10:16:24 +00:00
meeting service API 설계서 수정
This commit is contained in:
parent
a551235ad7
commit
d6df40015e
@ -99,20 +99,13 @@ paths:
|
|||||||
priority: "MEDIUM"
|
priority: "MEDIUM"
|
||||||
status: "IN_PROGRESS"
|
status: "IN_PROGRESS"
|
||||||
minutesId: "770e8400-e29b-41d4-a716-446655440001"
|
minutesId: "770e8400-e29b-41d4-a716-446655440001"
|
||||||
recentMinutes:
|
myMinutes:
|
||||||
- minutesId: "770e8400-e29b-41d4-a716-446655440000"
|
- minutesId: "770e8400-e29b-41d4-a716-446655440000"
|
||||||
title: "아키텍처 설계 회의"
|
title: "아키텍처 설계 회의"
|
||||||
meetingDate: "2025-01-23T14:00:00Z"
|
meetingDate: "2025-01-23T14:00:00Z"
|
||||||
status: "FINALIZED"
|
status: "FINALIZED"
|
||||||
participantCount: 6
|
participantCount: 6
|
||||||
lastModified: "2025-01-23T16:30:00Z"
|
lastModified: "2025-01-23T16:30:00Z"
|
||||||
sharedMinutes:
|
|
||||||
- minutesId: "770e8400-e29b-41d4-a716-446655440002"
|
|
||||||
title: "프로젝트 킥오프 미팅"
|
|
||||||
meetingDate: "2025-01-22T10:00:00Z"
|
|
||||||
status: "FINALIZED"
|
|
||||||
sharedBy: "김철수"
|
|
||||||
sharedAt: "2025-01-22T15:00:00Z"
|
|
||||||
statistics:
|
statistics:
|
||||||
upcomingMeetingsCount: 2
|
upcomingMeetingsCount: 2
|
||||||
activeTodosCount: 5
|
activeTodosCount: 5
|
||||||
@ -154,6 +147,7 @@ paths:
|
|||||||
startTime: "2025-01-25T14:00:00Z"
|
startTime: "2025-01-25T14:00:00Z"
|
||||||
endTime: "2025-01-25T16:00:00Z"
|
endTime: "2025-01-25T16:00:00Z"
|
||||||
location: "회의실 A"
|
location: "회의실 A"
|
||||||
|
agenda: "1. Q1 목표 달성 현황 검토\n2. Q2 전략 방향 논의\n3. 주요 이슈 및 리스크 검토"
|
||||||
participants:
|
participants:
|
||||||
- "user1@example.com"
|
- "user1@example.com"
|
||||||
- "user2@example.com"
|
- "user2@example.com"
|
||||||
@ -288,6 +282,7 @@ paths:
|
|||||||
- 회의 통계 생성
|
- 회의 통계 생성
|
||||||
- AI 제안 데이터 회의록에 반영
|
- AI 제안 데이터 회의록에 반영
|
||||||
- 참석자에게 종료 알림
|
- 참석자에게 종료 알림
|
||||||
|
- 검증 완료 화면 데이터 반환
|
||||||
operationId: endMeeting
|
operationId: endMeeting
|
||||||
x-user-story: UFR-MEET-040
|
x-user-story: UFR-MEET-040
|
||||||
x-controller: MeetingController
|
x-controller: MeetingController
|
||||||
@ -296,6 +291,15 @@ paths:
|
|||||||
parameters:
|
parameters:
|
||||||
- $ref: '#/components/parameters/MeetingIdPath'
|
- $ref: '#/components/parameters/MeetingIdPath'
|
||||||
- $ref: '#/components/parameters/UserIdHeader'
|
- $ref: '#/components/parameters/UserIdHeader'
|
||||||
|
requestBody:
|
||||||
|
required: false
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/EndMeetingRequest'
|
||||||
|
example:
|
||||||
|
finalAgenda: "1. Q1 목표 달성률 85% 확인\n2. 신규 기능 우선순위 결정\n3. 다음 주 개발 일정 조율"
|
||||||
|
applyAiSuggestions: true
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: 회의 종료 성공
|
description: 회의 종료 성공
|
||||||
@ -320,6 +324,53 @@ paths:
|
|||||||
discussion: 3
|
discussion: 3
|
||||||
decision: 2
|
decision: 2
|
||||||
todo: 3
|
todo: 3
|
||||||
|
verificationStatus:
|
||||||
|
totalSections: 4
|
||||||
|
verifiedSections: 2
|
||||||
|
verificationRate: 50
|
||||||
|
sections:
|
||||||
|
- sectionId: "880e8400-e29b-41d4-a716-446655440000"
|
||||||
|
sectionType: "DISCUSSION"
|
||||||
|
title: "회의 개요"
|
||||||
|
isVerified: true
|
||||||
|
isLocked: false
|
||||||
|
verifiers:
|
||||||
|
- userId: "user1"
|
||||||
|
name: "김민준"
|
||||||
|
verifiedAt: "2025-01-25T15:30:00Z"
|
||||||
|
- userId: "user2"
|
||||||
|
name: "박서연"
|
||||||
|
verifiedAt: "2025-01-25T15:35:00Z"
|
||||||
|
- sectionId: "880e8400-e29b-41d4-a716-446655440001"
|
||||||
|
sectionType: "DECISION"
|
||||||
|
title: "논의 사항"
|
||||||
|
isVerified: true
|
||||||
|
isLocked: true
|
||||||
|
verifiers:
|
||||||
|
- userId: "user1"
|
||||||
|
name: "김민준"
|
||||||
|
verifiedAt: "2025-01-25T15:40:00Z"
|
||||||
|
- userId: "user2"
|
||||||
|
name: "박서연"
|
||||||
|
verifiedAt: "2025-01-25T15:42:00Z"
|
||||||
|
- userId: "user3"
|
||||||
|
name: "이준호"
|
||||||
|
verifiedAt: "2025-01-25T15:45:00Z"
|
||||||
|
- sectionId: "880e8400-e29b-41d4-a716-446655440002"
|
||||||
|
sectionType: "TODO"
|
||||||
|
title: "결정 사항"
|
||||||
|
isVerified: false
|
||||||
|
isLocked: false
|
||||||
|
verifiers:
|
||||||
|
- userId: "user2"
|
||||||
|
name: "박서연"
|
||||||
|
verifiedAt: "2025-01-25T15:50:00Z"
|
||||||
|
- sectionId: "880e8400-e29b-41d4-a716-446655440003"
|
||||||
|
sectionType: "TODO"
|
||||||
|
title: "액션 아이템"
|
||||||
|
isVerified: false
|
||||||
|
isLocked: false
|
||||||
|
verifiers: []
|
||||||
'404':
|
'404':
|
||||||
$ref: '#/components/responses/NotFoundError'
|
$ref: '#/components/responses/NotFoundError'
|
||||||
'409':
|
'409':
|
||||||
@ -629,6 +680,85 @@ paths:
|
|||||||
|
|
||||||
# ==================== Todo APIs ====================
|
# ==================== Todo APIs ====================
|
||||||
/todos:
|
/todos:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Todo
|
||||||
|
summary: Todo 목록 조회
|
||||||
|
description: |
|
||||||
|
사용자별 Todo 목록을 조회하고 필터링합니다.
|
||||||
|
- 상태별 필터링 (전체/진행중/완료/마감임박)
|
||||||
|
- 우선순위별 정렬
|
||||||
|
- 통계 정보 포함
|
||||||
|
operationId: getTodoList
|
||||||
|
x-user-story: UFR-TODO-020
|
||||||
|
x-controller: TodoController
|
||||||
|
security:
|
||||||
|
- bearerAuth: []
|
||||||
|
parameters:
|
||||||
|
- $ref: '#/components/parameters/UserIdHeader'
|
||||||
|
- name: status
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
enum: [ALL, IN_PROGRESS, COMPLETED, URGENT]
|
||||||
|
default: ALL
|
||||||
|
description: |
|
||||||
|
Todo 상태 필터
|
||||||
|
- ALL: 전체
|
||||||
|
- IN_PROGRESS: 진행중
|
||||||
|
- COMPLETED: 완료
|
||||||
|
- URGENT: 마감 임박 (3일 이내)
|
||||||
|
- name: sort
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
enum: [DUE_DATE, PRIORITY, CREATED_AT]
|
||||||
|
default: DUE_DATE
|
||||||
|
description: 정렬 기준
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Todo 목록 조회 성공
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/TodoListResponse'
|
||||||
|
example:
|
||||||
|
statistics:
|
||||||
|
total: 12
|
||||||
|
inProgress: 8
|
||||||
|
completed: 4
|
||||||
|
urgent: 3
|
||||||
|
completionRate: 33.3
|
||||||
|
todos:
|
||||||
|
- todoId: "660e8400-e29b-41d4-a716-446655440000"
|
||||||
|
content: "API 설계 문서 작성"
|
||||||
|
assignee:
|
||||||
|
userId: "user1"
|
||||||
|
email: "user@example.com"
|
||||||
|
name: "김민준"
|
||||||
|
dueDate: "2025-01-30"
|
||||||
|
priority: "HIGH"
|
||||||
|
status: "IN_PROGRESS"
|
||||||
|
progress: 60
|
||||||
|
minutesId: "770e8400-e29b-41d4-a716-446655440000"
|
||||||
|
meetingTitle: "아키텍처 설계 회의"
|
||||||
|
createdAt: "2025-01-23T10:00:00Z"
|
||||||
|
- todoId: "660e8400-e29b-41d4-a716-446655440001"
|
||||||
|
content: "데이터베이스 스키마 설계"
|
||||||
|
assignee:
|
||||||
|
userId: "user1"
|
||||||
|
email: "user@example.com"
|
||||||
|
name: "김민준"
|
||||||
|
dueDate: "2025-02-05"
|
||||||
|
priority: "MEDIUM"
|
||||||
|
status: "IN_PROGRESS"
|
||||||
|
progress: 30
|
||||||
|
minutesId: "770e8400-e29b-41d4-a716-446655440001"
|
||||||
|
meetingTitle: "주간 스프린트 리뷰"
|
||||||
|
createdAt: "2025-01-22T14:00:00Z"
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/UnauthorizedError'
|
||||||
|
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- Todo
|
- Todo
|
||||||
@ -712,6 +842,7 @@ paths:
|
|||||||
summary: 템플릿 목록 조회
|
summary: 템플릿 목록 조회
|
||||||
description: |
|
description: |
|
||||||
사용 가능한 회의록 템플릿 목록을 조회합니다.
|
사용 가능한 회의록 템플릿 목록을 조회합니다.
|
||||||
|
각 템플릿의 섹션 정보를 포함하여 반환합니다.
|
||||||
- 일반 회의
|
- 일반 회의
|
||||||
- 스크럼 회의
|
- 스크럼 회의
|
||||||
- 프로젝트 킥오프
|
- 프로젝트 킥오프
|
||||||
@ -730,34 +861,47 @@ paths:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/TemplateResponse'
|
$ref: '#/components/schemas/TemplateResponse'
|
||||||
|
example:
|
||||||
/templates/{templateId}:
|
- templateId: "general-meeting"
|
||||||
get:
|
name: "일반 회의"
|
||||||
tags:
|
description: "기본 회의록 형식"
|
||||||
- Template
|
icon: "📋"
|
||||||
summary: 템플릿 상세 조회
|
category: "GENERAL"
|
||||||
description: 특정 템플릿의 상세 정보를 조회합니다.
|
sections:
|
||||||
operationId: getTemplate
|
- sectionType: "DISCUSSION"
|
||||||
x-user-story: UFR-MEET-020
|
title: "회의 개요"
|
||||||
x-controller: TemplateController
|
order: 1
|
||||||
security:
|
isRequired: true
|
||||||
- bearerAuth: []
|
- sectionType: "DISCUSSION"
|
||||||
parameters:
|
title: "논의 사항"
|
||||||
- name: templateId
|
order: 2
|
||||||
in: path
|
isRequired: true
|
||||||
required: true
|
- sectionType: "DECISION"
|
||||||
schema:
|
title: "결정 사항"
|
||||||
type: string
|
order: 3
|
||||||
description: 템플릿 ID
|
isRequired: true
|
||||||
responses:
|
- sectionType: "TODO"
|
||||||
'200':
|
title: "액션 아이템"
|
||||||
description: 템플릿 상세 조회 성공
|
order: 4
|
||||||
content:
|
isRequired: true
|
||||||
application/json:
|
- templateId: "scrum-meeting"
|
||||||
schema:
|
name: "스크럼 회의"
|
||||||
$ref: '#/components/schemas/TemplateDetailResponse'
|
description: "데일리 스탠드업 형식"
|
||||||
'404':
|
icon: "🏃"
|
||||||
$ref: '#/components/responses/NotFoundError'
|
category: "SCRUM"
|
||||||
|
sections:
|
||||||
|
- sectionType: "DISCUSSION"
|
||||||
|
title: "어제 한 일"
|
||||||
|
order: 1
|
||||||
|
isRequired: true
|
||||||
|
- sectionType: "TODO"
|
||||||
|
title: "오늘 할 일"
|
||||||
|
order: 2
|
||||||
|
isRequired: true
|
||||||
|
- sectionType: "CUSTOM"
|
||||||
|
title: "블로커/이슈"
|
||||||
|
order: 3
|
||||||
|
isRequired: true
|
||||||
|
|
||||||
# ==================== WebSocket Endpoints ====================
|
# ==================== WebSocket Endpoints ====================
|
||||||
/ws/minutes/{minutesId}:
|
/ws/minutes/{minutesId}:
|
||||||
@ -880,16 +1024,11 @@ components:
|
|||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/ActiveTodo'
|
$ref: '#/components/schemas/ActiveTodo'
|
||||||
description: 진행 중 Todo 목록
|
description: 진행 중 Todo 목록
|
||||||
recentMinutes:
|
myMinutes:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/RecentMinutes'
|
$ref: '#/components/schemas/MyMinutes'
|
||||||
description: 최근 회의록 목록
|
description: 내 회의록 목록
|
||||||
sharedMinutes:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/SharedMinutes'
|
|
||||||
description: 공유받은 회의록 목록
|
|
||||||
statistics:
|
statistics:
|
||||||
$ref: '#/components/schemas/DashboardStatistics'
|
$ref: '#/components/schemas/DashboardStatistics'
|
||||||
description: 통계 정보
|
description: 통계 정보
|
||||||
@ -949,7 +1088,7 @@ components:
|
|||||||
- priority
|
- priority
|
||||||
- status
|
- status
|
||||||
|
|
||||||
RecentMinutes:
|
MyMinutes:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
minutesId:
|
minutesId:
|
||||||
@ -974,30 +1113,6 @@ components:
|
|||||||
- meetingDate
|
- meetingDate
|
||||||
- status
|
- status
|
||||||
|
|
||||||
SharedMinutes:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
minutesId:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
title:
|
|
||||||
type: string
|
|
||||||
meetingDate:
|
|
||||||
type: string
|
|
||||||
format: date-time
|
|
||||||
status:
|
|
||||||
type: string
|
|
||||||
enum: [DRAFT, FINALIZED]
|
|
||||||
sharedBy:
|
|
||||||
type: string
|
|
||||||
sharedAt:
|
|
||||||
type: string
|
|
||||||
format: date-time
|
|
||||||
required:
|
|
||||||
- minutesId
|
|
||||||
- title
|
|
||||||
- status
|
|
||||||
|
|
||||||
DashboardStatistics:
|
DashboardStatistics:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -1034,6 +1149,10 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
maxLength: 200
|
maxLength: 200
|
||||||
description: 회의 장소
|
description: 회의 장소
|
||||||
|
agenda:
|
||||||
|
type: string
|
||||||
|
maxLength: 1000
|
||||||
|
description: 회의 안건 (선택 사항)
|
||||||
participants:
|
participants:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
@ -1319,14 +1438,7 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/MinutesSection'
|
$ref: '#/components/schemas/MinutesSection'
|
||||||
aiSummaries:
|
description: 섹션별 내용 (AI 요약 및 관련 회의록 포함)
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/AISummary'
|
|
||||||
relatedMinutes:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/RelatedMinutes'
|
|
||||||
permissions:
|
permissions:
|
||||||
$ref: '#/components/schemas/MinutesPermissions'
|
$ref: '#/components/schemas/MinutesPermissions'
|
||||||
status:
|
status:
|
||||||
@ -1390,6 +1502,14 @@ components:
|
|||||||
verifiedAt:
|
verifiedAt:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
|
aiSummary:
|
||||||
|
$ref: '#/components/schemas/AISummary'
|
||||||
|
description: 이 섹션의 AI 요약
|
||||||
|
relatedMinutes:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/RelatedMinutes'
|
||||||
|
description: 이 섹션과 관련된 회의록 목록 (최대 3개)
|
||||||
required:
|
required:
|
||||||
- sectionId
|
- sectionId
|
||||||
- sectionType
|
- sectionType
|
||||||
@ -1405,11 +1525,9 @@ components:
|
|||||||
summaryId:
|
summaryId:
|
||||||
type: string
|
type: string
|
||||||
format: uuid
|
format: uuid
|
||||||
sectionId:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
content:
|
content:
|
||||||
type: string
|
type: string
|
||||||
|
description: AI가 생성한 요약 내용
|
||||||
createdAt:
|
createdAt:
|
||||||
type: string
|
type: string
|
||||||
format: date-time
|
format: date-time
|
||||||
@ -1418,7 +1536,6 @@ components:
|
|||||||
format: date-time
|
format: date-time
|
||||||
required:
|
required:
|
||||||
- summaryId
|
- summaryId
|
||||||
- sectionId
|
|
||||||
- content
|
- content
|
||||||
|
|
||||||
RelatedMinutes:
|
RelatedMinutes:
|
||||||
@ -1475,6 +1592,13 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
aiSummary:
|
aiSummary:
|
||||||
type: string
|
type: string
|
||||||
|
relatedMinutesIds:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
description: 이 섹션과 연결할 관련 회의록 ID 목록 (최대 3개)
|
||||||
|
maxItems: 3
|
||||||
required:
|
required:
|
||||||
- sectionId
|
- sectionId
|
||||||
|
|
||||||
@ -1541,6 +1665,102 @@ components:
|
|||||||
- isVerified
|
- isVerified
|
||||||
|
|
||||||
# ==================== Todo Schemas ====================
|
# ==================== Todo Schemas ====================
|
||||||
|
TodoListResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
statistics:
|
||||||
|
$ref: '#/components/schemas/TodoStatistics'
|
||||||
|
todos:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/TodoDetail'
|
||||||
|
required:
|
||||||
|
- statistics
|
||||||
|
- todos
|
||||||
|
|
||||||
|
TodoStatistics:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
description: 전체 Todo 개수
|
||||||
|
inProgress:
|
||||||
|
type: integer
|
||||||
|
description: 진행 중 Todo 개수
|
||||||
|
completed:
|
||||||
|
type: integer
|
||||||
|
description: 완료된 Todo 개수
|
||||||
|
urgent:
|
||||||
|
type: integer
|
||||||
|
description: 마감 임박 Todo 개수 (3일 이내)
|
||||||
|
completionRate:
|
||||||
|
type: number
|
||||||
|
format: double
|
||||||
|
description: 완료율 (%)
|
||||||
|
required:
|
||||||
|
- total
|
||||||
|
- inProgress
|
||||||
|
- completed
|
||||||
|
- urgent
|
||||||
|
- completionRate
|
||||||
|
|
||||||
|
TodoDetail:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
todoId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
content:
|
||||||
|
type: string
|
||||||
|
assignee:
|
||||||
|
$ref: '#/components/schemas/TodoAssignee'
|
||||||
|
dueDate:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
priority:
|
||||||
|
type: string
|
||||||
|
enum: [HIGH, MEDIUM, LOW]
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
enum: [IN_PROGRESS, COMPLETED]
|
||||||
|
progress:
|
||||||
|
type: integer
|
||||||
|
minimum: 0
|
||||||
|
maximum: 100
|
||||||
|
description: 진행률 (%)
|
||||||
|
minutesId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
meetingTitle:
|
||||||
|
type: string
|
||||||
|
description: 관련 회의 제목
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
required:
|
||||||
|
- todoId
|
||||||
|
- content
|
||||||
|
- assignee
|
||||||
|
- priority
|
||||||
|
- status
|
||||||
|
- minutesId
|
||||||
|
- meetingTitle
|
||||||
|
|
||||||
|
TodoAssignee:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
userId:
|
||||||
|
type: string
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
format: email
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- userId
|
||||||
|
- email
|
||||||
|
- name
|
||||||
|
|
||||||
CreateTodoRequest:
|
CreateTodoRequest:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -1643,29 +1863,17 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
|
icon:
|
||||||
|
type: string
|
||||||
|
description: 템플릿 아이콘 (이모지)
|
||||||
category:
|
category:
|
||||||
type: string
|
type: string
|
||||||
enum: [GENERAL, SCRUM, KICKOFF, WEEKLY]
|
enum: [GENERAL, SCRUM, KICKOFF, WEEKLY]
|
||||||
required:
|
|
||||||
- templateId
|
|
||||||
- name
|
|
||||||
- category
|
|
||||||
|
|
||||||
TemplateDetailResponse:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
templateId:
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
category:
|
|
||||||
type: string
|
|
||||||
sections:
|
sections:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/TemplateSection'
|
$ref: '#/components/schemas/TemplateSection'
|
||||||
|
description: 템플릿 섹션 목록
|
||||||
required:
|
required:
|
||||||
- templateId
|
- templateId
|
||||||
- name
|
- name
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user