diff --git a/.env.example b/.env.example
index 26b15ac4..a1e86cf2 100644
--- a/.env.example
+++ b/.env.example
@@ -1,3 +1,4 @@
NEXT_PUBLIC_API_BASE_URL=
NEXT_PUBLIC_KAKAO_CLIENT_ID=
-NEXT_PUBLIC_GOOGLE_CLIENT_ID=
\ No newline at end of file
+NEXT_PUBLIC_GOOGLE_CLIENT_ID=
+NEXT_PUBLIC_TOSS_CLIENT_KEY=
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 533caede..eef73218 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,50 +7,122 @@ on:
branches:
- develop
- main
+ - sprint2
jobs:
- lint-type-build:
- # 실행 환경: 최신 Ubuntu 이미지
+ # ESLint로 코드 스타일/버그 패턴 검사(경고를 실패로 취급)
+ # 실패 시: yarn lint:fix
+ lint:
runs-on: ubuntu-latest
steps:
- # 저장소 체크아웃
- name: Checkout
uses: actions/checkout@v4
- # Node 설정(버전 고정 및 yarn 캐시 활용)
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- # 의존성 설치(잠금파일 기반, 재현성 높은 설치)
- name: Install dependencies
run: yarn install --frozen-lockfile
- # ESLint로 코드 스타일/버그 패턴 검사(경고를 실패로 취급)
- # 실패 시: yarn lint:fix
- name: Lint
run: yarn lint
- # TypeScript 컴파일러로 타입 체크(빌드 없이 타입만 검증)
+ # TypeScript 컴파일러로 타입 체크(빌드 없이 타입만 검증)
+ typecheck:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'yarn'
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
- name: Type Check
run: yarn typecheck
- # Prettier로 코드 포맷 검사(형식 불일치 시 실패)
- # 실패 시: yarn prettier:fix
+ # Prettier로 코드 포맷 검사(형식 불일치 시 실패)
+ # 실패 시: yarn prettier:fix
+ prettier:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'yarn'
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
- name: Prettier Check
run: yarn prettier
- # Next.js 프로덕션 빌드(정적 분석 및 페이지 최적화 포함)
+ # Next.js 프로덕션 빌드(정적 분석 및 페이지 최적화 포함)
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'yarn'
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
- name: Build
run: yarn build
- # Storybook 정적 빌드(UI 카탈로그가 깨지지 않는지 확인)
+ # Storybook 정적 빌드(UI 카탈로그가 깨지지 않는지 확인)
+ storybook:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'yarn'
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
- name: Build Storybook
run: yarn build-storybook
- # 보안 감사: 고위험 이상의 취약점 리포트(현재는 비차단)
- # 실패로 처리하려면 '|| true'를 제거하세요.
+ # 보안 감사: 고위험 이상의 취약점 리포트(현재는 비차단)
+ # 실패로 처리하려면 '|| true'를 제거하세요.
+ security:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ cache: 'yarn'
+
+ - name: Install dependencies
+ run: yarn install --frozen-lockfile
+
- name: Security Audit
run: yarn audit --level high || true
diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml
index e14f233f..36df20bf 100644
--- a/.github/workflows/deploy-dev.yml
+++ b/.github/workflows/deploy-dev.yml
@@ -25,6 +25,7 @@ jobs:
echo "GOOGLE_SERVICE_ACCOUNT_EMAIL=${{ secrets.GOOGLE_SERVICE_ACCOUNT_EMAIL }}" >> .env
echo "GOOGLE_PRIVATE_KEY=${{ secrets.GOOGLE_PRIVATE_KEY }}" >> .env
echo "NEXT_PUBLIC_STRAPI_URL=${{ secrets.NEXT_PUBLIC_STRAPI_URL }}" >> .env
+ echo "NEXT_PUBLIC_TOSS_CLIENT_KEY=${{ secrets.NEXT_PUBLIC_TOSS_CLIENT_KEY }}" >> .env
- name: DockerHub 로그인
uses: docker/login-action@v2
diff --git a/README.md b/README.md
index fd1009d3..18be4dbc 100644
--- a/README.md
+++ b/README.md
@@ -35,10 +35,10 @@ src/
│
├── hooks/ # React Hooks
│ ├── queries/ # TanStack Query 훅
-│ │ ├── use-user-queries.ts
-│ │ ├── use-study-queries.ts
-│ │ ├── use-review-queries.ts
-│ │ └── use-admin-queries.ts
+│ │ ├── admin-payment-api.ts
+│ │ ├── admin-refund-api.ts
+│ │ ├── bank-search-api.ts
+│ │ └── evaluation-api.ts
│ │
│ └── common/ # 공통 커스텀 훅
│ ├── use-intersection-observer.ts
@@ -82,9 +82,6 @@ src/
│ │ ├── study-list-table.tsx
│ │ └── todo-list.tsx
│ │
-│ ├── calendars/ # 캘린더 컴포넌트
-│ │ └── calendar.tsx
-│ │
│ └── admin/ # 관리자 전용 컴포넌트
│ ├── admin-sidebar.tsx
│ └── member-table.tsx
@@ -119,11 +116,6 @@ src/
│ ├── study.ts # Study Zod 스키마
│ ├── review.ts # Review Zod 스키마
│ └── admin.ts # Admin Zod 스키마
- │
- └── api/ # API 응답 타입 (OpenAPI 생성될 때까지)
- ├── user.types.ts
- ├── study.types.ts
- └── review.types.ts
```
## 🚀 시작하기
@@ -134,19 +126,6 @@ src/
yarn run dev
```
-### 백엔드 API 서버 (Docker)
-
-```bash
-# API 서버 시작
-yarn run api:on
-
-# API 서버 종료
-yarn run api:off
-
-# 로그 확인
-yarn run api:logs
-```
-
### 코드 품질
```bash
@@ -181,6 +160,61 @@ OpenAPI Generator로 생성된 클라이언트 사용법과 환경변수 설정
- [docs/openapi-usage.md](docs/openapi-usage.md)
+### 새로운 API 추가
+
+1. **새 파일 생성**
+
+`src/hooks/queries` 디렉토리에 새로운 파일이 생성되면 자동으로 API 인스턴스 보일러플레이트 코드를 추가하는 코드 제너레이터를 사용해줍니다.
+
+```bash
+yarn generate:api bank-search-api
+```
+
+swagger에서 api 타이틀 이름이 bank search라면 셸에 위와 같은 명령어를 쳐주세요.
+
+
+
+이 명령어는 `src/hooks/queries/bank-search-api.ts` 파일을 생성하고 자동으로 보일러플레이트 코드를 추가합니다.
+
+```typescript
+import { createApiInstance } from '@/api/client/open-api-instance';
+import { BankSearchApi } from '@/api/openapi';
+
+const bankSearchApi = createApiInstance(BankSearchApi);
+```
+
+여러 파일 동시 생성도 가능합니다.
+
+```bash
+yarn generate:api payment-api settlement-api user-api
+```
+
+2. **hook 작성**
+
+파일을 만들었다면 hook을 작성해주세요.
+
+```typescript
+// src/hooks/queries/bank-search-api.ts
+import { useQuery } from '@tanstack/react-query';
+import { createApiInstance } from '@/api/client/open-api-instance';
+import { BankSearchApi } from '@/api/openapi';
+
+const bankSearchApi = createApiInstance(BankSearchApi);
+
+// 훅 작성
+export const useSearchBanks = () => {
+ return useQuery({
+ queryKey: ['bankSearch'],
+ queryFn: async () => {
+ const { data } = await bankSearchApi.getBanks();
+
+ return data.content;
+ },
+ staleTime: 1000 * 60 * 60, // 1 hour
+ });
+};
+```
+
### 새로운 컴포넌트 추가
1. **적절한 분류 선택** (ui / layout / common / features / admin)
@@ -219,71 +253,9 @@ OpenAPI Generator로 생성된 클라이언트 사용법과 환경변수 설정
}
```
-### 새로운 API 추가
-
-1. **API 함수 작성** (`api/endpoints/`)
-
- ```typescript
- // api/endpoints/study.api.ts
- import { axiosInstance } from '@/api/client/axios';
- import type { Study } from '@/models/study.model';
-
- export const StudyAPI = {
- getList: async (): Promise => {
- const res = await axiosInstance.get('/studies');
- return res.data.content;
- },
- };
- ```
-
-2. **Query Hook 추가** (`hooks/queries/`)
-
- ```typescript
- // hooks/queries/use-study-queries.ts
- import { useQuery } from '@tanstack/react-query';
- import { StudyAPI } from '@/api/endpoints/study.api';
-
- export const useStudyQueries = {
- useList: () =>
- useQuery({
- queryKey: ['study', 'list'],
- queryFn: StudyAPI.getList,
- }),
- };
- ```
-
-3. **컴포넌트에서 사용**
-
- ```tsx
- import { useStudyQueries } from '@/hooks/queries/use-study-queries';
-
- export default function StudyList() {
- const { data: studies } = useStudyQueries.useList();
- return {/* ... */}
;
- }
- ```
-
### 새로운 타입/스키마 추가
-1. **API 응답 타입 정의** (`types/api/`)
-
- ```typescript
- // types/api/study.types.ts
- export interface GetStudyListResponse {
- content: Study[];
- totalPages: number;
- totalElements: number;
- }
-
- export interface Study {
- id: number;
- title: string;
- summary: string;
- maxMembersCount: number;
- }
- ```
-
-2. **Zod 스키마 정의** (`types/schemas/`)
+1. **Zod 스키마 정의** (`types/schemas/`)
```typescript
// types/schemas/study.ts
@@ -299,61 +271,6 @@ OpenAPI Generator로 생성된 클라이언트 사용법과 환경변수 설정
export type StudyFormData = z.infer;
```
-### OpenAPI Generator 설정 (추후)
-
-1. **패키지 설치**
-
- ```bash
- npm install --save-dev openapi-typescript-codegen
- ```
-
-2. **package.json에 스크립트 추가**
-
- ```json
- {
- "scripts": {
- "generate:api": "openapi --input ./openapi.yaml --output ./src/api/openapi --client axios"
- }
- }
- ```
-
-3. **타입 자동 생성**
- ```bash
- yarn run generate:api
- ```
-
-### 타입 정의 규칙
-
-| 타입 종류 | 위치 | 설명 | 예시 |
-| ------------------ | ---------------------- | -------------------- | -------------------------- |
-| **API 응답 타입** | `types/api/*.types.ts` | 백엔드 API 응답 구조 | GetUserProfileResponse |
-| **도메인 타입** | `types/domains/*.ts` | 비즈니스 도메인 타입 | User, Study |
-| **Zod 스키마** | `types/domains/*.ts` | 폼 검증 스키마 | UserFormSchema |
-| **UI 타입** | `types/ui.ts` | UI 상태, Props 타입 | ButtonVariant, ModalState |
-| **Form 타입** | `types/form.ts` | 폼 관련 타입 | FormState, ValidationError |
-| **컴포넌트 Props** | 컴포넌트 파일 내부 | 컴포넌트별 Props | ProfileCardProps |
-
-**추후 OpenAPI 도입 시**:
-
-- API 응답 타입: `api/openapi/models/` (자동 생성으로 대체)
-- Zod 스키마: `types/schemas/` (수동 관리 유지)
-
-### Import 경로 규칙
-
-```typescript
-// ✅ 올바른 import
-import { Button } from '@/components/ui/button';
-import { ProfileCard } from '@/components/common/profile-card';
-import { StudyList } from '@/components/features/study-list';
-import { useUserQueries } from '@/hooks/queries/use-user-queries';
-import { UserAPI } from '@/api/endpoints/user.api';
-import type { GetUserProfileResponse } from '@/types/api/user.types';
-import { UserFormSchema } from '@/types/schemas/user';
-
-// ❌ 잘못된 import (상대 경로 사용 금지)
-import { Button } from '../../components/ui/button';
-```
-
## 📝 커밋 컨벤션
```
@@ -366,16 +283,6 @@ test: 테스트 코드
chore: 빌드 업무 수정, 패키지 매니저 수정
```
-## 🧪 테스트
-
-```bash
-# 단위 테스트
-yarn run test
-
-# E2E 테스트
-yarn run test:e2e
-```
-
## 📚 Storybook
```bash
@@ -419,10 +326,10 @@ yarn run chromatic
### 🚀 배포 & 테스트 서버
-| 환경 | 링크 | 상태 |
-| ----------------- | ----------------------------------------------------------------- | ------------------------ |
-| **프론트 테스트** | [test.zeroone.it.kr](https://test.zeroone.it.kr) | develop 브랜치 자동 배포 |
-| **프론트 운영** | https://www.zeroone.it.kr | 예정 |
-| **백엔드 테스트** | [test-api.zeroone.it.kr](https://test-api.zeroone.it.kr) | dev 브랜치 자동 배포 |
-| **백엔드 운영** | https://api.zeroone.it.kr | main 브랜치 자동 배포 |
-| **API 문서** | [Swagger UI](http://test-api.zeroone.it.kr/swagger-ui/index.html) | 백엔드 API 명세서 |
+| 환경 | 링크 | 상태 |
+| -------------------------- | ----------------------------------------------------------------- | ------------------------ |
+| **프론트 테스트** | [test.zeroone.it.kr](https://test.zeroone.it.kr) | develop 브랜치 자동 배포 |
+| **프론트 운영** | https://www.zeroone.it.kr | main 브랜치 자동 배포 |
+| **백엔드 테스트** | [test-api.zeroone.it.kr](https://test-api.zeroone.it.kr) | dev 브랜치 자동 배포 |
+| **백엔드 운영** | https://api.zeroone.it.kr | main 브랜치 자동 배포 |
+| **백엔드 테스트 API 문서** | [Swagger UI](http://test-api.zeroone.it.kr/swagger-ui/index.html) | 백엔드 API 명세서 |
diff --git a/package.json b/package.json
index 1510d8a7..c6c9358f 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"chromatic": "chromatic --project-token=chpt_bc3a617b8073f9f",
"api:on": "sh ./scripts/setup-backend.sh",
"api:off": "docker-compose -f ../study-platform-mvp/docker-compose.yml down",
- "api:logs": "docker-compose -f ../study-platform-mvp/docker-compose.yml logs -f mvp-app"
+ "generate:api": "node scripts/api-generator.mjs"
},
"dependencies": {
"@hookform/resolvers": "^5.2.1",
@@ -37,6 +37,7 @@
"@radix-ui/react-toggle": "^1.1.9",
"@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/postcss": "^4.0.6",
+ "@tosspayments/tosspayments-sdk": "^2.5.0",
"axios": "^1.9.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
@@ -100,8 +101,13 @@
"prettier-plugin-tailwindcss": "^0.6.11",
"shadcn": "^2.4.0-canary.6",
"storybook": "^8.6.12",
+ "strip-ansi": "6",
"typescript": "^5",
"typescript-eslint": "^8.24.0",
"vitest": "^3.1.1"
+ },
+ "resolutions": {
+ "strip-ansi": "6.0.1"
}
+
}
diff --git a/src/shared/icons/temp_1.svg b/public/icons/temp_1.svg
similarity index 100%
rename from src/shared/icons/temp_1.svg
rename to public/icons/temp_1.svg
diff --git a/src/shared/icons/temp_2.svg b/public/icons/temp_2.svg
similarity index 100%
rename from src/shared/icons/temp_2.svg
rename to public/icons/temp_2.svg
diff --git a/src/shared/icons/temp_3.svg b/public/icons/temp_3.svg
similarity index 100%
rename from src/shared/icons/temp_3.svg
rename to public/icons/temp_3.svg
diff --git a/src/shared/icons/temp_4.svg b/public/icons/temp_4.svg
similarity index 100%
rename from src/shared/icons/temp_4.svg
rename to public/icons/temp_4.svg
diff --git a/public/images/notification.svg b/public/images/notification.svg
new file mode 100644
index 00000000..7f30b4a0
--- /dev/null
+++ b/public/images/notification.svg
@@ -0,0 +1,6 @@
+
diff --git a/public/images/payment-success.png b/public/images/payment-success.png
new file mode 100644
index 00000000..6632c35b
Binary files /dev/null and b/public/images/payment-success.png differ
diff --git a/scripts/api-generator.mjs b/scripts/api-generator.mjs
new file mode 100755
index 00000000..e9c7f7d2
--- /dev/null
+++ b/scripts/api-generator.mjs
@@ -0,0 +1,186 @@
+#!/usr/bin/env node
+
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const HOOKS_QUERIES_DIR = path.join(__dirname, '..', 'src', 'hooks', 'queries');
+const WATCH_MODE = process.argv.includes('--watch');
+const args = process.argv.slice(2).filter((arg) => !arg.startsWith('--'));
+
+function toPascalCase(str) {
+ return str
+ .split('-')
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
+ .join('');
+}
+
+function getApiClassName(filename) {
+ const baseName = filename.replace('.ts', '');
+
+ return toPascalCase(baseName);
+}
+
+function generateApiBoilerplate(filename) {
+ const apiClassName = getApiClassName(filename);
+
+ return `import { createApiInstance } from '@/api/client/open-api-instance';
+import { ${apiClassName} } from '@/api/openapi';
+
+const ${apiClassName.charAt(0).toLowerCase() + apiClassName.slice(1)} = createApiInstance(${apiClassName});
+`;
+}
+
+function shouldProcessFile(filename) {
+ if (!filename.endsWith('.ts')) return false;
+ if (filename.endsWith('.d.ts')) return false;
+ if (filename.endsWith('.test.ts')) return false;
+ if (filename.endsWith('.spec.ts')) return false;
+
+ return true;
+}
+
+function isFileEmpty(filePath) {
+ try {
+ const content = fs.readFileSync(filePath, 'utf-8').trim();
+
+ return content.length === 0;
+ } catch (error) {
+ return false;
+ }
+}
+
+function hasApiBoilerplate(filePath) {
+ try {
+ const content = fs.readFileSync(filePath, 'utf-8');
+
+ return content.includes('createApiInstance');
+ } catch (error) {
+ return false;
+ }
+}
+
+function processFile(filePath, isNewFile = false) {
+ const filename = path.basename(filePath);
+
+ if (!shouldProcessFile(filename)) {
+ return;
+ }
+
+ if (!isNewFile && !isFileEmpty(filePath)) {
+ console.log(`⏭️ Skipping ${filename} (file is not empty)`);
+
+ return;
+ }
+
+ if (hasApiBoilerplate(filePath)) {
+ console.log(`⏭️ Skipping ${filename} (already has API boilerplate)`);
+
+ return;
+ }
+
+ const boilerplate = generateApiBoilerplate(filename);
+
+ try {
+ fs.writeFileSync(filePath, boilerplate, 'utf-8');
+ console.log(`✅ Generated boilerplate for ${filename}`);
+ } catch (error) {
+ console.error(`❌ Error writing to ${filename}:`, error.message);
+ }
+}
+
+function createNewFile(filename) {
+ if (!filename.endsWith('.ts')) {
+ filename = `${filename}.ts`;
+ }
+
+ const filePath = path.join(HOOKS_QUERIES_DIR, filename);
+
+ if (fs.existsSync(filePath)) {
+ console.log(`⚠️ File already exists: ${filename}`);
+ console.log(` Use the existing file or delete it first.`);
+
+ return;
+ }
+
+ const boilerplate = generateApiBoilerplate(filename);
+
+ try {
+ fs.writeFileSync(filePath, boilerplate, 'utf-8');
+ console.log(`✅ Created ${filename} with boilerplate code`);
+ } catch (error) {
+ console.error(`❌ Error creating ${filename}:`, error.message);
+ }
+}
+
+function scanExistingFiles() {
+ console.log('🔍 Scanning existing files in src/hooks/queries...\n');
+
+ try {
+ const files = fs.readdirSync(HOOKS_QUERIES_DIR);
+
+ files.forEach((file) => {
+ const filePath = path.join(HOOKS_QUERIES_DIR, file);
+ const stats = fs.statSync(filePath);
+
+ if (stats.isFile()) {
+ processFile(filePath);
+ }
+ });
+
+ console.log('\n✨ Scan complete!\n');
+ } catch (error) {
+ console.error('❌ Error scanning directory:', error.message);
+ }
+}
+
+function watchDirectory() {
+ console.log(`👀 Watching ${HOOKS_QUERIES_DIR} for new files...\n`);
+
+ fs.watch(HOOKS_QUERIES_DIR, { recursive: false }, (eventType, filename) => {
+ if (!filename || eventType !== 'rename') return;
+
+ const filePath = path.join(HOOKS_QUERIES_DIR, filename);
+
+ if (!fs.existsSync(filePath)) return;
+
+ const stats = fs.statSync(filePath);
+ if (!stats.isFile()) return;
+
+ setTimeout(() => {
+ processFile(filePath);
+ }, 100);
+ });
+
+ console.log('Press Ctrl+C to stop watching.\n');
+}
+
+function main() {
+ console.log('🚀 API Code Generator\n');
+
+ if (!fs.existsSync(HOOKS_QUERIES_DIR)) {
+ console.error(`❌ Directory not found: ${HOOKS_QUERIES_DIR}`);
+ process.exit(1);
+ }
+
+ // 파일명이 인자로 전달된 경우
+ if (args.length > 0) {
+ args.forEach((filename) => {
+ createNewFile(filename);
+ });
+
+ return;
+ }
+
+ // 인자가 없으면 기존 동작 수행
+ scanExistingFiles();
+
+ if (WATCH_MODE) {
+ watchDirectory();
+ }
+}
+
+main();
diff --git a/src/api/client/axiosV2.server.ts b/src/api/client/axiosV2.server.ts
new file mode 100644
index 00000000..33cf8bf7
--- /dev/null
+++ b/src/api/client/axiosV2.server.ts
@@ -0,0 +1,33 @@
+import axios, { InternalAxiosRequestConfig } from 'axios';
+import { getServerCookie } from '../../utils/server-cookie';
+
+// * server-side axios 인스턴스
+
+// json 요청
+export const axiosServerInstanceV2 = axios.create({
+ baseURL: `${process.env.NEXT_PUBLIC_API_BASE_URL}`,
+ timeout: 10000,
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ withCredentials: true,
+});
+
+const onRequestServer = async (config: InternalAxiosRequestConfig) => {
+ const accessToken = await getServerCookie('accessToken');
+
+ if (accessToken) {
+ config.headers.Authorization = `Bearer ${accessToken}`;
+ }
+
+ return config;
+};
+
+axiosServerInstanceV2.interceptors.request.use(onRequestServer);
+
+axiosServerInstanceV2.interceptors.response.use(
+ (config) => config,
+ async (error) => {
+ return Promise.reject(error);
+ },
+);
diff --git a/src/api/client/cookie.ts b/src/api/client/cookie.ts
index a932eb70..f050c2c0 100644
--- a/src/api/client/cookie.ts
+++ b/src/api/client/cookie.ts
@@ -15,7 +15,7 @@ export const setCookie = (
const {
path = '/',
secure = true,
- sameSite = 'Strict',
+ sameSite = 'Lax', // Strict에서 Lax로 변경: 외부 사이트에서 redirect 시 쿠키 전송 허용
maxAge = 86400, // 1일
httpOnly = false,
} = options;
diff --git a/src/api/client/open-api-instance.server.ts b/src/api/client/open-api-instance.server.ts
new file mode 100644
index 00000000..ee872658
--- /dev/null
+++ b/src/api/client/open-api-instance.server.ts
@@ -0,0 +1,24 @@
+import { AxiosInstance } from 'axios';
+import { Configuration } from '../openapi';
+
+import { axiosServerInstanceV2 } from './axiosV2.server';
+
+// OpenAPI용 Configuration (서버용)
+const openapiServerConfig = new Configuration({
+ basePath: process.env.NEXT_PUBLIC_API_BASE_URL,
+});
+
+// 서버용 API 인스턴스 생성 헬퍼
+export const createApiServerInstance = (
+ ApiClass: new (
+ config: Configuration,
+ basePath?: string,
+ axios?: AxiosInstance,
+ ) => T,
+): T => {
+ return new ApiClass(
+ openapiServerConfig,
+ openapiServerConfig.basePath,
+ axiosServerInstanceV2,
+ );
+};
diff --git a/src/api/openapi/.openapi-generator/FILES b/src/api/openapi/.openapi-generator/FILES
index 0d7fe5c4..8ed16123 100644
--- a/src/api/openapi/.openapi-generator/FILES
+++ b/src/api/openapi/.openapi-generator/FILES
@@ -8,6 +8,7 @@ api/admin-matching-api.ts
api/admin-payment-api.ts
api/admin-refund-api.ts
api/admin-settlement-api.ts
+api/aligo-kakao-api.ts
api/auth-api.ts
api/bank-search-api.ts
api/daily-study-api.ts
@@ -27,6 +28,7 @@ api/member-tmp-controller-api.ts
api/mission-api.ts
api/notification-api.ts
api/payment-user-api.ts
+api/peer-review-api.ts
api/phone-auth-api.ts
api/refund-user-api.ts
api/settlement-account-api.ts
@@ -36,6 +38,7 @@ api/study-review-api.ts
api/study-space-api.ts
api/tech-stack-api.ts
api/token-apiapi.ts
+api/toss-webhook-api.ts
base.ts
common.ts
configuration.ts
@@ -48,11 +51,15 @@ docs/AdminPaymentApi.md
docs/AdminRefundApi.md
docs/AdminSettlementApi.md
docs/AdminTransactionListResponse.md
+docs/AligoKakaoApi.md
docs/AligoListDetailDto.md
docs/AligoListResponseDto.md
docs/AligoListResponseSchema.md
docs/AligoRemainResponseDto.md
docs/AligoRemainResponseSchema.md
+docs/AlimtalkHeartInfoResponseDto.md
+docs/AlimtalkHistoryDetailResponseDto.md
+docs/AlimtalkHistoryListResponseDto.md
docs/AuthApi.md
docs/AutoRunMatchingRequestDto.md
docs/AvailableStudyTimeDto.md
@@ -61,34 +68,57 @@ docs/BankListResponseSchema.md
docs/BankResponse.md
docs/BankSearchApi.md
docs/BaseResponse.md
+docs/BaseResponseGrantedTokenInfo.md
+docs/BaseResponseGroupStudyDiscretionGradeResponse.md
+docs/BaseResponseGroupStudyMembersResponse.md
+docs/BaseResponseHomeworkResponseDto.md
+docs/BaseResponseMatchingRequestResponse.md
+docs/BaseResponseMemberAccountHistoryResponseDto.md
+docs/BaseResponseObject.md
+docs/BaseResponseString.md
+docs/BaseResponseStudySpaceIsParticipateResponse.md
+docs/BaseResponseTemporalToken.md
+docs/BaseResponseVoid.md
+docs/ButtonDto.md
docs/CalendarDayStatus.md
+docs/CancelData.md
docs/CareerListResponse.md
docs/CareerResponseDto.md
+docs/ChangeHistDto.md
docs/CompleteDailyStudyRequest.md
docs/CompleteDailyStudyRequestSchema.md
docs/CreateMissionResponseSchema.md
docs/CreateStudySpaceRequest.md
docs/CursorResponseDtoDailyStudyResponse.md
-docs/CursorResponseDtoStudyReservationMember.md
+docs/CursorResponseDtoStudyReservationMemberDto.md
docs/DailyStudyApi.md
docs/DailyStudyResponse.md
+docs/DetailItem.md
docs/DocumentedErrorCodeControllerApi.md
docs/ErrorResponse.md
docs/EvaluationApi.md
+docs/EvaluationCreationResponseDto.md
+docs/EvaluationCreationResponseSchema.md
+docs/EvaluationDetailResponseDto.md
docs/EvaluationRequest.md
+docs/EvaluationResponse.md
+docs/EvaluationResponseSchema.md
docs/FileControllerApi.md
docs/FullMemberProfileResponse.md
docs/FullMemberProfileResponseDto.md
docs/GetDailyStudiesResponseSchema.md
docs/GetGroupStudyMemberStatusResponse.md
docs/GetGroupStudyMemberStatusResponseContent.md
-docs/GetMissionsResponseSchema.md
+docs/GetMemberRoleResponse.md
docs/GetMyDailyStudyCalenderResponseSchema.md
docs/GetStudyDashboardResponseSchema.md
docs/GetStudySpaceResponseSchema.md
docs/GetStudySpacesResponseSchema.md
docs/GetTodayMyDailyStudyResponseSchema.md
-docs/GroupStudInterviewPostResponseContent.md
+docs/GradeDto.md
+docs/GradeInstanceDto.md
+docs/GradeListResponseSchema.md
+docs/GrantedTokenInfo.md
docs/GroupStudyApplicant.md
docs/GroupStudyApplyApi.md
docs/GroupStudyApplyCreationResponse.md
@@ -100,37 +130,35 @@ docs/GroupStudyApplyProcessRequest.md
docs/GroupStudyApplyProcessResponse.md
docs/GroupStudyApplyProcessResponseContent.md
docs/GroupStudyApplyRequest.md
-docs/GroupStudyApplyResponseContent.md
+docs/GroupStudyApplyResponseDto.md
docs/GroupStudyApplyUpdateRequest.md
docs/GroupStudyApplyUpdateResponseContent.md
docs/GroupStudyBasicInfoRequestDto.md
-docs/GroupStudyBasicInfoResponse.md
+docs/GroupStudyBasicInfoResponseDto.md
docs/GroupStudyBasicInfoUpdateRequestDto.md
docs/GroupStudyCreationRequestDto.md
docs/GroupStudyCreationResponse.md
-docs/GroupStudyCreationResponseContent.md
+docs/GroupStudyCreationResponseDto.md
docs/GroupStudyDetailInfoRequestDto.md
-docs/GroupStudyDetailInfoResponse.md
+docs/GroupStudyDetailInfoResponseDto.md
docs/GroupStudyDetailResponse.md
-docs/GroupStudyDetailResponseContent.md
+docs/GroupStudyDiscretionGradeResponse.md
+docs/GroupStudyFullResponseDto.md
docs/GroupStudyHomeworkApi.md
docs/GroupStudyInterviewPostRequest.md
+docs/GroupStudyInterviewPostResponseDto.md
docs/GroupStudyInterviewPostUpdateResponse.md
-docs/GroupStudyListItem.md
+docs/GroupStudyListItemDto.md
docs/GroupStudyListResponse.md
docs/GroupStudyManagementApi.md
docs/GroupStudyMemberApi.md
-docs/GroupStudyMemberProgressGradeResponse.md
-docs/GroupStudyMemberProgressHistoryResponse.md
-docs/GroupStudyMemberProgressInfoResponse.md
-docs/GroupStudyMemberResponse.md
docs/GroupStudyMembersResponse.md
-docs/GroupStudyMembersResponseContent.md
docs/GroupStudyNoticeApi.md
docs/GroupStudyNoticeRequest.md
docs/GroupStudyNoticeResponse.md
docs/GroupStudyNoticeResponseContent.md
-docs/GroupStudySimpleInfoResponse.md
+docs/GroupStudyProgressGradeResponse.md
+docs/GroupStudySimpleInfoResponseDto.md
docs/GroupStudyThreadApi.md
docs/GroupStudyThreadCommentRequest.md
docs/GroupStudyThreadRequest.md
@@ -139,20 +167,32 @@ docs/GroupStudyUpdateResponse.md
docs/GrowthMetricResponse.md
docs/HasMemberNewNotificationResponse.md
docs/HasMemberNewNotificationResponseSchema.md
+docs/HeartInfo.md
+docs/HistoryItem.md
+docs/HomeworkContentDto.md
+docs/HomeworkDetailResponseDto.md
docs/HomeworkEditRequest.md
+docs/HomeworkOptionalContentDto.md
+docs/HomeworkResponseDto.md
docs/HomeworkSubmissionRequest.md
docs/IdNameDto.md
-docs/Image.md
+docs/ImageDto.md
docs/ImageSizeType.md
+docs/Info.md
docs/InterviewAnswer.md
docs/InterviewQuestion.md
docs/JobListResponse.md
docs/JobResponseDto.md
+docs/KakaoChannelListResponseDto.md
+docs/KakaoChannelProfileDto.md
+docs/KakaoTemplateListResponseDto.md
docs/LocalTime.md
docs/MatchingApi.md
docs/MatchingAttributes.md
+docs/MatchingRequestResponse.md
docs/MatchingSystemStatusResponse.md
docs/MatchingSystemStatusSchema.md
+docs/MemberAccountHistoryResponseDto.md
docs/MemberApi.md
docs/MemberCreationRequest.md
docs/MemberCreationResponse.md
@@ -175,11 +215,13 @@ docs/MissionApi.md
docs/MissionCreationRequest.md
docs/MissionCreationResult.md
docs/MissionListResponse.md
-docs/MissionTaskDto.md
+docs/MissionListResponseSchema.md
+docs/MissionResponse.md
+docs/MissionResponseDto.md
docs/MissionUpdateRequest.md
docs/MonthlyCalendarResponse.md
docs/MyGroupStudyApplicationResponse.md
-docs/MyGroupStudyApplyListItem.md
+docs/MyGroupStudyApplyListItemDto.md
docs/NicknameAvailabilityResponse.md
docs/NicknameAvailabilityResponseDto.md
docs/NoContentResponse.md
@@ -188,14 +230,15 @@ docs/NotificationCategoriesResponse.md
docs/NotificationCategoriesResponseSchema.md
docs/NotificationTopicResponse.md
docs/NumberResponse.md
+docs/OAuth2UserInfo.md
docs/OptionalHomeworkSubmission.md
docs/PageAdminTransactionListResponseSchema.md
docs/PageResponseAdminTransactionListResponse.md
docs/PageResponseGroupStudyApplyListItem.md
-docs/PageResponseGroupStudyListItem.md
+docs/PageResponseGroupStudyListItemDto.md
docs/PageResponseMemberNotificationResponse.md
docs/PageResponseMissionListResponse.md
-docs/PageResponseMyGroupStudyApplyListItem.md
+docs/PageResponseMyGroupStudyApplyListItemDto.md
docs/PageResponseParticipatingStudyInfo.md
docs/PageResponseStudyRefundSummaryResponse.md
docs/PageResponseStudySettlementSummaryResponse.md
@@ -209,9 +252,17 @@ docs/Pageable.md
docs/ParticipatingStudyInfo.md
docs/ParticipatingStudyResponse.md
docs/ParticipatingStudyResponseContent.md
+docs/PaymentData.md
docs/PaymentHistoryResponse.md
docs/PaymentSearchCondition.md
docs/PaymentUserApi.md
+docs/PeerReviewApi.md
+docs/PeerReviewCreateRequest.md
+docs/PeerReviewCreationResponse.md
+docs/PeerReviewCreationResponseSchema.md
+docs/PeerReviewListResponse.md
+docs/PeerReviewResponse.md
+docs/PeerReviewUpdateRequest.md
docs/PhoneAuthApi.md
docs/PhoneAuthResponseDto.md
docs/PhoneAuthResponseSchema.md
@@ -230,7 +281,7 @@ docs/RequestAutoStudyMatchingDto.md
docs/ResetWeeklyMatchingRequest.md
docs/ResetWeeklyMatchingResponse.md
docs/ResetWeeklyMatchingSchema.md
-docs/ResizedImage.md
+docs/ResizedImageDto.md
docs/SettlementAccountApi.md
docs/SettlementAccountRegisterRequest.md
docs/SettlementAccountResponse.md
@@ -256,7 +307,7 @@ docs/StudyRefundDetailResponse.md
docs/StudyRefundDetailResponseSchema.md
docs/StudyRefundRejectRequest.md
docs/StudyRefundSummaryResponse.md
-docs/StudyReservationMember.md
+docs/StudyReservationMemberDto.md
docs/StudyReservationResponse.md
docs/StudyReservationResponseContent.md
docs/StudyReviewApi.md
@@ -271,6 +322,12 @@ docs/StudySubjectDto.md
docs/StudySubjectListResponse.md
docs/TechStackApi.md
docs/TechStackResponse.md
+docs/TemplateDto.md
+docs/TemplateInfo.md
+docs/TemplatesSyncStatusDto.md
+docs/TemporalToken.md
+docs/TestAlimtalkResponseSchema.md
+docs/TestAlimtalkSendRequestDto.md
docs/ThreadCommentResponseContent.md
docs/ThreadCommentResponseSchema.md
docs/ThreadSummaryResponse.md
@@ -278,13 +335,16 @@ docs/ThreadSummaryResponseContent.md
docs/TodayStudyDataResponse.md
docs/TokenAPIApi.md
docs/TossPaymentConfirmRequest.md
+docs/TossWebhookApi.md
+docs/TossWebhookPayload.md
+docs/UpdateGroupStudyMemberDiscretionRequest.md
docs/UpdateGroupStudyMemberGreetingRequest.md
-docs/UpdateGroupStudyMemberProgressRequest.md
docs/UpdateMissionResponseSchema.md
docs/UpdateStudySpaceRequest.md
docs/UploadProfileImageRequest.md
docs/UserTransactionDetailResponse.md
docs/UserTransactionListResponse.md
+docs/VirtualAccountInfo.md
docs/VoidResponseSchema.md
git_push.sh
index.ts
@@ -296,36 +356,62 @@ models/aligo-list-response-dto.ts
models/aligo-list-response-schema.ts
models/aligo-remain-response-dto.ts
models/aligo-remain-response-schema.ts
+models/alimtalk-heart-info-response-dto.ts
+models/alimtalk-history-detail-response-dto.ts
+models/alimtalk-history-list-response-dto.ts
models/auto-run-matching-request-dto.ts
models/available-study-time-dto.ts
models/available-study-time-list-response.ts
models/bank-list-response-schema.ts
models/bank-response.ts
+models/base-response-granted-token-info.ts
+models/base-response-group-study-discretion-grade-response.ts
+models/base-response-group-study-members-response.ts
+models/base-response-homework-response-dto.ts
+models/base-response-matching-request-response.ts
+models/base-response-member-account-history-response-dto.ts
+models/base-response-object.ts
+models/base-response-string.ts
+models/base-response-study-space-is-participate-response.ts
+models/base-response-temporal-token.ts
+models/base-response-void.ts
models/base-response.ts
+models/button-dto.ts
models/calendar-day-status.ts
+models/cancel-data.ts
models/career-list-response.ts
models/career-response-dto.ts
+models/change-hist-dto.ts
models/complete-daily-study-request-schema.ts
models/complete-daily-study-request.ts
models/create-mission-response-schema.ts
models/create-study-space-request.ts
models/cursor-response-dto-daily-study-response.ts
-models/cursor-response-dto-study-reservation-member.ts
+models/cursor-response-dto-study-reservation-member-dto.ts
models/daily-study-response.ts
+models/detail-item.ts
models/error-response.ts
+models/evaluation-creation-response-dto.ts
+models/evaluation-creation-response-schema.ts
+models/evaluation-detail-response-dto.ts
models/evaluation-request.ts
+models/evaluation-response-schema.ts
+models/evaluation-response.ts
models/full-member-profile-response-dto.ts
models/full-member-profile-response.ts
models/get-daily-studies-response-schema.ts
models/get-group-study-member-status-response-content.ts
models/get-group-study-member-status-response.ts
-models/get-missions-response-schema.ts
+models/get-member-role-response.ts
models/get-my-daily-study-calender-response-schema.ts
models/get-study-dashboard-response-schema.ts
models/get-study-space-response-schema.ts
models/get-study-spaces-response-schema.ts
models/get-today-my-daily-study-response-schema.ts
-models/group-stud-interview-post-response-content.ts
+models/grade-dto.ts
+models/grade-instance-dto.ts
+models/grade-list-response-schema.ts
+models/granted-token-info.ts
models/group-study-applicant.ts
models/group-study-apply-creation-response-content.ts
models/group-study-apply-creation-response.ts
@@ -336,33 +422,31 @@ models/group-study-apply-process-request.ts
models/group-study-apply-process-response-content.ts
models/group-study-apply-process-response.ts
models/group-study-apply-request.ts
-models/group-study-apply-response-content.ts
+models/group-study-apply-response-dto.ts
models/group-study-apply-update-request.ts
models/group-study-apply-update-response-content.ts
models/group-study-basic-info-request-dto.ts
-models/group-study-basic-info-response.ts
+models/group-study-basic-info-response-dto.ts
models/group-study-basic-info-update-request-dto.ts
models/group-study-creation-request-dto.ts
-models/group-study-creation-response-content.ts
+models/group-study-creation-response-dto.ts
models/group-study-creation-response.ts
models/group-study-detail-info-request-dto.ts
-models/group-study-detail-info-response.ts
-models/group-study-detail-response-content.ts
+models/group-study-detail-info-response-dto.ts
models/group-study-detail-response.ts
+models/group-study-discretion-grade-response.ts
+models/group-study-full-response-dto.ts
models/group-study-interview-post-request.ts
+models/group-study-interview-post-response-dto.ts
models/group-study-interview-post-update-response.ts
-models/group-study-list-item.ts
+models/group-study-list-item-dto.ts
models/group-study-list-response.ts
-models/group-study-member-progress-grade-response.ts
-models/group-study-member-progress-history-response.ts
-models/group-study-member-progress-info-response.ts
-models/group-study-member-response.ts
-models/group-study-members-response-content.ts
models/group-study-members-response.ts
models/group-study-notice-request.ts
models/group-study-notice-response-content.ts
models/group-study-notice-response.ts
-models/group-study-simple-info-response.ts
+models/group-study-progress-grade-response.ts
+models/group-study-simple-info-response-dto.ts
models/group-study-thread-comment-request.ts
models/group-study-thread-request.ts
models/group-study-update-request.ts
@@ -370,20 +454,32 @@ models/group-study-update-response.ts
models/growth-metric-response.ts
models/has-member-new-notification-response-schema.ts
models/has-member-new-notification-response.ts
+models/heart-info.ts
+models/history-item.ts
+models/homework-content-dto.ts
+models/homework-detail-response-dto.ts
models/homework-edit-request.ts
+models/homework-optional-content-dto.ts
+models/homework-response-dto.ts
models/homework-submission-request.ts
models/id-name-dto.ts
+models/image-dto.ts
models/image-size-type.ts
-models/image.ts
models/index.ts
+models/info.ts
models/interview-answer.ts
models/interview-question.ts
models/job-list-response.ts
models/job-response-dto.ts
+models/kakao-channel-list-response-dto.ts
+models/kakao-channel-profile-dto.ts
+models/kakao-template-list-response-dto.ts
models/local-time.ts
models/matching-attributes.ts
+models/matching-request-response.ts
models/matching-system-status-response.ts
models/matching-system-status-schema.ts
+models/member-account-history-response-dto.ts
models/member-creation-request.ts
models/member-creation-response-content.ts
models/member-creation-response.ts
@@ -401,12 +497,14 @@ models/member-profile-update-response-dto.ts
models/member-profile-update-response.ts
models/mission-creation-request.ts
models/mission-creation-result.ts
+models/mission-list-response-schema.ts
models/mission-list-response.ts
-models/mission-task-dto.ts
+models/mission-response-dto.ts
+models/mission-response.ts
models/mission-update-request.ts
models/monthly-calendar-response.ts
models/my-group-study-application-response.ts
-models/my-group-study-apply-list-item.ts
+models/my-group-study-apply-list-item-dto.ts
models/nickname-availability-response-dto.ts
models/nickname-availability-response.ts
models/no-content-response.ts
@@ -414,14 +512,15 @@ models/notification-categories-response-schema.ts
models/notification-categories-response.ts
models/notification-topic-response.ts
models/number-response.ts
+models/oauth2-user-info.ts
models/optional-homework-submission.ts
models/page-admin-transaction-list-response-schema.ts
models/page-response-admin-transaction-list-response.ts
models/page-response-group-study-apply-list-item.ts
-models/page-response-group-study-list-item.ts
+models/page-response-group-study-list-item-dto.ts
models/page-response-member-notification-response.ts
models/page-response-mission-list-response.ts
-models/page-response-my-group-study-apply-list-item.ts
+models/page-response-my-group-study-apply-list-item-dto.ts
models/page-response-participating-study-info.ts
models/page-response-study-refund-summary-response.ts
models/page-response-study-settlement-summary-response.ts
@@ -435,8 +534,15 @@ models/pageable.ts
models/participating-study-info.ts
models/participating-study-response-content.ts
models/participating-study-response.ts
+models/payment-data.ts
models/payment-history-response.ts
models/payment-search-condition.ts
+models/peer-review-create-request.ts
+models/peer-review-creation-response-schema.ts
+models/peer-review-creation-response.ts
+models/peer-review-list-response.ts
+models/peer-review-response.ts
+models/peer-review-update-request.ts
models/phone-auth-response-dto.ts
models/phone-auth-response-schema.ts
models/phone-auth-send-request-dto.ts
@@ -453,7 +559,7 @@ models/request-auto-study-matching-dto.ts
models/reset-weekly-matching-request.ts
models/reset-weekly-matching-response.ts
models/reset-weekly-matching-schema.ts
-models/resized-image.ts
+models/resized-image-dto.ts
models/settlement-account-register-request.ts
models/settlement-account-response-schema.ts
models/settlement-account-response.ts
@@ -476,7 +582,7 @@ models/study-refund-detail-response-schema.ts
models/study-refund-detail-response.ts
models/study-refund-reject-request.ts
models/study-refund-summary-response.ts
-models/study-reservation-member.ts
+models/study-reservation-member-dto.ts
models/study-reservation-response-content.ts
models/study-reservation-response.ts
models/study-settlement-create-request.ts
@@ -488,17 +594,25 @@ models/study-space-is-participate-response.ts
models/study-subject-dto.ts
models/study-subject-list-response.ts
models/tech-stack-response.ts
+models/template-dto.ts
+models/template-info.ts
+models/templates-sync-status-dto.ts
+models/temporal-token.ts
+models/test-alimtalk-response-schema.ts
+models/test-alimtalk-send-request-dto.ts
models/thread-comment-response-content.ts
models/thread-comment-response-schema.ts
models/thread-summary-response-content.ts
models/thread-summary-response.ts
models/today-study-data-response.ts
models/toss-payment-confirm-request.ts
+models/toss-webhook-payload.ts
+models/update-group-study-member-discretion-request.ts
models/update-group-study-member-greeting-request.ts
-models/update-group-study-member-progress-request.ts
models/update-mission-response-schema.ts
models/update-study-space-request.ts
models/upload-profile-image-request.ts
models/user-transaction-detail-response.ts
models/user-transaction-list-response.ts
+models/virtual-account-info.ts
models/void-response-schema.ts
diff --git a/src/api/openapi/api.ts b/src/api/openapi/api.ts
index 8aa8088f..656ca040 100644
--- a/src/api/openapi/api.ts
+++ b/src/api/openapi/api.ts
@@ -20,6 +20,7 @@ export * from './api/admin-matching-api';
export * from './api/admin-payment-api';
export * from './api/admin-refund-api';
export * from './api/admin-settlement-api';
+export * from './api/aligo-kakao-api';
export * from './api/auth-api';
export * from './api/bank-search-api';
export * from './api/daily-study-api';
@@ -39,6 +40,7 @@ export * from './api/member-tmp-controller-api';
export * from './api/mission-api';
export * from './api/notification-api';
export * from './api/payment-user-api';
+export * from './api/peer-review-api';
export * from './api/phone-auth-api';
export * from './api/refund-user-api';
export * from './api/settlement-account-api';
@@ -48,4 +50,5 @@ export * from './api/study-review-api';
export * from './api/study-space-api';
export * from './api/tech-stack-api';
export * from './api/token-apiapi';
+export * from './api/toss-webhook-api';
diff --git a/src/api/openapi/api/admin-api.ts b/src/api/openapi/api/admin-api.ts
index 68857bd0..84f866da 100644
--- a/src/api/openapi/api/admin-api.ts
+++ b/src/api/openapi/api/admin-api.ts
@@ -22,7 +22,7 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseMemberAccountHistoryResponseDto } from '../models';
// @ts-ignore
import type { ErrorResponse } from '../models';
// @ts-ignore
@@ -336,7 +336,7 @@ export const AdminApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getMemberAccountHistoryResponse(memberId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async getMemberAccountHistoryResponse(memberId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getMemberAccountHistoryResponse(memberId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AdminApi.getMemberAccountHistoryResponse']?.[localVarOperationServerIndex]?.url;
@@ -427,7 +427,7 @@ export const AdminApiFactory = function (configuration?: Configuration, basePath
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMemberAccountHistoryResponse(memberId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ getMemberAccountHistoryResponse(memberId: number, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.getMemberAccountHistoryResponse(memberId, options).then((request) => request(axios, basePath));
},
/**
diff --git a/src/api/openapi/api/admin-matching-api.ts b/src/api/openapi/api/admin-matching-api.ts
index 2650fb3c..d2eb6032 100644
--- a/src/api/openapi/api/admin-matching-api.ts
+++ b/src/api/openapi/api/admin-matching-api.ts
@@ -30,6 +30,8 @@ import type { AutoRunMatchingRequestDto } from '../models';
// @ts-ignore
import type { BaseResponse } from '../models';
// @ts-ignore
+import type { BaseResponseMatchingRequestResponse } from '../models';
+// @ts-ignore
import type { ErrorResponse } from '../models';
// @ts-ignore
import type { ResetWeeklyMatchingRequest } from '../models';
@@ -270,6 +272,40 @@ export const AdminMatchingApiAxiosParamCreator = function (configuration?: Confi
options: localVarRequestOptions,
};
},
+ /**
+ * 매칭 시스템 상태를 RECRUITING에서 STUDYING으로 변경합니다. **관리자 권한(ROLE_ADMIN)이 필요합니다.**
+ * @summary 스터디 사이클 시작
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ startStudyCycle: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/matching/start-cycle`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
/**
* 관리자가 특정 매칭 요청의 상태, 파트너 등을 변경합니다.
* @summary 관리자 매칭 변경/취소
@@ -330,7 +366,7 @@ export const AdminMatchingApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async createMatchingRequestByAdmin(adminMatchingCreateRequest: AdminMatchingCreateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async createMatchingRequestByAdmin(adminMatchingCreateRequest: AdminMatchingCreateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.createMatchingRequestByAdmin(adminMatchingCreateRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AdminMatchingApi.createMatchingRequestByAdmin']?.[localVarOperationServerIndex]?.url;
@@ -368,7 +404,7 @@ export const AdminMatchingApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getMatchingRequest(matchingRequestId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async getMatchingRequest(matchingRequestId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getMatchingRequest(matchingRequestId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AdminMatchingApi.getMatchingRequest']?.[localVarOperationServerIndex]?.url;
@@ -400,6 +436,18 @@ export const AdminMatchingApiFp = function(configuration?: Configuration) {
const localVarOperationServerBasePath = operationServerMap['AdminMatchingApi.runAutoMatchingJob']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
+ /**
+ * 매칭 시스템 상태를 RECRUITING에서 STUDYING으로 변경합니다. **관리자 권한(ROLE_ADMIN)이 필요합니다.**
+ * @summary 스터디 사이클 시작
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async startStudyCycle(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.startStudyCycle(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AdminMatchingApi.startStudyCycle']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
/**
* 관리자가 특정 매칭 요청의 상태, 파트너 등을 변경합니다.
* @summary 관리자 매칭 변경/취소
@@ -408,7 +456,7 @@ export const AdminMatchingApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async updateMatchingRequestByAdmin(matchingRequestId: number, adminMatchingUpdateRequest: AdminMatchingUpdateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async updateMatchingRequestByAdmin(matchingRequestId: number, adminMatchingUpdateRequest: AdminMatchingUpdateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.updateMatchingRequestByAdmin(matchingRequestId, adminMatchingUpdateRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AdminMatchingApi.updateMatchingRequestByAdmin']?.[localVarOperationServerIndex]?.url;
@@ -430,7 +478,7 @@ export const AdminMatchingApiFactory = function (configuration?: Configuration,
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- createMatchingRequestByAdmin(adminMatchingCreateRequest: AdminMatchingCreateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ createMatchingRequestByAdmin(adminMatchingCreateRequest: AdminMatchingCreateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.createMatchingRequestByAdmin(adminMatchingCreateRequest, options).then((request) => request(axios, basePath));
},
/**
@@ -459,7 +507,7 @@ export const AdminMatchingApiFactory = function (configuration?: Configuration,
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMatchingRequest(matchingRequestId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ getMatchingRequest(matchingRequestId: number, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.getMatchingRequest(matchingRequestId, options).then((request) => request(axios, basePath));
},
/**
@@ -482,6 +530,15 @@ export const AdminMatchingApiFactory = function (configuration?: Configuration,
runAutoMatchingJob(autoRunMatchingRequestDto: AutoRunMatchingRequestDto, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.runAutoMatchingJob(autoRunMatchingRequestDto, options).then((request) => request(axios, basePath));
},
+ /**
+ * 매칭 시스템 상태를 RECRUITING에서 STUDYING으로 변경합니다. **관리자 권한(ROLE_ADMIN)이 필요합니다.**
+ * @summary 스터디 사이클 시작
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ startStudyCycle(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.startStudyCycle(options).then((request) => request(axios, basePath));
+ },
/**
* 관리자가 특정 매칭 요청의 상태, 파트너 등을 변경합니다.
* @summary 관리자 매칭 변경/취소
@@ -490,7 +547,7 @@ export const AdminMatchingApiFactory = function (configuration?: Configuration,
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- updateMatchingRequestByAdmin(matchingRequestId: number, adminMatchingUpdateRequest: AdminMatchingUpdateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ updateMatchingRequestByAdmin(matchingRequestId: number, adminMatchingUpdateRequest: AdminMatchingUpdateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.updateMatchingRequestByAdmin(matchingRequestId, adminMatchingUpdateRequest, options).then((request) => request(axios, basePath));
},
};
@@ -565,6 +622,16 @@ export class AdminMatchingApi extends BaseAPI {
return AdminMatchingApiFp(this.configuration).runAutoMatchingJob(autoRunMatchingRequestDto, options).then((request) => request(this.axios, this.basePath));
}
+ /**
+ * 매칭 시스템 상태를 RECRUITING에서 STUDYING으로 변경합니다. **관리자 권한(ROLE_ADMIN)이 필요합니다.**
+ * @summary 스터디 사이클 시작
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public startStudyCycle(options?: RawAxiosRequestConfig) {
+ return AdminMatchingApiFp(this.configuration).startStudyCycle(options).then((request) => request(this.axios, this.basePath));
+ }
+
/**
* 관리자가 특정 매칭 요청의 상태, 파트너 등을 변경합니다.
* @summary 관리자 매칭 변경/취소
diff --git a/src/api/openapi/api/admin-payment-api.ts b/src/api/openapi/api/admin-payment-api.ts
index 04ab65da..7c6487b1 100644
--- a/src/api/openapi/api/admin-payment-api.ts
+++ b/src/api/openapi/api/admin-payment-api.ts
@@ -78,7 +78,7 @@ export const AdminPaymentApiAxiosParamCreator = function (configuration?: Config
};
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합)
* @param {PaymentSearchCondition} condition
* @param {Pageable} pageable
@@ -86,7 +86,7 @@ export const AdminPaymentApiAxiosParamCreator = function (configuration?: Config
* @param {string} [endDate] 조회 종료일 (yyyy-MM-dd)
* @param {string} [studyTitle] 스터디명 검색 (부분 일치)
* @param {string} [paymentCode] 거래ID 검색 (부분 일치)
- * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
+ * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
* @param {number} [page] 페이지 번호 (0부터 시작)
* @param {number} [size] 페이지 크기
* @param {*} [options] Override http request option.
@@ -192,7 +192,7 @@ export const AdminPaymentApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합)
* @param {PaymentSearchCondition} condition
* @param {Pageable} pageable
@@ -200,7 +200,7 @@ export const AdminPaymentApiFp = function(configuration?: Configuration) {
* @param {string} [endDate] 조회 종료일 (yyyy-MM-dd)
* @param {string} [studyTitle] 스터디명 검색 (부분 일치)
* @param {string} [paymentCode] 거래ID 검색 (부분 일치)
- * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
+ * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
* @param {number} [page] 페이지 번호 (0부터 시작)
* @param {number} [size] 페이지 크기
* @param {*} [options] Override http request option.
@@ -233,7 +233,7 @@ export const AdminPaymentApiFactory = function (configuration?: Configuration, b
return localVarFp.forceCancelPayment(paymentId, reason, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합)
* @param {PaymentSearchCondition} condition
* @param {Pageable} pageable
@@ -241,7 +241,7 @@ export const AdminPaymentApiFactory = function (configuration?: Configuration, b
* @param {string} [endDate] 조회 종료일 (yyyy-MM-dd)
* @param {string} [studyTitle] 스터디명 검색 (부분 일치)
* @param {string} [paymentCode] 거래ID 검색 (부분 일치)
- * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
+ * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
* @param {number} [page] 페이지 번호 (0부터 시작)
* @param {number} [size] 페이지 크기
* @param {*} [options] Override http request option.
@@ -270,7 +270,7 @@ export class AdminPaymentApi extends BaseAPI {
}
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 관리자 매출 관리 리스트 조회 (결제/환불 통합)
* @param {PaymentSearchCondition} condition
* @param {Pageable} pageable
@@ -278,7 +278,7 @@ export class AdminPaymentApi extends BaseAPI {
* @param {string} [endDate] 조회 종료일 (yyyy-MM-dd)
* @param {string} [studyTitle] 스터디명 검색 (부분 일치)
* @param {string} [paymentCode] 거래ID 검색 (부분 일치)
- * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
+ * @param {string} [type] 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED)
* @param {number} [page] 페이지 번호 (0부터 시작)
* @param {number} [size] 페이지 크기
* @param {*} [options] Override http request option.
diff --git a/src/api/openapi/api/admin-settlement-api.ts b/src/api/openapi/api/admin-settlement-api.ts
index 183a886c..b1e40200 100644
--- a/src/api/openapi/api/admin-settlement-api.ts
+++ b/src/api/openapi/api/admin-settlement-api.ts
@@ -37,7 +37,45 @@ import type { StudySettlementDetailResponseSchema } from '../models';
export const AdminSettlementApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 생성된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `PENDING` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
+ * 작성일자: 2025-12-29 작성자: 이도현 --- ## Description - 생성된 정산 건을 `APPROVED` 상태로 변경합니다. - 정산 내역 검토 후 승인 시 호출합니다. - 승인된 정산은 관리자가 실제 입금 후 완료 처리를 진행합니다. - `PENDING` 상태가 아닌 정산에 대해 승인을 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 승인할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `APPROVED`로 변경된 정산 정보입니다.
+ * @summary 관리자 정산 승인
+ * @param {number} settlementId 승인할 정산 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ approveSettlement: async (settlementId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'settlementId' is not null or undefined
+ assertParamExists('approveSettlement', 'settlementId', settlementId)
+ const localVarPath = `/api/v1/admin/settlements/{settlementId}/approve`
+ .replace(`{${"settlementId"}}`, encodeURIComponent(String(settlementId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 승인된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `APPROVED` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
* @summary 관리자 정산 완료 처리
* @param {number} settlementId 완료 처리할 정산 ID
* @param {*} [options] Override http request option.
@@ -220,7 +258,20 @@ export const AdminSettlementApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = AdminSettlementApiAxiosParamCreator(configuration)
return {
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 생성된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `PENDING` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
+ * 작성일자: 2025-12-29 작성자: 이도현 --- ## Description - 생성된 정산 건을 `APPROVED` 상태로 변경합니다. - 정산 내역 검토 후 승인 시 호출합니다. - 승인된 정산은 관리자가 실제 입금 후 완료 처리를 진행합니다. - `PENDING` 상태가 아닌 정산에 대해 승인을 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 승인할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `APPROVED`로 변경된 정산 정보입니다.
+ * @summary 관리자 정산 승인
+ * @param {number} settlementId 승인할 정산 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async approveSettlement(settlementId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.approveSettlement(settlementId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AdminSettlementApi.approveSettlement']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 승인된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `APPROVED` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
* @summary 관리자 정산 완료 처리
* @param {number} settlementId 완료 처리할 정산 ID
* @param {*} [options] Override http request option.
@@ -277,7 +328,17 @@ export const AdminSettlementApiFactory = function (configuration?: Configuration
const localVarFp = AdminSettlementApiFp(configuration)
return {
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 생성된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `PENDING` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
+ * 작성일자: 2025-12-29 작성자: 이도현 --- ## Description - 생성된 정산 건을 `APPROVED` 상태로 변경합니다. - 정산 내역 검토 후 승인 시 호출합니다. - 승인된 정산은 관리자가 실제 입금 후 완료 처리를 진행합니다. - `PENDING` 상태가 아닌 정산에 대해 승인을 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 승인할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `APPROVED`로 변경된 정산 정보입니다.
+ * @summary 관리자 정산 승인
+ * @param {number} settlementId 승인할 정산 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ approveSettlement(settlementId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.approveSettlement(settlementId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 승인된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `APPROVED` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
* @summary 관리자 정산 완료 처리
* @param {number} settlementId 완료 처리할 정산 ID
* @param {*} [options] Override http request option.
@@ -323,7 +384,18 @@ export const AdminSettlementApiFactory = function (configuration?: Configuration
*/
export class AdminSettlementApi extends BaseAPI {
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 생성된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `PENDING` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
+ * 작성일자: 2025-12-29 작성자: 이도현 --- ## Description - 생성된 정산 건을 `APPROVED` 상태로 변경합니다. - 정산 내역 검토 후 승인 시 호출합니다. - 승인된 정산은 관리자가 실제 입금 후 완료 처리를 진행합니다. - `PENDING` 상태가 아닌 정산에 대해 승인을 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 승인할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `APPROVED`로 변경된 정산 정보입니다.
+ * @summary 관리자 정산 승인
+ * @param {number} settlementId 승인할 정산 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public approveSettlement(settlementId: number, options?: RawAxiosRequestConfig) {
+ return AdminSettlementApiFp(this.configuration).approveSettlement(settlementId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 승인된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `APPROVED` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
* @summary 관리자 정산 완료 처리
* @param {number} settlementId 완료 처리할 정산 ID
* @param {*} [options] Override http request option.
diff --git a/src/api/openapi/api/aligo-kakao-api.ts b/src/api/openapi/api/aligo-kakao-api.ts
new file mode 100644
index 00000000..9ca595f1
--- /dev/null
+++ b/src/api/openapi/api/aligo-kakao-api.ts
@@ -0,0 +1,638 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+// @ts-ignore
+import type { AlimtalkHeartInfoResponseDto } from '../models';
+// @ts-ignore
+import type { AlimtalkHistoryDetailResponseDto } from '../models';
+// @ts-ignore
+import type { AlimtalkHistoryListResponseDto } from '../models';
+// @ts-ignore
+import type { KakaoChannelListResponseDto } from '../models';
+// @ts-ignore
+import type { KakaoTemplateListResponseDto } from '../models';
+// @ts-ignore
+import type { TemplatesSyncStatusDto } from '../models';
+// @ts-ignore
+import type { TestAlimtalkResponseSchema } from '../models';
+// @ts-ignore
+import type { TestAlimtalkSendRequestDto } from '../models';
+/**
+ * AligoKakaoApi - axios parameter creator
+ */
+export const AligoKakaoApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ * 현재 계정에 등록된 모든 Kakao Channel(카카오톡 채널) 목록을 조회합니다. 각 채널의 상태, 승인 상태, 알림톡 사용 여부 등을 확인할 수 있습니다.
+ * @summary 등록된 Kakao Channel 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getChannels: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/channels`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 현재 보유한 SMS, LMS, MMS, 알림톡, 친구톡 등의 발송 가능 건수를 조회합니다. 각 채널별 잔액을 확인하여 발송 가능 여부를 판단할 수 있습니다.
+ * @summary 발송 가능 잔액 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHeartInfo: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/heart-info`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 알림톡 발송 이력을 페이지 단위로 조회합니다. - page: 조회할 페이지 번호 (기본값: 1) - limit: 페이지당 조회 건수 (기본값: 50) - startdate: 조회 시작 날짜 (선택, YYYYMMDD 형식) - enddate: 조회 종료 날짜 (선택, YYYYMMDD 형식)
+ * @summary 알림톡 전송 내역 목록 조회
+ * @param {number} [page] 페이지 번호
+ * @param {number} [limit] 페이지당 조회 건수
+ * @param {string} [startdate] 조회 시작 날짜 (YYYYMMDD)
+ * @param {string} [enddate] 조회 종료 날짜 (YYYYMMDD)
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHistory: async (page?: number, limit?: number, startdate?: string, enddate?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/history`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (limit !== undefined) {
+ localVarQueryParameter['limit'] = limit;
+ }
+
+ if (startdate !== undefined) {
+ localVarQueryParameter['startdate'] = startdate;
+ }
+
+ if (enddate !== undefined) {
+ localVarQueryParameter['enddate'] = enddate;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 특정 전송 내역(mid)에 대한 상세 결과를 조회합니다. 각 수신자별 전송 상태, 결과 메시지, 전송 시간 등 상세 정보를 확인할 수 있습니다.
+ * @summary 알림톡 전송 상세 결과 조회
+ * @param {number} mid 전송 내역 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHistoryDetail: async (mid: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'mid' is not null or undefined
+ assertParamExists('getHistoryDetail', 'mid', mid)
+ const localVarPath = `/api/v1/admin/aligo/kakao/history/{mid}`
+ .replace(`{${"mid"}}`, encodeURIComponent(String(mid)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 알리고 Kakao API에서 등록된 모든 알림톡 템플릿 목록을 조회합니다. 관리자용 API로 현재 Kakao Channel에 등록되어 있는 템플릿 정보를 실시간으로 확인할 수 있습니다.
+ * @summary 등록된 알림톡 템플릿 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getTemplates: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/templates`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 서버에 캐시된 템플릿과 Kakao API의 최신 템플릿 상태를 비교하여 동기화 상태를 확인합니다. - 동기화됨: 캐시와 API의 템플릿이 완전히 일치 - 캐시 미초기화: 서버 시작 후 템플릿이 캐시되지 않음 - API 조회 실패: Kakao API 연결 실패 - 부분 동기화: 템플릿 개수 또는 내용 불일치
+ * @summary 템플릿 동기화 상태 확인
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getTemplatesSyncStatus: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/templates/sync-status`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 관리자가 직접 알림톡을 발송하여 테스트할 수 있는 API입니다. Aligo 템플릿 코드를 직접 지정하여 발송합니다.
+ * @summary 테스트용 알림톡 발송 (관리자)
+ * @param {TestAlimtalkSendRequestDto} testAlimtalkSendRequestDto
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ sendTestAlimtalk: async (testAlimtalkSendRequestDto: TestAlimtalkSendRequestDto, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'testAlimtalkSendRequestDto' is not null or undefined
+ assertParamExists('sendTestAlimtalk', 'testAlimtalkSendRequestDto', testAlimtalkSendRequestDto)
+ const localVarPath = `/api/v1/admin/aligo/kakao/test/send-alimtalk`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(testAlimtalkSendRequestDto, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Kakao API에서 최신 템플릿을 조회하여 서버 캐시에 동기화합니다. 기존 캐시를 삭제 후 새로운 템플릿으로 교체합니다.
+ * @summary 템플릿 동기화 실행
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ syncTemplates: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/admin/aligo/kakao/templates/sync`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * AligoKakaoApi - functional programming interface
+ */
+export const AligoKakaoApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = AligoKakaoApiAxiosParamCreator(configuration)
+ return {
+ /**
+ * 현재 계정에 등록된 모든 Kakao Channel(카카오톡 채널) 목록을 조회합니다. 각 채널의 상태, 승인 상태, 알림톡 사용 여부 등을 확인할 수 있습니다.
+ * @summary 등록된 Kakao Channel 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getChannels(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getChannels(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getChannels']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 현재 보유한 SMS, LMS, MMS, 알림톡, 친구톡 등의 발송 가능 건수를 조회합니다. 각 채널별 잔액을 확인하여 발송 가능 여부를 판단할 수 있습니다.
+ * @summary 발송 가능 잔액 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getHeartInfo(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getHeartInfo(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getHeartInfo']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 알림톡 발송 이력을 페이지 단위로 조회합니다. - page: 조회할 페이지 번호 (기본값: 1) - limit: 페이지당 조회 건수 (기본값: 50) - startdate: 조회 시작 날짜 (선택, YYYYMMDD 형식) - enddate: 조회 종료 날짜 (선택, YYYYMMDD 형식)
+ * @summary 알림톡 전송 내역 목록 조회
+ * @param {number} [page] 페이지 번호
+ * @param {number} [limit] 페이지당 조회 건수
+ * @param {string} [startdate] 조회 시작 날짜 (YYYYMMDD)
+ * @param {string} [enddate] 조회 종료 날짜 (YYYYMMDD)
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getHistory(page?: number, limit?: number, startdate?: string, enddate?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getHistory(page, limit, startdate, enddate, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getHistory']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 특정 전송 내역(mid)에 대한 상세 결과를 조회합니다. 각 수신자별 전송 상태, 결과 메시지, 전송 시간 등 상세 정보를 확인할 수 있습니다.
+ * @summary 알림톡 전송 상세 결과 조회
+ * @param {number} mid 전송 내역 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getHistoryDetail(mid: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getHistoryDetail(mid, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getHistoryDetail']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 알리고 Kakao API에서 등록된 모든 알림톡 템플릿 목록을 조회합니다. 관리자용 API로 현재 Kakao Channel에 등록되어 있는 템플릿 정보를 실시간으로 확인할 수 있습니다.
+ * @summary 등록된 알림톡 템플릿 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getTemplates(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getTemplates(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getTemplates']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 서버에 캐시된 템플릿과 Kakao API의 최신 템플릿 상태를 비교하여 동기화 상태를 확인합니다. - 동기화됨: 캐시와 API의 템플릿이 완전히 일치 - 캐시 미초기화: 서버 시작 후 템플릿이 캐시되지 않음 - API 조회 실패: Kakao API 연결 실패 - 부분 동기화: 템플릿 개수 또는 내용 불일치
+ * @summary 템플릿 동기화 상태 확인
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getTemplatesSyncStatus(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getTemplatesSyncStatus(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.getTemplatesSyncStatus']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 관리자가 직접 알림톡을 발송하여 테스트할 수 있는 API입니다. Aligo 템플릿 코드를 직접 지정하여 발송합니다.
+ * @summary 테스트용 알림톡 발송 (관리자)
+ * @param {TestAlimtalkSendRequestDto} testAlimtalkSendRequestDto
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async sendTestAlimtalk(testAlimtalkSendRequestDto: TestAlimtalkSendRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.sendTestAlimtalk(testAlimtalkSendRequestDto, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.sendTestAlimtalk']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Kakao API에서 최신 템플릿을 조회하여 서버 캐시에 동기화합니다. 기존 캐시를 삭제 후 새로운 템플릿으로 교체합니다.
+ * @summary 템플릿 동기화 실행
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async syncTemplates(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.syncTemplates(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AligoKakaoApi.syncTemplates']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * AligoKakaoApi - factory interface
+ */
+export const AligoKakaoApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = AligoKakaoApiFp(configuration)
+ return {
+ /**
+ * 현재 계정에 등록된 모든 Kakao Channel(카카오톡 채널) 목록을 조회합니다. 각 채널의 상태, 승인 상태, 알림톡 사용 여부 등을 확인할 수 있습니다.
+ * @summary 등록된 Kakao Channel 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getChannels(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getChannels(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 현재 보유한 SMS, LMS, MMS, 알림톡, 친구톡 등의 발송 가능 건수를 조회합니다. 각 채널별 잔액을 확인하여 발송 가능 여부를 판단할 수 있습니다.
+ * @summary 발송 가능 잔액 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHeartInfo(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getHeartInfo(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 알림톡 발송 이력을 페이지 단위로 조회합니다. - page: 조회할 페이지 번호 (기본값: 1) - limit: 페이지당 조회 건수 (기본값: 50) - startdate: 조회 시작 날짜 (선택, YYYYMMDD 형식) - enddate: 조회 종료 날짜 (선택, YYYYMMDD 형식)
+ * @summary 알림톡 전송 내역 목록 조회
+ * @param {number} [page] 페이지 번호
+ * @param {number} [limit] 페이지당 조회 건수
+ * @param {string} [startdate] 조회 시작 날짜 (YYYYMMDD)
+ * @param {string} [enddate] 조회 종료 날짜 (YYYYMMDD)
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHistory(page?: number, limit?: number, startdate?: string, enddate?: string, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getHistory(page, limit, startdate, enddate, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 특정 전송 내역(mid)에 대한 상세 결과를 조회합니다. 각 수신자별 전송 상태, 결과 메시지, 전송 시간 등 상세 정보를 확인할 수 있습니다.
+ * @summary 알림톡 전송 상세 결과 조회
+ * @param {number} mid 전송 내역 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHistoryDetail(mid: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getHistoryDetail(mid, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 알리고 Kakao API에서 등록된 모든 알림톡 템플릿 목록을 조회합니다. 관리자용 API로 현재 Kakao Channel에 등록되어 있는 템플릿 정보를 실시간으로 확인할 수 있습니다.
+ * @summary 등록된 알림톡 템플릿 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getTemplates(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getTemplates(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 서버에 캐시된 템플릿과 Kakao API의 최신 템플릿 상태를 비교하여 동기화 상태를 확인합니다. - 동기화됨: 캐시와 API의 템플릿이 완전히 일치 - 캐시 미초기화: 서버 시작 후 템플릿이 캐시되지 않음 - API 조회 실패: Kakao API 연결 실패 - 부분 동기화: 템플릿 개수 또는 내용 불일치
+ * @summary 템플릿 동기화 상태 확인
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getTemplatesSyncStatus(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getTemplatesSyncStatus(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 관리자가 직접 알림톡을 발송하여 테스트할 수 있는 API입니다. Aligo 템플릿 코드를 직접 지정하여 발송합니다.
+ * @summary 테스트용 알림톡 발송 (관리자)
+ * @param {TestAlimtalkSendRequestDto} testAlimtalkSendRequestDto
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ sendTestAlimtalk(testAlimtalkSendRequestDto: TestAlimtalkSendRequestDto, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.sendTestAlimtalk(testAlimtalkSendRequestDto, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Kakao API에서 최신 템플릿을 조회하여 서버 캐시에 동기화합니다. 기존 캐시를 삭제 후 새로운 템플릿으로 교체합니다.
+ * @summary 템플릿 동기화 실행
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ syncTemplates(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.syncTemplates(options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * AligoKakaoApi - object-oriented interface
+ */
+export class AligoKakaoApi extends BaseAPI {
+ /**
+ * 현재 계정에 등록된 모든 Kakao Channel(카카오톡 채널) 목록을 조회합니다. 각 채널의 상태, 승인 상태, 알림톡 사용 여부 등을 확인할 수 있습니다.
+ * @summary 등록된 Kakao Channel 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getChannels(options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getChannels(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 현재 보유한 SMS, LMS, MMS, 알림톡, 친구톡 등의 발송 가능 건수를 조회합니다. 각 채널별 잔액을 확인하여 발송 가능 여부를 판단할 수 있습니다.
+ * @summary 발송 가능 잔액 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getHeartInfo(options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getHeartInfo(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 알림톡 발송 이력을 페이지 단위로 조회합니다. - page: 조회할 페이지 번호 (기본값: 1) - limit: 페이지당 조회 건수 (기본값: 50) - startdate: 조회 시작 날짜 (선택, YYYYMMDD 형식) - enddate: 조회 종료 날짜 (선택, YYYYMMDD 형식)
+ * @summary 알림톡 전송 내역 목록 조회
+ * @param {number} [page] 페이지 번호
+ * @param {number} [limit] 페이지당 조회 건수
+ * @param {string} [startdate] 조회 시작 날짜 (YYYYMMDD)
+ * @param {string} [enddate] 조회 종료 날짜 (YYYYMMDD)
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getHistory(page?: number, limit?: number, startdate?: string, enddate?: string, options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getHistory(page, limit, startdate, enddate, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 특정 전송 내역(mid)에 대한 상세 결과를 조회합니다. 각 수신자별 전송 상태, 결과 메시지, 전송 시간 등 상세 정보를 확인할 수 있습니다.
+ * @summary 알림톡 전송 상세 결과 조회
+ * @param {number} mid 전송 내역 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getHistoryDetail(mid: number, options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getHistoryDetail(mid, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 알리고 Kakao API에서 등록된 모든 알림톡 템플릿 목록을 조회합니다. 관리자용 API로 현재 Kakao Channel에 등록되어 있는 템플릿 정보를 실시간으로 확인할 수 있습니다.
+ * @summary 등록된 알림톡 템플릿 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getTemplates(options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getTemplates(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 서버에 캐시된 템플릿과 Kakao API의 최신 템플릿 상태를 비교하여 동기화 상태를 확인합니다. - 동기화됨: 캐시와 API의 템플릿이 완전히 일치 - 캐시 미초기화: 서버 시작 후 템플릿이 캐시되지 않음 - API 조회 실패: Kakao API 연결 실패 - 부분 동기화: 템플릿 개수 또는 내용 불일치
+ * @summary 템플릿 동기화 상태 확인
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getTemplatesSyncStatus(options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).getTemplatesSyncStatus(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 관리자가 직접 알림톡을 발송하여 테스트할 수 있는 API입니다. Aligo 템플릿 코드를 직접 지정하여 발송합니다.
+ * @summary 테스트용 알림톡 발송 (관리자)
+ * @param {TestAlimtalkSendRequestDto} testAlimtalkSendRequestDto
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public sendTestAlimtalk(testAlimtalkSendRequestDto: TestAlimtalkSendRequestDto, options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).sendTestAlimtalk(testAlimtalkSendRequestDto, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Kakao API에서 최신 템플릿을 조회하여 서버 캐시에 동기화합니다. 기존 캐시를 삭제 후 새로운 템플릿으로 교체합니다.
+ * @summary 템플릿 동기화 실행
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public syncTemplates(options?: RawAxiosRequestConfig) {
+ return AligoKakaoApiFp(this.configuration).syncTemplates(options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/src/api/openapi/api/auth-api.ts b/src/api/openapi/api/auth-api.ts
index 8d33d963..1d7d34dc 100644
--- a/src/api/openapi/api/auth-api.ts
+++ b/src/api/openapi/api/auth-api.ts
@@ -22,7 +22,9 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseGrantedTokenInfo } from '../models';
+// @ts-ignore
+import type { BaseResponseVoid } from '../models';
// @ts-ignore
import type { NumberResponse } from '../models';
// @ts-ignore
@@ -111,16 +113,15 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration)
* OAuth 2.0 스펙에 따라 로그인을 진행할 때, 리다이렉트되는 엔드포인트. 프론트에서 이 엔드포인트에 직접 요청할 일은 없고, Auth server (카카오, 구글 등 소셜 로그인 서버)에서 이 엔드포인트로 리다이렉션한다.
* @summary OAuth 2.0 소셜 로그인 리다이렉트 URI
* @param {string} authVendor OAuth 2.0 Auth server
- * @param {string} code
+ * @param {string} [code]
* @param {string} [state]
+ * @param {string} [error]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- oauth2Login: async (authVendor: string, code: string, state?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ oauth2Login: async (authVendor: string, code?: string, state?: string, error?: string, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'authVendor' is not null or undefined
assertParamExists('oauth2Login', 'authVendor', authVendor)
- // verify required parameter 'code' is not null or undefined
- assertParamExists('oauth2Login', 'code', code)
const localVarPath = `/api/v1/auth/{authVendor}/redirect-uri`
.replace(`{${"authVendor"}}`, encodeURIComponent(String(authVendor)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
@@ -146,6 +147,10 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration)
localVarQueryParameter['state'] = state;
}
+ if (error !== undefined) {
+ localVarQueryParameter['error'] = error;
+ }
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -220,7 +225,7 @@ export const AuthApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async logout(referer?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async logout(referer?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.logout(referer, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AuthApi.logout']?.[localVarOperationServerIndex]?.url;
@@ -230,13 +235,14 @@ export const AuthApiFp = function(configuration?: Configuration) {
* OAuth 2.0 스펙에 따라 로그인을 진행할 때, 리다이렉트되는 엔드포인트. 프론트에서 이 엔드포인트에 직접 요청할 일은 없고, Auth server (카카오, 구글 등 소셜 로그인 서버)에서 이 엔드포인트로 리다이렉션한다.
* @summary OAuth 2.0 소셜 로그인 리다이렉트 URI
* @param {string} authVendor OAuth 2.0 Auth server
- * @param {string} code
+ * @param {string} [code]
* @param {string} [state]
+ * @param {string} [error]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async oauth2Login(authVendor: string, code: string, state?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.oauth2Login(authVendor, code, state, options);
+ async oauth2Login(authVendor: string, code?: string, state?: string, error?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.oauth2Login(authVendor, code, state, error, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['AuthApi.oauth2Login']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -279,20 +285,21 @@ export const AuthApiFactory = function (configuration?: Configuration, basePath?
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- logout(referer?: string, options?: RawAxiosRequestConfig): AxiosPromise {
+ logout(referer?: string, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.logout(referer, options).then((request) => request(axios, basePath));
},
/**
* OAuth 2.0 스펙에 따라 로그인을 진행할 때, 리다이렉트되는 엔드포인트. 프론트에서 이 엔드포인트에 직접 요청할 일은 없고, Auth server (카카오, 구글 등 소셜 로그인 서버)에서 이 엔드포인트로 리다이렉션한다.
* @summary OAuth 2.0 소셜 로그인 리다이렉트 URI
* @param {string} authVendor OAuth 2.0 Auth server
- * @param {string} code
+ * @param {string} [code]
* @param {string} [state]
+ * @param {string} [error]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- oauth2Login(authVendor: string, code: string, state?: string, options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.oauth2Login(authVendor, code, state, options).then((request) => request(axios, basePath));
+ oauth2Login(authVendor: string, code?: string, state?: string, error?: string, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.oauth2Login(authVendor, code, state, error, options).then((request) => request(axios, basePath));
},
/**
* Access token으로부터 사용자 정보를 가져와 반환. memberId만 반환한다.
@@ -336,13 +343,14 @@ export class AuthApi extends BaseAPI {
* OAuth 2.0 스펙에 따라 로그인을 진행할 때, 리다이렉트되는 엔드포인트. 프론트에서 이 엔드포인트에 직접 요청할 일은 없고, Auth server (카카오, 구글 등 소셜 로그인 서버)에서 이 엔드포인트로 리다이렉션한다.
* @summary OAuth 2.0 소셜 로그인 리다이렉트 URI
* @param {string} authVendor OAuth 2.0 Auth server
- * @param {string} code
+ * @param {string} [code]
* @param {string} [state]
+ * @param {string} [error]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public oauth2Login(authVendor: string, code: string, state?: string, options?: RawAxiosRequestConfig) {
- return AuthApiFp(this.configuration).oauth2Login(authVendor, code, state, options).then((request) => request(this.axios, this.basePath));
+ public oauth2Login(authVendor: string, code?: string, state?: string, error?: string, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).oauth2Login(authVendor, code, state, error, options).then((request) => request(this.axios, this.basePath));
}
/**
diff --git a/src/api/openapi/api/daily-study-api.ts b/src/api/openapi/api/daily-study-api.ts
index fb714b46..2c51b334 100644
--- a/src/api/openapi/api/daily-study-api.ts
+++ b/src/api/openapi/api/daily-study-api.ts
@@ -24,6 +24,8 @@ import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError
// @ts-ignore
import type { BaseResponse } from '../models';
// @ts-ignore
+import type { BaseResponseString } from '../models';
+// @ts-ignore
import type { CompleteDailyStudyRequestSchema } from '../models';
// @ts-ignore
import type { GetDailyStudiesResponseSchema } from '../models';
diff --git a/src/api/openapi/api/evaluation-api.ts b/src/api/openapi/api/evaluation-api.ts
index 725d7013..011e8dc1 100644
--- a/src/api/openapi/api/evaluation-api.ts
+++ b/src/api/openapi/api/evaluation-api.ts
@@ -22,9 +22,17 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { ErrorResponse } from '../models';
+// @ts-ignore
+import type { EvaluationCreationResponseSchema } from '../models';
// @ts-ignore
import type { EvaluationRequest } from '../models';
+// @ts-ignore
+import type { EvaluationResponseSchema } from '../models';
+// @ts-ignore
+import type { GradeListResponseSchema } from '../models';
+// @ts-ignore
+import type { NoContentResponse } from '../models';
/**
* EvaluationApi - axios parameter creator
*/
@@ -43,7 +51,7 @@ export const EvaluationApiAxiosParamCreator = function (configuration?: Configur
assertParamExists('createEvaluation', 'homeworkId', homeworkId)
// verify required parameter 'evaluationRequest' is not null or undefined
assertParamExists('createEvaluation', 'evaluationRequest', evaluationRequest)
- const localVarPath = `/homeworks/{homeworkId}/evaluations`
+ const localVarPath = `/api/v1/homeworks/{homeworkId}/evaluations`
.replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -84,7 +92,7 @@ export const EvaluationApiAxiosParamCreator = function (configuration?: Configur
deleteEvaluation: async (evaluationId: number, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'evaluationId' is not null or undefined
assertParamExists('deleteEvaluation', 'evaluationId', evaluationId)
- const localVarPath = `/evaluations/{evaluationId}`
+ const localVarPath = `/api/v1/evaluations/{evaluationId}`
.replace(`{${"evaluationId"}}`, encodeURIComponent(String(evaluationId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -122,7 +130,7 @@ export const EvaluationApiAxiosParamCreator = function (configuration?: Configur
getEvaluation: async (homeworkId: number, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'homeworkId' is not null or undefined
assertParamExists('getEvaluation', 'homeworkId', homeworkId)
- const localVarPath = `/homeworks/{homeworkId}/evaluation`
+ const localVarPath = `/api/v1/homeworks/{homeworkId}/evaluation`
.replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -141,6 +149,40 @@ export const EvaluationApiAxiosParamCreator = function (configuration?: Configur
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 미션 평가에 사용 가능한 등급 목록을 조회합니다.
+ * @summary 미션 평가 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getMissionEvaluationGrades: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/evaluations/grades`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
@@ -163,7 +205,7 @@ export const EvaluationApiAxiosParamCreator = function (configuration?: Configur
assertParamExists('updateEvaluation', 'evaluationId', evaluationId)
// verify required parameter 'evaluationRequest' is not null or undefined
assertParamExists('updateEvaluation', 'evaluationRequest', evaluationRequest)
- const localVarPath = `/evaluations/{evaluationId}`
+ const localVarPath = `/api/v1/evaluations/{evaluationId}`
.replace(`{${"evaluationId"}}`, encodeURIComponent(String(evaluationId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -211,7 +253,7 @@ export const EvaluationApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async createEvaluation(homeworkId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async createEvaluation(homeworkId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.createEvaluation(homeworkId, evaluationRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['EvaluationApi.createEvaluation']?.[localVarOperationServerIndex]?.url;
@@ -224,7 +266,7 @@ export const EvaluationApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async deleteEvaluation(evaluationId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async deleteEvaluation(evaluationId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.deleteEvaluation(evaluationId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['EvaluationApi.deleteEvaluation']?.[localVarOperationServerIndex]?.url;
@@ -237,12 +279,24 @@ export const EvaluationApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getEvaluation(homeworkId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async getEvaluation(homeworkId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getEvaluation(homeworkId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['EvaluationApi.getEvaluation']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
+ /**
+ * 미션 평가에 사용 가능한 등급 목록을 조회합니다.
+ * @summary 미션 평가 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getMissionEvaluationGrades(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getMissionEvaluationGrades(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EvaluationApi.getMissionEvaluationGrades']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
/**
* 기존 과제 평가의 등급과 댓글을 수정합니다.
* @summary 과제 평가 수정
@@ -251,7 +305,7 @@ export const EvaluationApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async updateEvaluation(evaluationId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async updateEvaluation(evaluationId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.updateEvaluation(evaluationId, evaluationRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['EvaluationApi.updateEvaluation']?.[localVarOperationServerIndex]?.url;
@@ -274,7 +328,7 @@ export const EvaluationApiFactory = function (configuration?: Configuration, bas
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- createEvaluation(homeworkId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ createEvaluation(homeworkId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.createEvaluation(homeworkId, evaluationRequest, options).then((request) => request(axios, basePath));
},
/**
@@ -284,7 +338,7 @@ export const EvaluationApiFactory = function (configuration?: Configuration, bas
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- deleteEvaluation(evaluationId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ deleteEvaluation(evaluationId: number, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.deleteEvaluation(evaluationId, options).then((request) => request(axios, basePath));
},
/**
@@ -294,9 +348,18 @@ export const EvaluationApiFactory = function (configuration?: Configuration, bas
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getEvaluation(homeworkId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ getEvaluation(homeworkId: number, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.getEvaluation(homeworkId, options).then((request) => request(axios, basePath));
},
+ /**
+ * 미션 평가에 사용 가능한 등급 목록을 조회합니다.
+ * @summary 미션 평가 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getMissionEvaluationGrades(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getMissionEvaluationGrades(options).then((request) => request(axios, basePath));
+ },
/**
* 기존 과제 평가의 등급과 댓글을 수정합니다.
* @summary 과제 평가 수정
@@ -305,7 +368,7 @@ export const EvaluationApiFactory = function (configuration?: Configuration, bas
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- updateEvaluation(evaluationId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ updateEvaluation(evaluationId: number, evaluationRequest: EvaluationRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.updateEvaluation(evaluationId, evaluationRequest, options).then((request) => request(axios, basePath));
},
};
@@ -349,6 +412,16 @@ export class EvaluationApi extends BaseAPI {
return EvaluationApiFp(this.configuration).getEvaluation(homeworkId, options).then((request) => request(this.axios, this.basePath));
}
+ /**
+ * 미션 평가에 사용 가능한 등급 목록을 조회합니다.
+ * @summary 미션 평가 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getMissionEvaluationGrades(options?: RawAxiosRequestConfig) {
+ return EvaluationApiFp(this.configuration).getMissionEvaluationGrades(options).then((request) => request(this.axios, this.basePath));
+ }
+
/**
* 기존 과제 평가의 등급과 댓글을 수정합니다.
* @summary 과제 평가 수정
diff --git a/src/api/openapi/api/file-controller-api.ts b/src/api/openapi/api/file-controller-api.ts
index 42c7c454..6d9a527a 100644
--- a/src/api/openapi/api/file-controller-api.ts
+++ b/src/api/openapi/api/file-controller-api.ts
@@ -22,7 +22,7 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseVoid } from '../models';
// @ts-ignore
import type { UploadProfileImageRequest } from '../models';
/**
@@ -95,7 +95,7 @@ export const FileControllerApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async uploadProfileImage(filePath: string, fileClassification: string, uploadProfileImageRequest?: UploadProfileImageRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async uploadProfileImage(filePath: string, fileClassification: string, uploadProfileImageRequest?: UploadProfileImageRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.uploadProfileImage(filePath, fileClassification, uploadProfileImageRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['FileControllerApi.uploadProfileImage']?.[localVarOperationServerIndex]?.url;
@@ -118,7 +118,7 @@ export const FileControllerApiFactory = function (configuration?: Configuration,
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- uploadProfileImage(filePath: string, fileClassification: string, uploadProfileImageRequest?: UploadProfileImageRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ uploadProfileImage(filePath: string, fileClassification: string, uploadProfileImageRequest?: UploadProfileImageRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.uploadProfileImage(filePath, fileClassification, uploadProfileImageRequest, options).then((request) => request(axios, basePath));
},
};
diff --git a/src/api/openapi/api/group-study-homework-api.ts b/src/api/openapi/api/group-study-homework-api.ts
index a478062a..0c78ca2e 100644
--- a/src/api/openapi/api/group-study-homework-api.ts
+++ b/src/api/openapi/api/group-study-homework-api.ts
@@ -24,17 +24,62 @@ import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError
// @ts-ignore
import type { BaseResponse } from '../models';
// @ts-ignore
+import type { BaseResponseHomeworkResponseDto } from '../models';
+// @ts-ignore
+import type { ErrorResponse } from '../models';
+// @ts-ignore
import type { HomeworkEditRequest } from '../models';
// @ts-ignore
import type { HomeworkSubmissionRequest } from '../models';
+// @ts-ignore
+import type { NoContentResponse } from '../models';
/**
* GroupStudyHomeworkApi - axios parameter creator
*/
export const GroupStudyHomeworkApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
- *
- * @param {number} homeworkId
+ * 제출한 과제를 삭제합니다. 평가가 완료되지 않았고 미션 기간 내에만 삭제할 수 있습니다.
+ * @summary 과제 삭제
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteHomework: async (homeworkId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'homeworkId' is not null or undefined
+ assertParamExists('deleteHomework', 'homeworkId', homeworkId)
+ const localVarPath = `/api/v1/homeworks/{homeworkId}`
+ .replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 제출한 과제의 내용을 수정합니다. 평가가 완료되지 않았고 미션 기간 내에만 수정할 수 있습니다. 텍스트 내용은 최소 100자 이상이어야 합니다.
+ * @summary 과제 수정
+ * @param {number} homeworkId 과제 ID
* @param {HomeworkEditRequest} homeworkEditRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -44,7 +89,7 @@ export const GroupStudyHomeworkApiAxiosParamCreator = function (configuration?:
assertParamExists('editHomework', 'homeworkId', homeworkId)
// verify required parameter 'homeworkEditRequest' is not null or undefined
assertParamExists('editHomework', 'homeworkEditRequest', homeworkEditRequest)
- const localVarPath = `/homeworks/{homeworkId}`
+ const localVarPath = `/api/v1/homeworks/{homeworkId}`
.replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -77,7 +122,45 @@ export const GroupStudyHomeworkApiAxiosParamCreator = function (configuration?:
},
/**
*
- * @param {number} missionId
+ * @param {number} homeworkId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHomework: async (homeworkId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'homeworkId' is not null or undefined
+ assertParamExists('getHomework', 'homeworkId', homeworkId)
+ const localVarPath = `/api/v1/homeworks/{homeworkId}`
+ .replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 특정 미션에 대한 과제를 제출합니다. 텍스트 내용은 최소 100자 이상이어야 하며, 선택적으로 링크를 포함할 수 있습니다.
+ * @summary 과제 제출
+ * @param {number} missionId 미션 ID
* @param {HomeworkSubmissionRequest} homeworkSubmissionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -87,7 +170,7 @@ export const GroupStudyHomeworkApiAxiosParamCreator = function (configuration?:
assertParamExists('submitHomework', 'missionId', missionId)
// verify required parameter 'homeworkSubmissionRequest' is not null or undefined
assertParamExists('submitHomework', 'homeworkSubmissionRequest', homeworkSubmissionRequest)
- const localVarPath = `/missions/{missionId}/homeworks`
+ const localVarPath = `/api/v1/missions/{missionId}/homeworks`
.replace(`{${"missionId"}}`, encodeURIComponent(String(missionId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -128,8 +211,22 @@ export const GroupStudyHomeworkApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = GroupStudyHomeworkApiAxiosParamCreator(configuration)
return {
/**
- *
- * @param {number} homeworkId
+ * 제출한 과제를 삭제합니다. 평가가 완료되지 않았고 미션 기간 내에만 삭제할 수 있습니다.
+ * @summary 과제 삭제
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async deleteHomework(homeworkId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.deleteHomework(homeworkId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyHomeworkApi.deleteHomework']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 제출한 과제의 내용을 수정합니다. 평가가 완료되지 않았고 미션 기간 내에만 수정할 수 있습니다. 텍스트 내용은 최소 100자 이상이어야 합니다.
+ * @summary 과제 수정
+ * @param {number} homeworkId 과제 ID
* @param {HomeworkEditRequest} homeworkEditRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -142,7 +239,20 @@ export const GroupStudyHomeworkApiFp = function(configuration?: Configuration) {
},
/**
*
- * @param {number} missionId
+ * @param {number} homeworkId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getHomework(homeworkId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getHomework(homeworkId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyHomeworkApi.getHomework']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 특정 미션에 대한 과제를 제출합니다. 텍스트 내용은 최소 100자 이상이어야 하며, 선택적으로 링크를 포함할 수 있습니다.
+ * @summary 과제 제출
+ * @param {number} missionId 미션 ID
* @param {HomeworkSubmissionRequest} homeworkSubmissionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -163,8 +273,19 @@ export const GroupStudyHomeworkApiFactory = function (configuration?: Configurat
const localVarFp = GroupStudyHomeworkApiFp(configuration)
return {
/**
- *
- * @param {number} homeworkId
+ * 제출한 과제를 삭제합니다. 평가가 완료되지 않았고 미션 기간 내에만 삭제할 수 있습니다.
+ * @summary 과제 삭제
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteHomework(homeworkId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.deleteHomework(homeworkId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 제출한 과제의 내용을 수정합니다. 평가가 완료되지 않았고 미션 기간 내에만 수정할 수 있습니다. 텍스트 내용은 최소 100자 이상이어야 합니다.
+ * @summary 과제 수정
+ * @param {number} homeworkId 과제 ID
* @param {HomeworkEditRequest} homeworkEditRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -174,7 +295,17 @@ export const GroupStudyHomeworkApiFactory = function (configuration?: Configurat
},
/**
*
- * @param {number} missionId
+ * @param {number} homeworkId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getHomework(homeworkId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getHomework(homeworkId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 특정 미션에 대한 과제를 제출합니다. 텍스트 내용은 최소 100자 이상이어야 하며, 선택적으로 링크를 포함할 수 있습니다.
+ * @summary 과제 제출
+ * @param {number} missionId 미션 ID
* @param {HomeworkSubmissionRequest} homeworkSubmissionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -190,8 +321,20 @@ export const GroupStudyHomeworkApiFactory = function (configuration?: Configurat
*/
export class GroupStudyHomeworkApi extends BaseAPI {
/**
- *
- * @param {number} homeworkId
+ * 제출한 과제를 삭제합니다. 평가가 완료되지 않았고 미션 기간 내에만 삭제할 수 있습니다.
+ * @summary 과제 삭제
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public deleteHomework(homeworkId: number, options?: RawAxiosRequestConfig) {
+ return GroupStudyHomeworkApiFp(this.configuration).deleteHomework(homeworkId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 제출한 과제의 내용을 수정합니다. 평가가 완료되지 않았고 미션 기간 내에만 수정할 수 있습니다. 텍스트 내용은 최소 100자 이상이어야 합니다.
+ * @summary 과제 수정
+ * @param {number} homeworkId 과제 ID
* @param {HomeworkEditRequest} homeworkEditRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
@@ -202,7 +345,18 @@ export class GroupStudyHomeworkApi extends BaseAPI {
/**
*
- * @param {number} missionId
+ * @param {number} homeworkId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getHomework(homeworkId: number, options?: RawAxiosRequestConfig) {
+ return GroupStudyHomeworkApiFp(this.configuration).getHomework(homeworkId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 특정 미션에 대한 과제를 제출합니다. 텍스트 내용은 최소 100자 이상이어야 하며, 선택적으로 링크를 포함할 수 있습니다.
+ * @summary 과제 제출
+ * @param {number} missionId 미션 ID
* @param {HomeworkSubmissionRequest} homeworkSubmissionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
diff --git a/src/api/openapi/api/group-study-management-api.ts b/src/api/openapi/api/group-study-management-api.ts
index cf376686..c38dc54c 100644
--- a/src/api/openapi/api/group-study-management-api.ts
+++ b/src/api/openapi/api/group-study-management-api.ts
@@ -173,11 +173,11 @@ export const GroupStudyManagementApiAxiosParamCreator = function (configuration?
* @param {Array} [type] 스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능.
* @param {Array} [targetRoles] 모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능.
* @param {Array} [method] 진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능.
- * @param {boolean} [inProgress] 진행중인 스터디만 조회할지 여부.
+ * @param {boolean} [recruiting] 모집 중인 스터디만 조회할지 여부.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getGroupStudies: async (classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, inProgress?: boolean, options: RawAxiosRequestConfig = {}): Promise => {
+ getGroupStudies: async (classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, recruiting?: boolean, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'classification' is not null or undefined
assertParamExists('getGroupStudies', 'classification', classification)
const localVarPath = `/api/v1/group-studies`;
@@ -220,8 +220,8 @@ export const GroupStudyManagementApiAxiosParamCreator = function (configuration?
localVarQueryParameter['method'] = method;
}
- if (inProgress !== undefined) {
- localVarQueryParameter['in-progress'] = inProgress;
+ if (recruiting !== undefined) {
+ localVarQueryParameter['recruiting'] = recruiting;
}
@@ -471,12 +471,12 @@ export const GroupStudyManagementApiFp = function(configuration?: Configuration)
* @param {Array} [type] 스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능.
* @param {Array} [targetRoles] 모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능.
* @param {Array} [method] 진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능.
- * @param {boolean} [inProgress] 진행중인 스터디만 조회할지 여부.
+ * @param {boolean} [recruiting] 모집 중인 스터디만 조회할지 여부.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, inProgress?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.getGroupStudies(classification, page, pageSize, type, targetRoles, method, inProgress, options);
+ async getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, recruiting?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getGroupStudies(classification, page, pageSize, type, targetRoles, method, recruiting, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['GroupStudyManagementApi.getGroupStudies']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -586,12 +586,12 @@ export const GroupStudyManagementApiFactory = function (configuration?: Configur
* @param {Array} [type] 스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능.
* @param {Array} [targetRoles] 모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능.
* @param {Array} [method] 진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능.
- * @param {boolean} [inProgress] 진행중인 스터디만 조회할지 여부.
+ * @param {boolean} [recruiting] 모집 중인 스터디만 조회할지 여부.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, inProgress?: boolean, options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.getGroupStudies(classification, page, pageSize, type, targetRoles, method, inProgress, options).then((request) => request(axios, basePath));
+ getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, recruiting?: boolean, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getGroupStudies(classification, page, pageSize, type, targetRoles, method, recruiting, options).then((request) => request(axios, basePath));
},
/**
* 특정 그룹스터디의 상세 정보를 조회합니다. **[권한]** - 🌐 **비회원 접근 가능** - 로그인 없이 조회할 수 있습니다.
@@ -687,12 +687,12 @@ export class GroupStudyManagementApi extends BaseAPI {
* @param {Array} [type] 스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능.
* @param {Array} [targetRoles] 모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능.
* @param {Array} [method] 진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능.
- * @param {boolean} [inProgress] 진행중인 스터디만 조회할지 여부.
+ * @param {boolean} [recruiting] 모집 중인 스터디만 조회할지 여부.
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, inProgress?: boolean, options?: RawAxiosRequestConfig) {
- return GroupStudyManagementApiFp(this.configuration).getGroupStudies(classification, page, pageSize, type, targetRoles, method, inProgress, options).then((request) => request(this.axios, this.basePath));
+ public getGroupStudies(classification: GetGroupStudiesClassificationEnum, page?: number, pageSize?: number, type?: Array, targetRoles?: Array, method?: Array, recruiting?: boolean, options?: RawAxiosRequestConfig) {
+ return GroupStudyManagementApiFp(this.configuration).getGroupStudies(classification, page, pageSize, type, targetRoles, method, recruiting, options).then((request) => request(this.axios, this.basePath));
}
/**
diff --git a/src/api/openapi/api/group-study-member-api.ts b/src/api/openapi/api/group-study-member-api.ts
index 7922711b..d6ab9a1c 100644
--- a/src/api/openapi/api/group-study-member-api.ts
+++ b/src/api/openapi/api/group-study-member-api.ts
@@ -22,26 +22,67 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseGroupStudyDiscretionGradeResponse } from '../models';
+// @ts-ignore
+import type { BaseResponseGroupStudyMembersResponse } from '../models';
+// @ts-ignore
+import type { BaseResponseString } from '../models';
// @ts-ignore
import type { ErrorResponse } from '../models';
// @ts-ignore
import type { GetGroupStudyMemberStatusResponse } from '../models';
// @ts-ignore
+import type { GetMemberRoleResponse } from '../models';
+// @ts-ignore
import type { GroupStudyMembersResponse } from '../models';
// @ts-ignore
import type { StringResponseSchema } from '../models';
// @ts-ignore
-import type { UpdateGroupStudyMemberGreetingRequest } from '../models';
+import type { UpdateGroupStudyMemberDiscretionRequest } from '../models';
// @ts-ignore
-import type { UpdateGroupStudyMemberProgressRequest } from '../models';
+import type { UpdateGroupStudyMemberGreetingRequest } from '../models';
/**
* GroupStudyMemberApi - axios parameter creator
*/
export const GroupStudyMemberApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | progressHistory | array | 진행 점수 획득 내역 | [ ... ] | --- ### Response > content > members > progress > progressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | ### Response > content > members > progress > progressHistory > grade | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * @summary 진행 점수 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @deprecated
+ * @throws {RequiredError}
+ */
+ getDiscretionGrades: async (options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/group-studies/members/discretions`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | maxProgressScore | number | 최대 진행 점수 | 100.0 | | discretionGradeHistory | array | 재량 점수 획득 내역 | [ ... ] | | missionProgressHistory | array | 미션 평가 내역 | [ ... ] | --- ### Response > content > members > progress > discretionGradeHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | --- ### Response > content > members > progress > missionProgressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 평가 ID | 1 | | acquiredAt | string(datetime) | 평가 일시 | \"2025-10-07T19:09:58\" | | grade | object | 평가 등급 | { ... } | | reason | string | 평가 사유(코멘트) | \"잘 작성하셨습니다\" |
* @summary 참여자 목록 조회
* @param {number} id 그룹 스터디 ID
* @param {boolean} [isPaging] 페이지네이션 사용 여부
@@ -94,16 +135,16 @@ export const GroupStudyMemberApiAxiosParamCreator = function (configuration?: Co
};
},
/**
- * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
- * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * 작성일자: 2026-01-04 작성자: Claude Code --- ## Description - 그룹스터디 내 요청자(API 호출자)의 역할을 조회합니다. - 역할은 PARTICIPANT(참여자) 또는 LEADER(리더)입니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2026-01-04T10:00:00.12345\" | | content | object | 응답 본문 | { \"role\": \"LEADER\" } | | message | string | 처리 결과 | \"그룹스터디 내 요청자 역할 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | role | string | 그룹스터디 내 역할 | \"PARTICIPANT\" 또는 \"LEADER\" |
+ * @summary 그룹스터디 내 요청자 역할 조회
* @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMemberStatus: async (id: number, options: RawAxiosRequestConfig = {}): Promise => {
+ getMemberRole: async (id: number, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'id' is not null or undefined
- assertParamExists('getMemberStatus', 'id', id)
- const localVarPath = `/api/v1/group-studies/{id}/members/status`
+ assertParamExists('getMemberRole', 'id', id)
+ const localVarPath = `/api/v1/group-studies/{id}/members/role`
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -132,13 +173,17 @@ export const GroupStudyMemberApiAxiosParamCreator = function (configuration?: Co
};
},
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
- * @summary 진행 점수 등급 목록 조회
+ * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
+ * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getProgressGrades: async (options: RawAxiosRequestConfig = {}): Promise => {
- const localVarPath = `/api/v1/group-studies/members/progress-grades`;
+ getMemberStatus: async (id: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'id' is not null or undefined
+ assertParamExists('getMemberStatus', 'id', id)
+ const localVarPath = `/api/v1/group-studies/{id}/members/status`
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
@@ -265,16 +310,16 @@ export const GroupStudyMemberApiAxiosParamCreator = function (configuration?: Co
* 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description - 그룹 스터디 리더가 특정 참여자에게 진행 점수를 부여하거나 수정합니다. - 최초 요청 시 생성, 이후 요청 시 수정합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | gradeId | number | 획득 등급 ID | Y | 1 | | reason | string | 사유 | Y | \"출석\" | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T20:35:41.12345\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"진행 점수 업데이트 성공\" |
* @summary 진행 점수 부여/수정
* @param {number} id 그룹 스터디 ID
- * @param {UpdateGroupStudyMemberProgressRequest} updateGroupStudyMemberProgressRequest
+ * @param {UpdateGroupStudyMemberDiscretionRequest} updateGroupStudyMemberDiscretionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- updateMemberProgress: async (id: number, updateGroupStudyMemberProgressRequest: UpdateGroupStudyMemberProgressRequest, options: RawAxiosRequestConfig = {}): Promise => {
+ updateMemberDiscretion: async (id: number, updateGroupStudyMemberDiscretionRequest: UpdateGroupStudyMemberDiscretionRequest, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'id' is not null or undefined
- assertParamExists('updateMemberProgress', 'id', id)
- // verify required parameter 'updateGroupStudyMemberProgressRequest' is not null or undefined
- assertParamExists('updateMemberProgress', 'updateGroupStudyMemberProgressRequest', updateGroupStudyMemberProgressRequest)
- const localVarPath = `/api/v1/group-studies/{id}/members/progress`
+ assertParamExists('updateMemberDiscretion', 'id', id)
+ // verify required parameter 'updateGroupStudyMemberDiscretionRequest' is not null or undefined
+ assertParamExists('updateMemberDiscretion', 'updateGroupStudyMemberDiscretionRequest', updateGroupStudyMemberDiscretionRequest)
+ const localVarPath = `/api/v1/group-studies/{id}/members/discretions`
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -298,7 +343,7 @@ export const GroupStudyMemberApiAxiosParamCreator = function (configuration?: Co
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
- localVarRequestOptions.data = serializeDataIfNeeded(updateGroupStudyMemberProgressRequest, localVarRequestOptions, configuration)
+ localVarRequestOptions.data = serializeDataIfNeeded(updateGroupStudyMemberDiscretionRequest, localVarRequestOptions, configuration)
return {
url: toPathString(localVarUrlObj),
@@ -315,7 +360,20 @@ export const GroupStudyMemberApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = GroupStudyMemberApiAxiosParamCreator(configuration)
return {
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | progressHistory | array | 진행 점수 획득 내역 | [ ... ] | --- ### Response > content > members > progress > progressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | ### Response > content > members > progress > progressHistory > grade | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * @summary 진행 점수 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @deprecated
+ * @throws {RequiredError}
+ */
+ async getDiscretionGrades(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getDiscretionGrades(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.getDiscretionGrades']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | maxProgressScore | number | 최대 진행 점수 | 100.0 | | discretionGradeHistory | array | 재량 점수 획득 내역 | [ ... ] | | missionProgressHistory | array | 미션 평가 내역 | [ ... ] | --- ### Response > content > members > progress > discretionGradeHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | --- ### Response > content > members > progress > missionProgressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 평가 ID | 1 | | acquiredAt | string(datetime) | 평가 일시 | \"2025-10-07T19:09:58\" | | grade | object | 평가 등급 | { ... } | | reason | string | 평가 사유(코멘트) | \"잘 작성하셨습니다\" |
* @summary 참여자 목록 조회
* @param {number} id 그룹 스터디 ID
* @param {boolean} [isPaging] 페이지네이션 사용 여부
@@ -331,28 +389,29 @@ export const GroupStudyMemberApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
- * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * 작성일자: 2026-01-04 작성자: Claude Code --- ## Description - 그룹스터디 내 요청자(API 호출자)의 역할을 조회합니다. - 역할은 PARTICIPANT(참여자) 또는 LEADER(리더)입니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2026-01-04T10:00:00.12345\" | | content | object | 응답 본문 | { \"role\": \"LEADER\" } | | message | string | 처리 결과 | \"그룹스터디 내 요청자 역할 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | role | string | 그룹스터디 내 역할 | \"PARTICIPANT\" 또는 \"LEADER\" |
+ * @summary 그룹스터디 내 요청자 역할 조회
* @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getMemberStatus(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.getMemberStatus(id, options);
+ async getMemberRole(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getMemberRole(id, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.getMemberStatus']?.[localVarOperationServerIndex]?.url;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.getMemberRole']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
- * @summary 진행 점수 등급 목록 조회
+ * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
+ * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getProgressGrades(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.getProgressGrades(options);
+ async getMemberStatus(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getMemberStatus(id, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.getProgressGrades']?.[localVarOperationServerIndex]?.url;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.getMemberStatus']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
@@ -388,14 +447,14 @@ export const GroupStudyMemberApiFp = function(configuration?: Configuration) {
* 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description - 그룹 스터디 리더가 특정 참여자에게 진행 점수를 부여하거나 수정합니다. - 최초 요청 시 생성, 이후 요청 시 수정합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | gradeId | number | 획득 등급 ID | Y | 1 | | reason | string | 사유 | Y | \"출석\" | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T20:35:41.12345\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"진행 점수 업데이트 성공\" |
* @summary 진행 점수 부여/수정
* @param {number} id 그룹 스터디 ID
- * @param {UpdateGroupStudyMemberProgressRequest} updateGroupStudyMemberProgressRequest
+ * @param {UpdateGroupStudyMemberDiscretionRequest} updateGroupStudyMemberDiscretionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async updateMemberProgress(id: number, updateGroupStudyMemberProgressRequest: UpdateGroupStudyMemberProgressRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.updateMemberProgress(id, updateGroupStudyMemberProgressRequest, options);
+ async updateMemberDiscretion(id: number, updateGroupStudyMemberDiscretionRequest: UpdateGroupStudyMemberDiscretionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.updateMemberDiscretion(id, updateGroupStudyMemberDiscretionRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.updateMemberProgress']?.[localVarOperationServerIndex]?.url;
+ const localVarOperationServerBasePath = operationServerMap['GroupStudyMemberApi.updateMemberDiscretion']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
}
@@ -408,7 +467,17 @@ export const GroupStudyMemberApiFactory = function (configuration?: Configuratio
const localVarFp = GroupStudyMemberApiFp(configuration)
return {
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | progressHistory | array | 진행 점수 획득 내역 | [ ... ] | --- ### Response > content > members > progress > progressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | ### Response > content > members > progress > progressHistory > grade | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * @summary 진행 점수 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @deprecated
+ * @throws {RequiredError}
+ */
+ getDiscretionGrades(options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getDiscretionGrades(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | maxProgressScore | number | 최대 진행 점수 | 100.0 | | discretionGradeHistory | array | 재량 점수 획득 내역 | [ ... ] | | missionProgressHistory | array | 미션 평가 내역 | [ ... ] | --- ### Response > content > members > progress > discretionGradeHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | --- ### Response > content > members > progress > missionProgressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 평가 ID | 1 | | acquiredAt | string(datetime) | 평가 일시 | \"2025-10-07T19:09:58\" | | grade | object | 평가 등급 | { ... } | | reason | string | 평가 사유(코멘트) | \"잘 작성하셨습니다\" |
* @summary 참여자 목록 조회
* @param {number} id 그룹 스터디 ID
* @param {boolean} [isPaging] 페이지네이션 사용 여부
@@ -421,23 +490,24 @@ export const GroupStudyMemberApiFactory = function (configuration?: Configuratio
return localVarFp.getGroupStudyMembers(id, isPaging, pageSize, pageNumber, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
- * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * 작성일자: 2026-01-04 작성자: Claude Code --- ## Description - 그룹스터디 내 요청자(API 호출자)의 역할을 조회합니다. - 역할은 PARTICIPANT(참여자) 또는 LEADER(리더)입니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2026-01-04T10:00:00.12345\" | | content | object | 응답 본문 | { \"role\": \"LEADER\" } | | message | string | 처리 결과 | \"그룹스터디 내 요청자 역할 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | role | string | 그룹스터디 내 역할 | \"PARTICIPANT\" 또는 \"LEADER\" |
+ * @summary 그룹스터디 내 요청자 역할 조회
* @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMemberStatus(id: number, options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.getMemberStatus(id, options).then((request) => request(axios, basePath));
+ getMemberRole(id: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getMemberRole(id, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
- * @summary 진행 점수 등급 목록 조회
+ * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
+ * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getProgressGrades(options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.getProgressGrades(options).then((request) => request(axios, basePath));
+ getMemberStatus(id: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getMemberStatus(id, options).then((request) => request(axios, basePath));
},
/**
* 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 나가거나, 그룹 스터디 리더가 특정 참여자를 내보냅니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | reason | string | 사유 | Y | 그룹 스터디 리더가 특정 참여자를 내보냅니다. | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"그룹 스터디 참여자 탈퇴 처리 성공\" |
@@ -466,12 +536,12 @@ export const GroupStudyMemberApiFactory = function (configuration?: Configuratio
* 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description - 그룹 스터디 리더가 특정 참여자에게 진행 점수를 부여하거나 수정합니다. - 최초 요청 시 생성, 이후 요청 시 수정합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | gradeId | number | 획득 등급 ID | Y | 1 | | reason | string | 사유 | Y | \"출석\" | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T20:35:41.12345\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"진행 점수 업데이트 성공\" |
* @summary 진행 점수 부여/수정
* @param {number} id 그룹 스터디 ID
- * @param {UpdateGroupStudyMemberProgressRequest} updateGroupStudyMemberProgressRequest
+ * @param {UpdateGroupStudyMemberDiscretionRequest} updateGroupStudyMemberDiscretionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- updateMemberProgress(id: number, updateGroupStudyMemberProgressRequest: UpdateGroupStudyMemberProgressRequest, options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.updateMemberProgress(id, updateGroupStudyMemberProgressRequest, options).then((request) => request(axios, basePath));
+ updateMemberDiscretion(id: number, updateGroupStudyMemberDiscretionRequest: UpdateGroupStudyMemberDiscretionRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.updateMemberDiscretion(id, updateGroupStudyMemberDiscretionRequest, options).then((request) => request(axios, basePath));
},
};
};
@@ -481,7 +551,18 @@ export const GroupStudyMemberApiFactory = function (configuration?: Configuratio
*/
export class GroupStudyMemberApi extends BaseAPI {
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | progressHistory | array | 진행 점수 획득 내역 | [ ... ] | --- ### Response > content > members > progress > progressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | ### Response > content > members > progress > progressHistory > grade | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+ * @summary 진행 점수 등급 목록 조회
+ * @param {*} [options] Override http request option.
+ * @deprecated
+ * @throws {RequiredError}
+ */
+ public getDiscretionGrades(options?: RawAxiosRequestConfig) {
+ return GroupStudyMemberApiFp(this.configuration).getDiscretionGrades(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | maxProgressScore | number | 최대 진행 점수 | 100.0 | | discretionGradeHistory | array | 재량 점수 획득 내역 | [ ... ] | | missionProgressHistory | array | 미션 평가 내역 | [ ... ] | --- ### Response > content > members > progress > discretionGradeHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | --- ### Response > content > members > progress > missionProgressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 평가 ID | 1 | | acquiredAt | string(datetime) | 평가 일시 | \"2025-10-07T19:09:58\" | | grade | object | 평가 등급 | { ... } | | reason | string | 평가 사유(코멘트) | \"잘 작성하셨습니다\" |
* @summary 참여자 목록 조회
* @param {number} id 그룹 스터디 ID
* @param {boolean} [isPaging] 페이지네이션 사용 여부
@@ -495,24 +576,25 @@ export class GroupStudyMemberApi extends BaseAPI {
}
/**
- * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
- * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * 작성일자: 2026-01-04 작성자: Claude Code --- ## Description - 그룹스터디 내 요청자(API 호출자)의 역할을 조회합니다. - 역할은 PARTICIPANT(참여자) 또는 LEADER(리더)입니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2026-01-04T10:00:00.12345\" | | content | object | 응답 본문 | { \"role\": \"LEADER\" } | | message | string | 처리 결과 | \"그룹스터디 내 요청자 역할 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | role | string | 그룹스터디 내 역할 | \"PARTICIPANT\" 또는 \"LEADER\" |
+ * @summary 그룹스터디 내 요청자 역할 조회
* @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public getMemberStatus(id: number, options?: RawAxiosRequestConfig) {
- return GroupStudyMemberApiFp(this.configuration).getMemberStatus(id, options).then((request) => request(this.axios, this.basePath));
+ public getMemberRole(id: number, options?: RawAxiosRequestConfig) {
+ return GroupStudyMemberApiFp(this.configuration).getMemberRole(id, options).then((request) => request(this.axios, this.basePath));
}
/**
- * 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
- * @summary 진행 점수 등급 목록 조회
+ * 작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
+ * @summary 그룹스터디 회원의 현재 상태 및 사유 조회
+ * @param {number} id 그룹스터디 ID
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public getProgressGrades(options?: RawAxiosRequestConfig) {
- return GroupStudyMemberApiFp(this.configuration).getProgressGrades(options).then((request) => request(this.axios, this.basePath));
+ public getMemberStatus(id: number, options?: RawAxiosRequestConfig) {
+ return GroupStudyMemberApiFp(this.configuration).getMemberStatus(id, options).then((request) => request(this.axios, this.basePath));
}
/**
@@ -544,12 +626,12 @@ export class GroupStudyMemberApi extends BaseAPI {
* 작성일자: 2025-09-28 작성자: 성효빈 --- ## Description - 그룹 스터디 리더가 특정 참여자에게 진행 점수를 부여하거나 수정합니다. - 최초 요청 시 생성, 이후 요청 시 수정합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | gradeId | number | 획득 등급 ID | Y | 1 | | reason | string | 사유 | Y | \"출석\" | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T20:35:41.12345\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"진행 점수 업데이트 성공\" |
* @summary 진행 점수 부여/수정
* @param {number} id 그룹 스터디 ID
- * @param {UpdateGroupStudyMemberProgressRequest} updateGroupStudyMemberProgressRequest
+ * @param {UpdateGroupStudyMemberDiscretionRequest} updateGroupStudyMemberDiscretionRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public updateMemberProgress(id: number, updateGroupStudyMemberProgressRequest: UpdateGroupStudyMemberProgressRequest, options?: RawAxiosRequestConfig) {
- return GroupStudyMemberApiFp(this.configuration).updateMemberProgress(id, updateGroupStudyMemberProgressRequest, options).then((request) => request(this.axios, this.basePath));
+ public updateMemberDiscretion(id: number, updateGroupStudyMemberDiscretionRequest: UpdateGroupStudyMemberDiscretionRequest, options?: RawAxiosRequestConfig) {
+ return GroupStudyMemberApiFp(this.configuration).updateMemberDiscretion(id, updateGroupStudyMemberDiscretionRequest, options).then((request) => request(this.axios, this.basePath));
}
}
diff --git a/src/api/openapi/api/matching-api.ts b/src/api/openapi/api/matching-api.ts
index d4e33ba8..55b2b867 100644
--- a/src/api/openapi/api/matching-api.ts
+++ b/src/api/openapi/api/matching-api.ts
@@ -24,6 +24,8 @@ import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError
// @ts-ignore
import type { BaseResponse } from '../models';
// @ts-ignore
+import type { BaseResponseObject } from '../models';
+// @ts-ignore
import type { ErrorResponse } from '../models';
// @ts-ignore
import type { MatchingSystemStatusSchema } from '../models';
diff --git a/src/api/openapi/api/member-tmp-controller-api.ts b/src/api/openapi/api/member-tmp-controller-api.ts
index f1c400e2..edb526c9 100644
--- a/src/api/openapi/api/member-tmp-controller-api.ts
+++ b/src/api/openapi/api/member-tmp-controller-api.ts
@@ -22,7 +22,7 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseVoid } from '../models';
/**
* MemberTmpControllerApi - axios parameter creator
*/
@@ -80,7 +80,7 @@ export const MemberTmpControllerApiFp = function(configuration?: Configuration)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async deleteMemberPermanently(memberId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async deleteMemberPermanently(memberId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.deleteMemberPermanently(memberId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['MemberTmpControllerApi.deleteMemberPermanently']?.[localVarOperationServerIndex]?.url;
@@ -101,7 +101,7 @@ export const MemberTmpControllerApiFactory = function (configuration?: Configura
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- deleteMemberPermanently(memberId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ deleteMemberPermanently(memberId: number, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.deleteMemberPermanently(memberId, options).then((request) => request(axios, basePath));
},
};
diff --git a/src/api/openapi/api/mission-api.ts b/src/api/openapi/api/mission-api.ts
index 77901326..57454ac5 100644
--- a/src/api/openapi/api/mission-api.ts
+++ b/src/api/openapi/api/mission-api.ts
@@ -22,16 +22,20 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
-// @ts-ignore
import type { CreateMissionResponseSchema } from '../models';
// @ts-ignore
-import type { GetMissionsResponseSchema } from '../models';
+import type { ErrorResponse } from '../models';
// @ts-ignore
import type { MissionCreationRequest } from '../models';
// @ts-ignore
+import type { MissionListResponseSchema } from '../models';
+// @ts-ignore
+import type { MissionResponse } from '../models';
+// @ts-ignore
import type { MissionUpdateRequest } from '../models';
// @ts-ignore
+import type { NoContentResponse } from '../models';
+// @ts-ignore
import type { UpdateMissionResponseSchema } from '../models';
/**
* MissionApi - axios parameter creator
@@ -39,7 +43,7 @@ import type { UpdateMissionResponseSchema } from '../models';
export const MissionApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
- * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
+ * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
* @summary 그룹스터디 미션 생성
* @param {number} groupStudyId 그룹스터디 ID
* @param {MissionCreationRequest} missionCreationRequest 미션 생성 요청 정보
@@ -51,7 +55,7 @@ export const MissionApiAxiosParamCreator = function (configuration?: Configurati
assertParamExists('createMission', 'groupStudyId', groupStudyId)
// verify required parameter 'missionCreationRequest' is not null or undefined
assertParamExists('createMission', 'missionCreationRequest', missionCreationRequest)
- const localVarPath = `/group-studies/{groupStudyId}/missions`
+ const localVarPath = `/api/v1/group-studies/{groupStudyId}/missions`
.replace(`{${"groupStudyId"}}`, encodeURIComponent(String(groupStudyId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -82,19 +86,98 @@ export const MissionApiAxiosParamCreator = function (configuration?: Configurati
options: localVarRequestOptions,
};
},
+ /**
+ * 특정 미션을 삭제합니다.
+ * @summary 미션 삭제
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteMission: async (missionId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'missionId' is not null or undefined
+ assertParamExists('deleteMission', 'missionId', missionId)
+ const localVarPath = `/api/v1/missions/{missionId}`
+ .replace(`{${"missionId"}}`, encodeURIComponent(String(missionId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 미션 ID를 통해 특정 미션의 상세 정보를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 **[Request]** - PathVariable: missionId (필수) - 미션 ID
+ * @summary 그룹스터디 미션 조회
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getMission: async (missionId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'missionId' is not null or undefined
+ assertParamExists('getMission', 'missionId', missionId)
+ const localVarPath = `/api/v1/missions/{missionId}`
+ .replace(`{${"missionId"}}`, encodeURIComponent(String(missionId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
/**
* 특정 그룹스터디의 미션 목록을 페이지네이션으로 조회합니다. **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - QueryParam: page (선택, 기본값: 1) - 페이지 번호 (1부터 시작) - QueryParam: size (선택, 기본값: 10) - 페이지 크기 **[Response]** - PageResponseDto: 미션 목록과 페이지 정보 - 각 미션 정보: id, title, startTime, endTime, status
* @summary 그룹스터디 미션 목록 조회
* @param {number} groupStudyId 그룹스터디 ID
+ * @param {GetMissionsSearchTypeEnum} searchType 검색 타입 - 진행 중인 미션 혹은 완료된 미션
* @param {number} [page] 페이지 번호 (1부터 시작, 기본값: 1)
- * @param {number} [size] 페이지 크기 (기본값: 10)
+ * @param {number} [pageSize] 페이지 크기 (기본값: 10)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMissions: async (groupStudyId: number, page?: number, size?: number, options: RawAxiosRequestConfig = {}): Promise => {
+ getMissions: async (groupStudyId: number, searchType: GetMissionsSearchTypeEnum, page?: number, pageSize?: number, options: RawAxiosRequestConfig = {}): Promise => {
// verify required parameter 'groupStudyId' is not null or undefined
assertParamExists('getMissions', 'groupStudyId', groupStudyId)
- const localVarPath = `/group-studies/{groupStudyId}/missions`
+ // verify required parameter 'searchType' is not null or undefined
+ assertParamExists('getMissions', 'searchType', searchType)
+ const localVarPath = `/api/v1/group-studies/{groupStudyId}/missions`
.replace(`{${"groupStudyId"}}`, encodeURIComponent(String(groupStudyId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -115,8 +198,12 @@ export const MissionApiAxiosParamCreator = function (configuration?: Configurati
localVarQueryParameter['page'] = page;
}
- if (size !== undefined) {
- localVarQueryParameter['size'] = size;
+ if (pageSize !== undefined) {
+ localVarQueryParameter['page-size'] = pageSize;
+ }
+
+ if (searchType !== undefined) {
+ localVarQueryParameter['search-type'] = searchType;
}
@@ -131,7 +218,7 @@ export const MissionApiAxiosParamCreator = function (configuration?: Configurati
};
},
/**
- * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 - endTime (선택): 미션 종료 시간 - tasks (필수): 미션 작업 목록 - scoreAllocation (선택): 점수 배분 (1~10) **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
+ * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 - endTime (필수): 미션 종료 시간 **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
* @summary 그룹스터디 미션 수정
* @param {number} missionId 미션 ID
* @param {MissionUpdateRequest} missionUpdateRequest 미션 수정 요청 정보
@@ -143,7 +230,7 @@ export const MissionApiAxiosParamCreator = function (configuration?: Configurati
assertParamExists('updateMission', 'missionId', missionId)
// verify required parameter 'missionUpdateRequest' is not null or undefined
assertParamExists('updateMission', 'missionUpdateRequest', missionUpdateRequest)
- const localVarPath = `/missions/{missionId}`
+ const localVarPath = `/api/v1/missions/{missionId}`
.replace(`{${"missionId"}}`, encodeURIComponent(String(missionId)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -184,7 +271,7 @@ export const MissionApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = MissionApiAxiosParamCreator(configuration)
return {
/**
- * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
+ * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
* @summary 그룹스터디 미션 생성
* @param {number} groupStudyId 그룹스터디 ID
* @param {MissionCreationRequest} missionCreationRequest 미션 생성 요청 정보
@@ -197,23 +284,50 @@ export const MissionApiFp = function(configuration?: Configuration) {
const localVarOperationServerBasePath = operationServerMap['MissionApi.createMission']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
+ /**
+ * 특정 미션을 삭제합니다.
+ * @summary 미션 삭제
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async deleteMission(missionId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.deleteMission(missionId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['MissionApi.deleteMission']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 미션 ID를 통해 특정 미션의 상세 정보를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 **[Request]** - PathVariable: missionId (필수) - 미션 ID
+ * @summary 그룹스터디 미션 조회
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getMission(missionId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getMission(missionId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['MissionApi.getMission']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
/**
* 특정 그룹스터디의 미션 목록을 페이지네이션으로 조회합니다. **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - QueryParam: page (선택, 기본값: 1) - 페이지 번호 (1부터 시작) - QueryParam: size (선택, 기본값: 10) - 페이지 크기 **[Response]** - PageResponseDto: 미션 목록과 페이지 정보 - 각 미션 정보: id, title, startTime, endTime, status
* @summary 그룹스터디 미션 목록 조회
* @param {number} groupStudyId 그룹스터디 ID
+ * @param {GetMissionsSearchTypeEnum} searchType 검색 타입 - 진행 중인 미션 혹은 완료된 미션
* @param {number} [page] 페이지 번호 (1부터 시작, 기본값: 1)
- * @param {number} [size] 페이지 크기 (기본값: 10)
+ * @param {number} [pageSize] 페이지 크기 (기본값: 10)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async getMissions(groupStudyId: number, page?: number, size?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.getMissions(groupStudyId, page, size, options);
+ async getMissions(groupStudyId: number, searchType: GetMissionsSearchTypeEnum, page?: number, pageSize?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getMissions(groupStudyId, searchType, page, pageSize, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['MissionApi.getMissions']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 - endTime (선택): 미션 종료 시간 - tasks (필수): 미션 작업 목록 - scoreAllocation (선택): 점수 배분 (1~10) **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
+ * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 - endTime (필수): 미션 종료 시간 **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
* @summary 그룹스터디 미션 수정
* @param {number} missionId 미션 ID
* @param {MissionUpdateRequest} missionUpdateRequest 미션 수정 요청 정보
@@ -236,7 +350,7 @@ export const MissionApiFactory = function (configuration?: Configuration, basePa
const localVarFp = MissionApiFp(configuration)
return {
/**
- * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
+ * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
* @summary 그룹스터디 미션 생성
* @param {number} groupStudyId 그룹스터디 ID
* @param {MissionCreationRequest} missionCreationRequest 미션 생성 요청 정보
@@ -246,20 +360,41 @@ export const MissionApiFactory = function (configuration?: Configuration, basePa
createMission(groupStudyId: number, missionCreationRequest: MissionCreationRequest, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.createMission(groupStudyId, missionCreationRequest, options).then((request) => request(axios, basePath));
},
+ /**
+ * 특정 미션을 삭제합니다.
+ * @summary 미션 삭제
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteMission(missionId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.deleteMission(missionId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 미션 ID를 통해 특정 미션의 상세 정보를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 **[Request]** - PathVariable: missionId (필수) - 미션 ID
+ * @summary 그룹스터디 미션 조회
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getMission(missionId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getMission(missionId, options).then((request) => request(axios, basePath));
+ },
/**
* 특정 그룹스터디의 미션 목록을 페이지네이션으로 조회합니다. **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - QueryParam: page (선택, 기본값: 1) - 페이지 번호 (1부터 시작) - QueryParam: size (선택, 기본값: 10) - 페이지 크기 **[Response]** - PageResponseDto: 미션 목록과 페이지 정보 - 각 미션 정보: id, title, startTime, endTime, status
* @summary 그룹스터디 미션 목록 조회
* @param {number} groupStudyId 그룹스터디 ID
+ * @param {GetMissionsSearchTypeEnum} searchType 검색 타입 - 진행 중인 미션 혹은 완료된 미션
* @param {number} [page] 페이지 번호 (1부터 시작, 기본값: 1)
- * @param {number} [size] 페이지 크기 (기본값: 10)
+ * @param {number} [pageSize] 페이지 크기 (기본값: 10)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- getMissions(groupStudyId: number, page?: number, size?: number, options?: RawAxiosRequestConfig): AxiosPromise {
- return localVarFp.getMissions(groupStudyId, page, size, options).then((request) => request(axios, basePath));
+ getMissions(groupStudyId: number, searchType: GetMissionsSearchTypeEnum, page?: number, pageSize?: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getMissions(groupStudyId, searchType, page, pageSize, options).then((request) => request(axios, basePath));
},
/**
- * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 - endTime (선택): 미션 종료 시간 - tasks (필수): 미션 작업 목록 - scoreAllocation (선택): 점수 배분 (1~10) **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
+ * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 - endTime (필수): 미션 종료 시간 **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
* @summary 그룹스터디 미션 수정
* @param {number} missionId 미션 ID
* @param {MissionUpdateRequest} missionUpdateRequest 미션 수정 요청 정보
@@ -277,7 +412,7 @@ export const MissionApiFactory = function (configuration?: Configuration, basePa
*/
export class MissionApi extends BaseAPI {
/**
- * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
+ * 그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
* @summary 그룹스터디 미션 생성
* @param {number} groupStudyId 그룹스터디 ID
* @param {MissionCreationRequest} missionCreationRequest 미션 생성 요청 정보
@@ -288,21 +423,44 @@ export class MissionApi extends BaseAPI {
return MissionApiFp(this.configuration).createMission(groupStudyId, missionCreationRequest, options).then((request) => request(this.axios, this.basePath));
}
+ /**
+ * 특정 미션을 삭제합니다.
+ * @summary 미션 삭제
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public deleteMission(missionId: number, options?: RawAxiosRequestConfig) {
+ return MissionApiFp(this.configuration).deleteMission(missionId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 미션 ID를 통해 특정 미션의 상세 정보를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 **[Request]** - PathVariable: missionId (필수) - 미션 ID
+ * @summary 그룹스터디 미션 조회
+ * @param {number} missionId 미션 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getMission(missionId: number, options?: RawAxiosRequestConfig) {
+ return MissionApiFp(this.configuration).getMission(missionId, options).then((request) => request(this.axios, this.basePath));
+ }
+
/**
* 특정 그룹스터디의 미션 목록을 페이지네이션으로 조회합니다. **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - QueryParam: page (선택, 기본값: 1) - 페이지 번호 (1부터 시작) - QueryParam: size (선택, 기본값: 10) - 페이지 크기 **[Response]** - PageResponseDto: 미션 목록과 페이지 정보 - 각 미션 정보: id, title, startTime, endTime, status
* @summary 그룹스터디 미션 목록 조회
* @param {number} groupStudyId 그룹스터디 ID
+ * @param {GetMissionsSearchTypeEnum} searchType 검색 타입 - 진행 중인 미션 혹은 완료된 미션
* @param {number} [page] 페이지 번호 (1부터 시작, 기본값: 1)
- * @param {number} [size] 페이지 크기 (기본값: 10)
+ * @param {number} [pageSize] 페이지 크기 (기본값: 10)
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- public getMissions(groupStudyId: number, page?: number, size?: number, options?: RawAxiosRequestConfig) {
- return MissionApiFp(this.configuration).getMissions(groupStudyId, page, size, options).then((request) => request(this.axios, this.basePath));
+ public getMissions(groupStudyId: number, searchType: GetMissionsSearchTypeEnum, page?: number, pageSize?: number, options?: RawAxiosRequestConfig) {
+ return MissionApiFp(this.configuration).getMissions(groupStudyId, searchType, page, pageSize, options).then((request) => request(this.axios, this.basePath));
}
/**
- * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 - endTime (선택): 미션 종료 시간 - tasks (필수): 미션 작업 목록 - scoreAllocation (선택): 점수 배분 (1~10) **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
+ * 그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 - endTime (필수): 미션 종료 시간 **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
* @summary 그룹스터디 미션 수정
* @param {number} missionId 미션 ID
* @param {MissionUpdateRequest} missionUpdateRequest 미션 수정 요청 정보
@@ -314,3 +472,9 @@ export class MissionApi extends BaseAPI {
}
}
+export const GetMissionsSearchTypeEnum = {
+ All: 'ALL',
+ CompletedMission: 'COMPLETED_MISSION',
+ InProgressMission: 'IN_PROGRESS_MISSION'
+} as const;
+export type GetMissionsSearchTypeEnum = typeof GetMissionsSearchTypeEnum[keyof typeof GetMissionsSearchTypeEnum];
diff --git a/src/api/openapi/api/payment-user-api.ts b/src/api/openapi/api/payment-user-api.ts
index df887576..c836a5a3 100644
--- a/src/api/openapi/api/payment-user-api.ts
+++ b/src/api/openapi/api/payment-user-api.ts
@@ -83,7 +83,7 @@ export const PaymentUserApiAxiosParamCreator = function (configuration?: Configu
};
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다.
+ * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 |
* @summary Toss 결제 서버 Confirm
* @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청
* @param {*} [options] Override http request option.
@@ -209,7 +209,7 @@ export const PaymentUserApiAxiosParamCreator = function (configuration?: Configu
};
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리)
* @param {number} groupStudyId 그룹스터디 ID
* @param {Pageable} pageable
@@ -266,7 +266,7 @@ export const PaymentUserApiAxiosParamCreator = function (configuration?: Configu
};
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |-----------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |---------------------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | groupStudyDescription | string | 스터디 설명 | | groupStudyImage | string | 스터디 이미지 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
* @summary 유료 스터디 결제 준비
* @param {number} groupStudyId 결제 대상 그룹스터디 ID
* @param {StudyPaymentPrepareRequest} studyPaymentPrepareRequest 결제 준비 요청
@@ -332,7 +332,7 @@ export const PaymentUserApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다.
+ * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 |
* @summary Toss 결제 서버 Confirm
* @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청
* @param {*} [options] Override http request option.
@@ -365,7 +365,7 @@ export const PaymentUserApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리)
* @param {number} groupStudyId 그룹스터디 ID
* @param {Pageable} pageable
@@ -381,7 +381,7 @@ export const PaymentUserApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |-----------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |---------------------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | groupStudyDescription | string | 스터디 설명 | | groupStudyImage | string | 스터디 이미지 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
* @summary 유료 스터디 결제 준비
* @param {number} groupStudyId 결제 대상 그룹스터디 ID
* @param {StudyPaymentPrepareRequest} studyPaymentPrepareRequest 결제 준비 요청
@@ -414,7 +414,7 @@ export const PaymentUserApiFactory = function (configuration?: Configuration, ba
return localVarFp.cancelPayment(paymentId, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다.
+ * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 |
* @summary Toss 결제 서버 Confirm
* @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청
* @param {*} [options] Override http request option.
@@ -441,7 +441,7 @@ export const PaymentUserApiFactory = function (configuration?: Configuration, ba
return localVarFp.getMyTransactions(condition, pageable, startDate, endDate, studyTitle, paymentCode, page, size, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리)
* @param {number} groupStudyId 그룹스터디 ID
* @param {Pageable} pageable
@@ -454,7 +454,7 @@ export const PaymentUserApiFactory = function (configuration?: Configuration, ba
return localVarFp.getMyTransactionsByGroupStudy(groupStudyId, pageable, page, size, options).then((request) => request(axios, basePath));
},
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |-----------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |---------------------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | groupStudyDescription | string | 스터디 설명 | | groupStudyImage | string | 스터디 이미지 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
* @summary 유료 스터디 결제 준비
* @param {number} groupStudyId 결제 대상 그룹스터디 ID
* @param {StudyPaymentPrepareRequest} studyPaymentPrepareRequest 결제 준비 요청
@@ -483,7 +483,7 @@ export class PaymentUserApi extends BaseAPI {
}
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다.
+ * 작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 |
* @summary Toss 결제 서버 Confirm
* @param {TossPaymentConfirmRequest} tossPaymentConfirmRequest 토스 결제 서버 confirm 요청
* @param {*} [options] Override http request option.
@@ -512,7 +512,7 @@ export class PaymentUserApi extends BaseAPI {
}
/**
- * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+ * 작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
* @summary 마이페이지 결제 관리 상세 조회 (그룹스터디별 전체 히스토리)
* @param {number} groupStudyId 그룹스터디 ID
* @param {Pageable} pageable
@@ -526,7 +526,7 @@ export class PaymentUserApi extends BaseAPI {
}
/**
- * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |-----------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
+ * 작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |---------------------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | groupStudyDescription | string | 스터디 설명 | | groupStudyImage | string | 스터디 이미지 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
* @summary 유료 스터디 결제 준비
* @param {number} groupStudyId 결제 대상 그룹스터디 ID
* @param {StudyPaymentPrepareRequest} studyPaymentPrepareRequest 결제 준비 요청
diff --git a/src/api/openapi/api/peer-review-api.ts b/src/api/openapi/api/peer-review-api.ts
new file mode 100644
index 00000000..5628424e
--- /dev/null
+++ b/src/api/openapi/api/peer-review-api.ts
@@ -0,0 +1,372 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+// @ts-ignore
+import type { ErrorResponse } from '../models';
+// @ts-ignore
+import type { NoContentResponse } from '../models';
+// @ts-ignore
+import type { PeerReviewCreateRequest } from '../models';
+// @ts-ignore
+import type { PeerReviewCreationResponseSchema } from '../models';
+// @ts-ignore
+import type { PeerReviewListResponse } from '../models';
+// @ts-ignore
+import type { PeerReviewUpdateRequest } from '../models';
+/**
+ * PeerReviewApi - axios parameter creator
+ */
+export const PeerReviewApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ * 과제에 대한 피어리뷰(댓글)를 작성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 작성 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID - RequestBody: PeerReviewCreateRequest (필수) - comment (필수): 피어리뷰 내용 (최대 3000자) **[Response]** - 201 Created: 피어리뷰 생성 성공
+ * @summary 피어리뷰 작성
+ * @param {number} homeworkId 과제 ID
+ * @param {PeerReviewCreateRequest} peerReviewCreateRequest 피어리뷰 작성 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ createPeerReview: async (homeworkId: number, peerReviewCreateRequest: PeerReviewCreateRequest, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'homeworkId' is not null or undefined
+ assertParamExists('createPeerReview', 'homeworkId', homeworkId)
+ // verify required parameter 'peerReviewCreateRequest' is not null or undefined
+ assertParamExists('createPeerReview', 'peerReviewCreateRequest', peerReviewCreateRequest)
+ const localVarPath = `/api/v1/homeworks/{homeworkId}/peer-reviews`
+ .replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(peerReviewCreateRequest, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 작성한 피어리뷰를 삭제합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 삭제 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID **[Response]** - 204 No Content: 삭제 성공
+ * @summary 피어리뷰 삭제
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deletePeerReview: async (peerReviewId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'peerReviewId' is not null or undefined
+ assertParamExists('deletePeerReview', 'peerReviewId', peerReviewId)
+ const localVarPath = `/api/v1/peer-reviews/{peerReviewId}`
+ .replace(`{${"peerReviewId"}}`, encodeURIComponent(String(peerReviewId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 특정 과제에 달린 모든 피어리뷰를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 조회 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID **[Response]** - 200 OK: 피어리뷰 목록 (작성일시 오름차순 정렬)
+ * @summary 과제별 피어리뷰 목록 조회
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getPeerReviews: async (homeworkId: number, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'homeworkId' is not null or undefined
+ assertParamExists('getPeerReviews', 'homeworkId', homeworkId)
+ const localVarPath = `/api/v1/homeworks/{homeworkId}/peer-reviews`
+ .replace(`{${"homeworkId"}}`, encodeURIComponent(String(homeworkId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * 작성한 피어리뷰를 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 수정 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID - RequestBody: PeerReviewUpdateRequest (필수) - comment (필수): 수정할 피어리뷰 내용 **[Response]** - 204 No Content: 피어리뷰 수정 성공
+ * @summary 피어리뷰 수정
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {PeerReviewUpdateRequest} peerReviewUpdateRequest 피어리뷰 수정 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ updatePeerReview: async (peerReviewId: number, peerReviewUpdateRequest: PeerReviewUpdateRequest, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'peerReviewId' is not null or undefined
+ assertParamExists('updatePeerReview', 'peerReviewId', peerReviewId)
+ // verify required parameter 'peerReviewUpdateRequest' is not null or undefined
+ assertParamExists('updatePeerReview', 'peerReviewUpdateRequest', peerReviewUpdateRequest)
+ const localVarPath = `/api/v1/peer-reviews/{peerReviewId}`
+ .replace(`{${"peerReviewId"}}`, encodeURIComponent(String(peerReviewId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(peerReviewUpdateRequest, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * PeerReviewApi - functional programming interface
+ */
+export const PeerReviewApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = PeerReviewApiAxiosParamCreator(configuration)
+ return {
+ /**
+ * 과제에 대한 피어리뷰(댓글)를 작성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 작성 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID - RequestBody: PeerReviewCreateRequest (필수) - comment (필수): 피어리뷰 내용 (최대 3000자) **[Response]** - 201 Created: 피어리뷰 생성 성공
+ * @summary 피어리뷰 작성
+ * @param {number} homeworkId 과제 ID
+ * @param {PeerReviewCreateRequest} peerReviewCreateRequest 피어리뷰 작성 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async createPeerReview(homeworkId: number, peerReviewCreateRequest: PeerReviewCreateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.createPeerReview(homeworkId, peerReviewCreateRequest, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['PeerReviewApi.createPeerReview']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 작성한 피어리뷰를 삭제합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 삭제 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID **[Response]** - 204 No Content: 삭제 성공
+ * @summary 피어리뷰 삭제
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async deletePeerReview(peerReviewId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.deletePeerReview(peerReviewId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['PeerReviewApi.deletePeerReview']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 특정 과제에 달린 모든 피어리뷰를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 조회 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID **[Response]** - 200 OK: 피어리뷰 목록 (작성일시 오름차순 정렬)
+ * @summary 과제별 피어리뷰 목록 조회
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getPeerReviews(homeworkId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getPeerReviews(homeworkId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['PeerReviewApi.getPeerReviews']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * 작성한 피어리뷰를 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 수정 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID - RequestBody: PeerReviewUpdateRequest (필수) - comment (필수): 수정할 피어리뷰 내용 **[Response]** - 204 No Content: 피어리뷰 수정 성공
+ * @summary 피어리뷰 수정
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {PeerReviewUpdateRequest} peerReviewUpdateRequest 피어리뷰 수정 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async updatePeerReview(peerReviewId: number, peerReviewUpdateRequest: PeerReviewUpdateRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.updatePeerReview(peerReviewId, peerReviewUpdateRequest, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['PeerReviewApi.updatePeerReview']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * PeerReviewApi - factory interface
+ */
+export const PeerReviewApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = PeerReviewApiFp(configuration)
+ return {
+ /**
+ * 과제에 대한 피어리뷰(댓글)를 작성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 작성 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID - RequestBody: PeerReviewCreateRequest (필수) - comment (필수): 피어리뷰 내용 (최대 3000자) **[Response]** - 201 Created: 피어리뷰 생성 성공
+ * @summary 피어리뷰 작성
+ * @param {number} homeworkId 과제 ID
+ * @param {PeerReviewCreateRequest} peerReviewCreateRequest 피어리뷰 작성 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ createPeerReview(homeworkId: number, peerReviewCreateRequest: PeerReviewCreateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.createPeerReview(homeworkId, peerReviewCreateRequest, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 작성한 피어리뷰를 삭제합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 삭제 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID **[Response]** - 204 No Content: 삭제 성공
+ * @summary 피어리뷰 삭제
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deletePeerReview(peerReviewId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.deletePeerReview(peerReviewId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 특정 과제에 달린 모든 피어리뷰를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 조회 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID **[Response]** - 200 OK: 피어리뷰 목록 (작성일시 오름차순 정렬)
+ * @summary 과제별 피어리뷰 목록 조회
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getPeerReviews(homeworkId: number, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.getPeerReviews(homeworkId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * 작성한 피어리뷰를 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 수정 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID - RequestBody: PeerReviewUpdateRequest (필수) - comment (필수): 수정할 피어리뷰 내용 **[Response]** - 204 No Content: 피어리뷰 수정 성공
+ * @summary 피어리뷰 수정
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {PeerReviewUpdateRequest} peerReviewUpdateRequest 피어리뷰 수정 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ updatePeerReview(peerReviewId: number, peerReviewUpdateRequest: PeerReviewUpdateRequest, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.updatePeerReview(peerReviewId, peerReviewUpdateRequest, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * PeerReviewApi - object-oriented interface
+ */
+export class PeerReviewApi extends BaseAPI {
+ /**
+ * 과제에 대한 피어리뷰(댓글)를 작성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 작성 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID - RequestBody: PeerReviewCreateRequest (필수) - comment (필수): 피어리뷰 내용 (최대 3000자) **[Response]** - 201 Created: 피어리뷰 생성 성공
+ * @summary 피어리뷰 작성
+ * @param {number} homeworkId 과제 ID
+ * @param {PeerReviewCreateRequest} peerReviewCreateRequest 피어리뷰 작성 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public createPeerReview(homeworkId: number, peerReviewCreateRequest: PeerReviewCreateRequest, options?: RawAxiosRequestConfig) {
+ return PeerReviewApiFp(this.configuration).createPeerReview(homeworkId, peerReviewCreateRequest, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 작성한 피어리뷰를 삭제합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 삭제 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID **[Response]** - 204 No Content: 삭제 성공
+ * @summary 피어리뷰 삭제
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public deletePeerReview(peerReviewId: number, options?: RawAxiosRequestConfig) {
+ return PeerReviewApiFp(this.configuration).deletePeerReview(peerReviewId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 특정 과제에 달린 모든 피어리뷰를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 조회 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID **[Response]** - 200 OK: 피어리뷰 목록 (작성일시 오름차순 정렬)
+ * @summary 과제별 피어리뷰 목록 조회
+ * @param {number} homeworkId 과제 ID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getPeerReviews(homeworkId: number, options?: RawAxiosRequestConfig) {
+ return PeerReviewApiFp(this.configuration).getPeerReviews(homeworkId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * 작성한 피어리뷰를 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 수정 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID - RequestBody: PeerReviewUpdateRequest (필수) - comment (필수): 수정할 피어리뷰 내용 **[Response]** - 204 No Content: 피어리뷰 수정 성공
+ * @summary 피어리뷰 수정
+ * @param {number} peerReviewId 피어리뷰 ID
+ * @param {PeerReviewUpdateRequest} peerReviewUpdateRequest 피어리뷰 수정 요청 정보
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public updatePeerReview(peerReviewId: number, peerReviewUpdateRequest: PeerReviewUpdateRequest, options?: RawAxiosRequestConfig) {
+ return PeerReviewApiFp(this.configuration).updatePeerReview(peerReviewId, peerReviewUpdateRequest, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/src/api/openapi/api/settlement-account-api.ts b/src/api/openapi/api/settlement-account-api.ts
index bfa0913d..3bba8644 100644
--- a/src/api/openapi/api/settlement-account-api.ts
+++ b/src/api/openapi/api/settlement-account-api.ts
@@ -22,7 +22,7 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseVoid } from '../models';
// @ts-ignore
import type { SettlementAccountRegisterRequest } from '../models';
// @ts-ignore
@@ -195,7 +195,7 @@ export const SettlementAccountApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async _delete(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async _delete(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator._delete(options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['SettlementAccountApi._delete']?.[localVarOperationServerIndex]?.url;
@@ -254,7 +254,7 @@ export const SettlementAccountApiFactory = function (configuration?: Configurati
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- _delete(options?: RawAxiosRequestConfig): AxiosPromise {
+ _delete(options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp._delete(options).then((request) => request(axios, basePath));
},
/**
diff --git a/src/api/openapi/api/study-space-api.ts b/src/api/openapi/api/study-space-api.ts
index 12df94c2..433cab81 100644
--- a/src/api/openapi/api/study-space-api.ts
+++ b/src/api/openapi/api/study-space-api.ts
@@ -22,7 +22,9 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseString } from '../models';
+// @ts-ignore
+import type { BaseResponseStudySpaceIsParticipateResponse } from '../models';
// @ts-ignore
import type { CreateStudySpaceRequest } from '../models';
// @ts-ignore
diff --git a/src/api/openapi/api/token-apiapi.ts b/src/api/openapi/api/token-apiapi.ts
index 15cd9281..85eeed6c 100644
--- a/src/api/openapi/api/token-apiapi.ts
+++ b/src/api/openapi/api/token-apiapi.ts
@@ -22,7 +22,7 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
-import type { BaseResponse } from '../models';
+import type { BaseResponseTemporalToken } from '../models';
/**
* TokenAPIApi - axios parameter creator
*/
@@ -91,7 +91,7 @@ export const TokenAPIApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async generateToken(memberId: number, roleId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async generateToken(memberId: number, roleId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.generateToken(memberId, roleId, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['TokenAPIApi.generateToken']?.[localVarOperationServerIndex]?.url;
@@ -113,7 +113,7 @@ export const TokenAPIApiFactory = function (configuration?: Configuration, baseP
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- generateToken(memberId: number, roleId: string, options?: RawAxiosRequestConfig): AxiosPromise {
+ generateToken(memberId: number, roleId: string, options?: RawAxiosRequestConfig): AxiosPromise {
return localVarFp.generateToken(memberId, roleId, options).then((request) => request(axios, basePath));
},
};
diff --git a/src/api/openapi/api/toss-webhook-api.ts b/src/api/openapi/api/toss-webhook-api.ts
new file mode 100644
index 00000000..51637ebf
--- /dev/null
+++ b/src/api/openapi/api/toss-webhook-api.ts
@@ -0,0 +1,130 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+// @ts-ignore
+import type { TossWebhookPayload } from '../models';
+/**
+ * TossWebhookApi - axios parameter creator
+ */
+export const TossWebhookApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다.
+ * @summary Toss Webhook 수신
+ * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ handleTossWebhook: async (tossWebhookPayload: TossWebhookPayload, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'tossWebhookPayload' is not null or undefined
+ assertParamExists('handleTossWebhook', 'tossWebhookPayload', tossWebhookPayload)
+ const localVarPath = `/api/v1/webhooks/toss`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(tossWebhookPayload, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * TossWebhookApi - functional programming interface
+ */
+export const TossWebhookApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = TossWebhookApiAxiosParamCreator(configuration)
+ return {
+ /**
+ * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다.
+ * @summary Toss Webhook 수신
+ * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.handleTossWebhook(tossWebhookPayload, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['TossWebhookApi.handleTossWebhook']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * TossWebhookApi - factory interface
+ */
+export const TossWebhookApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = TossWebhookApiFp(configuration)
+ return {
+ /**
+ * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다.
+ * @summary Toss Webhook 수신
+ * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig): AxiosPromise {
+ return localVarFp.handleTossWebhook(tossWebhookPayload, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * TossWebhookApi - object-oriented interface
+ */
+export class TossWebhookApi extends BaseAPI {
+ /**
+ * 작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다.
+ * @summary Toss Webhook 수신
+ * @param {TossWebhookPayload} tossWebhookPayload Toss Webhook 페이로드
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public handleTossWebhook(tossWebhookPayload: TossWebhookPayload, options?: RawAxiosRequestConfig) {
+ return TossWebhookApiFp(this.configuration).handleTossWebhook(tossWebhookPayload, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/src/api/openapi/docs/AdminApi.md b/src/api/openapi/docs/AdminApi.md
index e9e863af..329dec7d 100644
--- a/src/api/openapi/docs/AdminApi.md
+++ b/src/api/openapi/docs/AdminApi.md
@@ -77,7 +77,7 @@ void (empty response body)
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **getMemberAccountHistoryResponse**
-> BaseResponse getMemberAccountHistoryResponse()
+> BaseResponseMemberAccountHistoryResponseDto getMemberAccountHistoryResponse()
### Example
@@ -107,7 +107,7 @@ const { status, data } = await apiInstance.getMemberAccountHistoryResponse(
### Return type
-**BaseResponse**
+**BaseResponseMemberAccountHistoryResponseDto**
### Authorization
diff --git a/src/api/openapi/docs/AdminMatchingApi.md b/src/api/openapi/docs/AdminMatchingApi.md
index 822fc674..d45e1e27 100644
--- a/src/api/openapi/docs/AdminMatchingApi.md
+++ b/src/api/openapi/docs/AdminMatchingApi.md
@@ -10,10 +10,11 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|[**getMatchingRequest**](#getmatchingrequest) | **GET** /api/v1/admin/matching/requests/{matchingRequestId} | 관리자 매칭 상세 조회|
|[**resetWeeklyMatching**](#resetweeklymatching) | **DELETE** /api/v1/admin/matching/reset-weekly | 주차 매칭 데이터 초기화|
|[**runAutoMatchingJob**](#runautomatchingjob) | **POST** /api/v1/admin/matching/run | 자동 매칭 수동 트리거|
+|[**startStudyCycle**](#startstudycycle) | **POST** /api/v1/admin/matching/start-cycle | 스터디 사이클 시작|
|[**updateMatchingRequestByAdmin**](#updatematchingrequestbyadmin) | **PATCH** /api/v1/admin/matching/requests/{matchingRequestId} | 관리자 매칭 변경/취소|
# **createMatchingRequestByAdmin**
-> BaseResponse createMatchingRequestByAdmin(adminMatchingCreateRequest)
+> BaseResponseMatchingRequestResponse createMatchingRequestByAdmin(adminMatchingCreateRequest)
관리자가 수동으로 매칭 요청을 생성합니다. weeklyPeriodIdentifier는 매칭이 속할 주간을 지정하며, 해당 주간의 토요일 날짜를 사용합니다.
@@ -45,7 +46,7 @@ const { status, data } = await apiInstance.createMatchingRequestByAdmin(
### Return type
-**BaseResponse**
+**BaseResponseMatchingRequestResponse**
### Authorization
@@ -166,7 +167,7 @@ This endpoint does not have any parameters.
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **getMatchingRequest**
-> BaseResponse getMatchingRequest()
+> BaseResponseMatchingRequestResponse getMatchingRequest()
관리자가 특정 매칭 요청을 조회합니다.
@@ -197,7 +198,7 @@ const { status, data } = await apiInstance.getMatchingRequest(
### Return type
-**BaseResponse**
+**BaseResponseMatchingRequestResponse**
### Authorization
@@ -331,8 +332,54 @@ const { status, data } = await apiInstance.runAutoMatchingJob(
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+# **startStudyCycle**
+> BaseResponse startStudyCycle()
+
+매칭 시스템 상태를 RECRUITING에서 STUDYING으로 변경합니다. **관리자 권한(ROLE_ADMIN)이 필요합니다.**
+
+### Example
+
+```typescript
+import {
+ AdminMatchingApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AdminMatchingApi(configuration);
+
+const { status, data } = await apiInstance.startStudyCycle();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**BaseResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**403** | You are authenticated but not allowed authorization | - |
+|**200** | 스터디 사이클 시작 성공 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
# **updateMatchingRequestByAdmin**
-> BaseResponse updateMatchingRequestByAdmin(adminMatchingUpdateRequest)
+> BaseResponseMatchingRequestResponse updateMatchingRequestByAdmin(adminMatchingUpdateRequest)
관리자가 특정 매칭 요청의 상태, 파트너 등을 변경합니다.
@@ -367,7 +414,7 @@ const { status, data } = await apiInstance.updateMatchingRequestByAdmin(
### Return type
-**BaseResponse**
+**BaseResponseMatchingRequestResponse**
### Authorization
diff --git a/src/api/openapi/docs/AdminPaymentApi.md b/src/api/openapi/docs/AdminPaymentApi.md
index ad956b00..900acb30 100644
--- a/src/api/openapi/docs/AdminPaymentApi.md
+++ b/src/api/openapi/docs/AdminPaymentApi.md
@@ -69,7 +69,7 @@ const { status, data } = await apiInstance.forceCancelPayment(
# **getTransactionsForAdmin**
> PageAdminTransactionListResponseSchema getTransactionsForAdmin()
-작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 전체 유저의 결제/환불 거래 내역을 거래(payment)별 최신 히스토리 기준으로 조회합니다. - PaymentHistory 테이블 기반으로 결제와 환불을 통합하여 조회합니다. - 각 거래별로 가장 최근 상태(결제 완료, 환불 완료 등)를 기준으로 리스트를 반환합니다. - 날짜, 스터디명, 거래ID(paymentCode)로 필터링할 수 있습니다. --- ## Query Parameters (Filter - PaymentSearchCondition) | 키 | 타입 | 설명 | 필수 | 예시 | |-------------|-------------------|-----------------------------------|------|------------------| | startDate | LocalDate | 조회 시작일 (yyyy-MM-dd) | N | 2025-01-01 | | endDate | LocalDate | 조회 종료일 (yyyy-MM-dd) | N | 2025-12-31 | | studyTitle | string | 스터디명 검색 (부분 일치) | N | 백엔드 | | paymentCode | string | 거래ID 검색 (부분 일치) | N | PAY-20251211 | | type | PaymentHistoryType | 거래 유형 필터 | N | PAYMENT_SUCCESS | ### type 필터 가능 값 - PAYMENT_REQUESTED (결제준비) - PAYMENT_WAITING_FOR_DEPOSIT (입금대기 - 가상계좌) - PAYMENT_SUCCESS (결제완료) - PAYMENT_FAILED (결제실패) - PAYMENT_CANCELED (결제취소) - REFUND_REQUESTED (환불요청) - REFUND_APPROVED (환불승인) - REFUND_COMPLETED (환불완료) - REFUND_REJECTED (환불반려) - REFUND_CANCELED (환불요청취소) - REFUND_FAILED (환불실패) ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래별 최신 상태 정보 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
### Example
@@ -90,7 +90,7 @@ let startDate: string; //조회 시작일 (yyyy-MM-dd) (optional) (default to un
let endDate: string; //조회 종료일 (yyyy-MM-dd) (optional) (default to undefined)
let studyTitle: string; //스터디명 검색 (부분 일치) (optional) (default to undefined)
let paymentCode: string; //거래ID 검색 (부분 일치) (optional) (default to undefined)
-let type: string; //거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) (optional) (default to undefined)
+let type: string; //거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) (optional) (default to undefined)
let page: number; //페이지 번호 (0부터 시작) (optional) (default to undefined)
let size: number; //페이지 크기 (optional) (default to undefined)
@@ -117,7 +117,7 @@ const { status, data } = await apiInstance.getTransactionsForAdmin(
| **endDate** | [**string**] | 조회 종료일 (yyyy-MM-dd) | (optional) defaults to undefined|
| **studyTitle** | [**string**] | 스터디명 검색 (부분 일치) | (optional) defaults to undefined|
| **paymentCode** | [**string**] | 거래ID 검색 (부분 일치) | (optional) defaults to undefined|
-| **type** | [**string**] | 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) | (optional) defaults to undefined|
+| **type** | [**string**] | 거래 유형 필터 (PAYMENT_REQUESTED, PAYMENT_WAITING_FOR_DEPOSIT, PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_REQUESTED, REFUND_APPROVED, REFUND_COMPLETED, REFUND_REJECTED, REFUND_CANCELED, REFUND_FAILED) | (optional) defaults to undefined|
| **page** | [**number**] | 페이지 번호 (0부터 시작) | (optional) defaults to undefined|
| **size** | [**number**] | 페이지 크기 | (optional) defaults to undefined|
diff --git a/src/api/openapi/docs/AdminSettlementApi.md b/src/api/openapi/docs/AdminSettlementApi.md
index 51902d91..8d72a22f 100644
--- a/src/api/openapi/docs/AdminSettlementApi.md
+++ b/src/api/openapi/docs/AdminSettlementApi.md
@@ -4,14 +4,70 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|Method | HTTP request | Description|
|------------- | ------------- | -------------|
+|[**approveSettlement**](#approvesettlement) | **POST** /api/v1/admin/settlements/{settlementId}/approve | 관리자 정산 승인|
|[**completeSettlement**](#completesettlement) | **POST** /api/v1/admin/settlements/{settlementId}/complete | 관리자 정산 완료 처리|
|[**createSettlement**](#createsettlement) | **POST** /api/v1/admin/settlements | 관리자 정산 생성|
|[**getSettlementsForAdmin**](#getsettlementsforadmin) | **GET** /api/v1/admin/settlements | 관리자 정산 내역 목록 조회|
+# **approveSettlement**
+> StudySettlementDetailResponseSchema approveSettlement()
+
+작성일자: 2025-12-29 작성자: 이도현 --- ## Description - 생성된 정산 건을 `APPROVED` 상태로 변경합니다. - 정산 내역 검토 후 승인 시 호출합니다. - 승인된 정산은 관리자가 실제 입금 후 완료 처리를 진행합니다. - `PENDING` 상태가 아닌 정산에 대해 승인을 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 승인할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `APPROVED`로 변경된 정산 정보입니다.
+
+### Example
+
+```typescript
+import {
+ AdminSettlementApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AdminSettlementApi(configuration);
+
+let settlementId: number; //승인할 정산 ID (default to undefined)
+
+const { status, data } = await apiInstance.approveSettlement(
+ settlementId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **settlementId** | [**number**] | 승인할 정산 ID | defaults to undefined|
+
+
+### Return type
+
+**StudySettlementDetailResponseSchema**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 관리자 정산 승인 성공 | - |
+|**400** | 정산 상태가 유효하지 않음 | - |
+|**404** | 정산 정보를 찾을 수 없음 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
# **completeSettlement**
> StudySettlementDetailResponseSchema completeSettlement()
-작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 생성된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `PENDING` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
+작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 승인된 정산 건을 `COMPLETED` 상태로 변경합니다. - 실제로는 관리자에 의해 정산 금액이 리더에게 지급 완료된 시점에 호출됩니다. - `APPROVED` 상태가 아닌 정산에 대해 완료 처리를 시도하면 에러가 발생합니다. --- ## Request | **키** | **타입** | **위치** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- | | settlementId | number | path | 완료 처리할 정산 ID | Y | 1 | --- ## Response - `StudySettlementDetailResponse` 반환 - 상태가 `COMPLETED`로 변경된 최종 정산 정보입니다.
### Example
diff --git a/src/api/openapi/docs/AligoKakaoApi.md b/src/api/openapi/docs/AligoKakaoApi.md
new file mode 100644
index 00000000..9843c711
--- /dev/null
+++ b/src/api/openapi/docs/AligoKakaoApi.md
@@ -0,0 +1,423 @@
+# AligoKakaoApi
+
+All URIs are relative to *https://test-api.zeroone.it.kr*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**getChannels**](#getchannels) | **GET** /api/v1/admin/aligo/kakao/channels | 등록된 Kakao Channel 목록 조회|
+|[**getHeartInfo**](#getheartinfo) | **GET** /api/v1/admin/aligo/kakao/heart-info | 발송 가능 잔액 조회|
+|[**getHistory**](#gethistory) | **GET** /api/v1/admin/aligo/kakao/history | 알림톡 전송 내역 목록 조회|
+|[**getHistoryDetail**](#gethistorydetail) | **GET** /api/v1/admin/aligo/kakao/history/{mid} | 알림톡 전송 상세 결과 조회|
+|[**getTemplates**](#gettemplates) | **GET** /api/v1/admin/aligo/kakao/templates | 등록된 알림톡 템플릿 목록 조회|
+|[**getTemplatesSyncStatus**](#gettemplatessyncstatus) | **GET** /api/v1/admin/aligo/kakao/templates/sync-status | 템플릿 동기화 상태 확인|
+|[**sendTestAlimtalk**](#sendtestalimtalk) | **POST** /api/v1/admin/aligo/kakao/test/send-alimtalk | 테스트용 알림톡 발송 (관리자)|
+|[**syncTemplates**](#synctemplates) | **PUT** /api/v1/admin/aligo/kakao/templates/sync | 템플릿 동기화 실행|
+
+# **getChannels**
+> getChannels()
+
+현재 계정에 등록된 모든 Kakao Channel(카카오톡 채널) 목록을 조회합니다. 각 채널의 상태, 승인 상태, 알림톡 사용 여부 등을 확인할 수 있습니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+const { status, data } = await apiInstance.getChannels();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Kakao Channel 목록 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getHeartInfo**
+> getHeartInfo()
+
+현재 보유한 SMS, LMS, MMS, 알림톡, 친구톡 등의 발송 가능 건수를 조회합니다. 각 채널별 잔액을 확인하여 발송 가능 여부를 판단할 수 있습니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+const { status, data } = await apiInstance.getHeartInfo();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 발송 가능 건수 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getHistory**
+> getHistory()
+
+알림톡 발송 이력을 페이지 단위로 조회합니다. - page: 조회할 페이지 번호 (기본값: 1) - limit: 페이지당 조회 건수 (기본값: 50) - startdate: 조회 시작 날짜 (선택, YYYYMMDD 형식) - enddate: 조회 종료 날짜 (선택, YYYYMMDD 형식)
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+let page: number; //페이지 번호 (optional) (default to 1)
+let limit: number; //페이지당 조회 건수 (optional) (default to 50)
+let startdate: string; //조회 시작 날짜 (YYYYMMDD) (optional) (default to undefined)
+let enddate: string; //조회 종료 날짜 (YYYYMMDD) (optional) (default to undefined)
+
+const { status, data } = await apiInstance.getHistory(
+ page,
+ limit,
+ startdate,
+ enddate
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **page** | [**number**] | 페이지 번호 | (optional) defaults to 1|
+| **limit** | [**number**] | 페이지당 조회 건수 | (optional) defaults to 50|
+| **startdate** | [**string**] | 조회 시작 날짜 (YYYYMMDD) | (optional) defaults to undefined|
+| **enddate** | [**string**] | 조회 종료 날짜 (YYYYMMDD) | (optional) defaults to undefined|
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 전송 내역 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getHistoryDetail**
+> getHistoryDetail()
+
+특정 전송 내역(mid)에 대한 상세 결과를 조회합니다. 각 수신자별 전송 상태, 결과 메시지, 전송 시간 등 상세 정보를 확인할 수 있습니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+let mid: number; //전송 내역 ID (default to undefined)
+
+const { status, data } = await apiInstance.getHistoryDetail(
+ mid
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **mid** | [**number**] | 전송 내역 ID | defaults to undefined|
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 전송 상세 결과 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getTemplates**
+> getTemplates()
+
+알리고 Kakao API에서 등록된 모든 알림톡 템플릿 목록을 조회합니다. 관리자용 API로 현재 Kakao Channel에 등록되어 있는 템플릿 정보를 실시간으로 확인할 수 있습니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+const { status, data } = await apiInstance.getTemplates();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 템플릿 목록 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getTemplatesSyncStatus**
+> getTemplatesSyncStatus()
+
+서버에 캐시된 템플릿과 Kakao API의 최신 템플릿 상태를 비교하여 동기화 상태를 확인합니다. - 동기화됨: 캐시와 API의 템플릿이 완전히 일치 - 캐시 미초기화: 서버 시작 후 템플릿이 캐시되지 않음 - API 조회 실패: Kakao API 연결 실패 - 부분 동기화: 템플릿 개수 또는 내용 불일치
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+const { status, data } = await apiInstance.getTemplatesSyncStatus();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 동기화 상태 조회 성공 | - |
+|**500** | API 호출 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **sendTestAlimtalk**
+> TestAlimtalkResponseSchema sendTestAlimtalk(testAlimtalkSendRequestDto)
+
+관리자가 직접 알림톡을 발송하여 테스트할 수 있는 API입니다. Aligo 템플릿 코드를 직접 지정하여 발송합니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration,
+ TestAlimtalkSendRequestDto
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+let testAlimtalkSendRequestDto: TestAlimtalkSendRequestDto; //
+
+const { status, data } = await apiInstance.sendTestAlimtalk(
+ testAlimtalkSendRequestDto
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **testAlimtalkSendRequestDto** | **TestAlimtalkSendRequestDto**| | |
+
+
+### Return type
+
+**TestAlimtalkResponseSchema**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json, */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 알림톡 발송 성공 | - |
+|**400** | 요청 파라미터 오류 | - |
+|**500** | 알림톡 발송 실패 (Aligo API 오류) | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **syncTemplates**
+> syncTemplates()
+
+Kakao API에서 최신 템플릿을 조회하여 서버 캐시에 동기화합니다. 기존 캐시를 삭제 후 새로운 템플릿으로 교체합니다.
+
+### Example
+
+```typescript
+import {
+ AligoKakaoApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AligoKakaoApi(configuration);
+
+const { status, data } = await apiInstance.syncTemplates();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 동기화 성공 | - |
+|**500** | 동기화 실패 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/src/api/openapi/docs/AlimtalkHeartInfoResponseDto.md b/src/api/openapi/docs/AlimtalkHeartInfoResponseDto.md
new file mode 100644
index 00000000..441364de
--- /dev/null
+++ b/src/api/openapi/docs/AlimtalkHeartInfoResponseDto.md
@@ -0,0 +1,24 @@
+# AlimtalkHeartInfoResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**list** | [**HeartInfo**](HeartInfo.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { AlimtalkHeartInfoResponseDto } from './api';
+
+const instance: AlimtalkHeartInfoResponseDto = {
+ code,
+ message,
+ list,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/AlimtalkHistoryDetailResponseDto.md b/src/api/openapi/docs/AlimtalkHistoryDetailResponseDto.md
new file mode 100644
index 00000000..21eaabde
--- /dev/null
+++ b/src/api/openapi/docs/AlimtalkHistoryDetailResponseDto.md
@@ -0,0 +1,30 @@
+# AlimtalkHistoryDetailResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**list** | [**Array<DetailItem>**](DetailItem.md) | | [optional] [default to undefined]
+**currentPage** | **number** | | [optional] [default to undefined]
+**totalPage** | **number** | | [optional] [default to undefined]
+**totalCount** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { AlimtalkHistoryDetailResponseDto } from './api';
+
+const instance: AlimtalkHistoryDetailResponseDto = {
+ code,
+ message,
+ list,
+ currentPage,
+ totalPage,
+ totalCount,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/AlimtalkHistoryListResponseDto.md b/src/api/openapi/docs/AlimtalkHistoryListResponseDto.md
new file mode 100644
index 00000000..be97ba31
--- /dev/null
+++ b/src/api/openapi/docs/AlimtalkHistoryListResponseDto.md
@@ -0,0 +1,30 @@
+# AlimtalkHistoryListResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**list** | [**Array<HistoryItem>**](HistoryItem.md) | | [optional] [default to undefined]
+**currentPage** | **number** | | [optional] [default to undefined]
+**totalPage** | **number** | | [optional] [default to undefined]
+**totalCount** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { AlimtalkHistoryListResponseDto } from './api';
+
+const instance: AlimtalkHistoryListResponseDto = {
+ code,
+ message,
+ list,
+ currentPage,
+ totalPage,
+ totalCount,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/AuthApi.md b/src/api/openapi/docs/AuthApi.md
index f3cc0acc..001eb27e 100644
--- a/src/api/openapi/docs/AuthApi.md
+++ b/src/api/openapi/docs/AuthApi.md
@@ -62,7 +62,7 @@ const { status, data } = await apiInstance.accessToken(
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **logout**
-> BaseResponse logout()
+> BaseResponseVoid logout()
Cookie에 저장된 Refresh token을 제거함으로써 로그아웃 진행. 프론트에서 Access token을 제거할 필요가 있음
@@ -93,7 +93,7 @@ const { status, data } = await apiInstance.logout(
### Return type
-**BaseResponse**
+**BaseResponseVoid**
### Authorization
@@ -129,13 +129,15 @@ const configuration = new Configuration();
const apiInstance = new AuthApi(configuration);
let authVendor: string; //OAuth 2.0 Auth server (default to undefined)
-let code: string; // (default to undefined)
+let code: string; // (optional) (default to undefined)
let state: string; // (optional) (default to undefined)
+let error: string; // (optional) (default to undefined)
const { status, data } = await apiInstance.oauth2Login(
authVendor,
code,
- state
+ state,
+ error
);
```
@@ -144,8 +146,9 @@ const { status, data } = await apiInstance.oauth2Login(
|Name | Type | Description | Notes|
|------------- | ------------- | ------------- | -------------|
| **authVendor** | [**string**] | OAuth 2.0 Auth server | defaults to undefined|
-| **code** | [**string**] | | defaults to undefined|
+| **code** | [**string**] | | (optional) defaults to undefined|
| **state** | [**string**] | | (optional) defaults to undefined|
+| **error** | [**string**] | | (optional) defaults to undefined|
### Return type
diff --git a/src/api/openapi/docs/BaseResponseGrantedTokenInfo.md b/src/api/openapi/docs/BaseResponseGrantedTokenInfo.md
new file mode 100644
index 00000000..9e9af84e
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseGrantedTokenInfo.md
@@ -0,0 +1,26 @@
+# BaseResponseGrantedTokenInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**GrantedTokenInfo**](GrantedTokenInfo.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseGrantedTokenInfo } from './api';
+
+const instance: BaseResponseGrantedTokenInfo = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseGroupStudyDiscretionGradeResponse.md b/src/api/openapi/docs/BaseResponseGroupStudyDiscretionGradeResponse.md
new file mode 100644
index 00000000..17ecccd7
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseGroupStudyDiscretionGradeResponse.md
@@ -0,0 +1,26 @@
+# BaseResponseGroupStudyDiscretionGradeResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**GroupStudyDiscretionGradeResponse**](GroupStudyDiscretionGradeResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseGroupStudyDiscretionGradeResponse } from './api';
+
+const instance: BaseResponseGroupStudyDiscretionGradeResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseGroupStudyMembersResponse.md b/src/api/openapi/docs/BaseResponseGroupStudyMembersResponse.md
new file mode 100644
index 00000000..0ffc7828
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseGroupStudyMembersResponse.md
@@ -0,0 +1,26 @@
+# BaseResponseGroupStudyMembersResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**GroupStudyMembersResponse**](GroupStudyMembersResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseGroupStudyMembersResponse } from './api';
+
+const instance: BaseResponseGroupStudyMembersResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseHomeworkResponseDto.md b/src/api/openapi/docs/BaseResponseHomeworkResponseDto.md
new file mode 100644
index 00000000..82664936
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseHomeworkResponseDto.md
@@ -0,0 +1,26 @@
+# BaseResponseHomeworkResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**HomeworkResponseDto**](HomeworkResponseDto.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseHomeworkResponseDto } from './api';
+
+const instance: BaseResponseHomeworkResponseDto = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseMatchingRequestResponse.md b/src/api/openapi/docs/BaseResponseMatchingRequestResponse.md
new file mode 100644
index 00000000..0745b5c0
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseMatchingRequestResponse.md
@@ -0,0 +1,26 @@
+# BaseResponseMatchingRequestResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**MatchingRequestResponse**](MatchingRequestResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseMatchingRequestResponse } from './api';
+
+const instance: BaseResponseMatchingRequestResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseMemberAccountHistoryResponseDto.md b/src/api/openapi/docs/BaseResponseMemberAccountHistoryResponseDto.md
new file mode 100644
index 00000000..273b092c
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseMemberAccountHistoryResponseDto.md
@@ -0,0 +1,26 @@
+# BaseResponseMemberAccountHistoryResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**MemberAccountHistoryResponseDto**](MemberAccountHistoryResponseDto.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseMemberAccountHistoryResponseDto } from './api';
+
+const instance: BaseResponseMemberAccountHistoryResponseDto = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseObject.md b/src/api/openapi/docs/BaseResponseObject.md
new file mode 100644
index 00000000..39710f2d
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseObject.md
@@ -0,0 +1,26 @@
+# BaseResponseObject
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | **object** | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseObject } from './api';
+
+const instance: BaseResponseObject = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseString.md b/src/api/openapi/docs/BaseResponseString.md
new file mode 100644
index 00000000..f84614fb
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseString.md
@@ -0,0 +1,26 @@
+# BaseResponseString
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | **string** | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseString } from './api';
+
+const instance: BaseResponseString = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseStudySpaceIsParticipateResponse.md b/src/api/openapi/docs/BaseResponseStudySpaceIsParticipateResponse.md
new file mode 100644
index 00000000..da0bdd19
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseStudySpaceIsParticipateResponse.md
@@ -0,0 +1,26 @@
+# BaseResponseStudySpaceIsParticipateResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**StudySpaceIsParticipateResponse**](StudySpaceIsParticipateResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseStudySpaceIsParticipateResponse } from './api';
+
+const instance: BaseResponseStudySpaceIsParticipateResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseTemporalToken.md b/src/api/openapi/docs/BaseResponseTemporalToken.md
new file mode 100644
index 00000000..b08d73cb
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseTemporalToken.md
@@ -0,0 +1,26 @@
+# BaseResponseTemporalToken
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**TemporalToken**](TemporalToken.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseTemporalToken } from './api';
+
+const instance: BaseResponseTemporalToken = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/BaseResponseVoid.md b/src/api/openapi/docs/BaseResponseVoid.md
new file mode 100644
index 00000000..9b2b9949
--- /dev/null
+++ b/src/api/openapi/docs/BaseResponseVoid.md
@@ -0,0 +1,26 @@
+# BaseResponseVoid
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | **object** | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { BaseResponseVoid } from './api';
+
+const instance: BaseResponseVoid = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/ButtonDto.md b/src/api/openapi/docs/ButtonDto.md
new file mode 100644
index 00000000..95875506
--- /dev/null
+++ b/src/api/openapi/docs/ButtonDto.md
@@ -0,0 +1,34 @@
+# ButtonDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ordering** | **string** | | [optional] [default to undefined]
+**name** | **string** | | [optional] [default to undefined]
+**linkType** | **string** | | [optional] [default to undefined]
+**linkTypeName** | **string** | | [optional] [default to undefined]
+**linkMo** | **string** | | [optional] [default to undefined]
+**linkPc** | **string** | | [optional] [default to undefined]
+**linkIos** | **string** | | [optional] [default to undefined]
+**linkAnd** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { ButtonDto } from './api';
+
+const instance: ButtonDto = {
+ ordering,
+ name,
+ linkType,
+ linkTypeName,
+ linkMo,
+ linkPc,
+ linkIos,
+ linkAnd,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/CancelData.md b/src/api/openapi/docs/CancelData.md
new file mode 100644
index 00000000..901c54c3
--- /dev/null
+++ b/src/api/openapi/docs/CancelData.md
@@ -0,0 +1,30 @@
+# CancelData
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**transactionKey** | **string** | | [optional] [default to undefined]
+**cancelReason** | **string** | | [optional] [default to undefined]
+**cancelAmount** | **number** | | [optional] [default to undefined]
+**refundableAmount** | **number** | | [optional] [default to undefined]
+**canceledAt** | **string** | | [optional] [default to undefined]
+**cancelStatus** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { CancelData } from './api';
+
+const instance: CancelData = {
+ transactionKey,
+ cancelReason,
+ cancelAmount,
+ refundableAmount,
+ canceledAt,
+ cancelStatus,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/ChangeHistDto.md b/src/api/openapi/docs/ChangeHistDto.md
new file mode 100644
index 00000000..37710de1
--- /dev/null
+++ b/src/api/openapi/docs/ChangeHistDto.md
@@ -0,0 +1,24 @@
+# ChangeHistDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**changedAt** | **string** | | [optional] [default to undefined]
+**from** | **string** | | [optional] [default to undefined]
+**to** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { ChangeHistDto } from './api';
+
+const instance: ChangeHistDto = {
+ changedAt,
+ from,
+ to,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/CursorResponseDtoStudyReservationMember.md b/src/api/openapi/docs/CursorResponseDtoStudyReservationMemberDto.md
similarity index 61%
rename from src/api/openapi/docs/CursorResponseDtoStudyReservationMember.md
rename to src/api/openapi/docs/CursorResponseDtoStudyReservationMemberDto.md
index 147f63d1..8746c30d 100644
--- a/src/api/openapi/docs/CursorResponseDtoStudyReservationMember.md
+++ b/src/api/openapi/docs/CursorResponseDtoStudyReservationMemberDto.md
@@ -1,20 +1,20 @@
-# CursorResponseDtoStudyReservationMember
+# CursorResponseDtoStudyReservationMemberDto
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**items** | [**Array<StudyReservationMember>**](StudyReservationMember.md) | | [optional] [default to undefined]
+**items** | [**Array<StudyReservationMemberDto>**](StudyReservationMemberDto.md) | | [optional] [default to undefined]
**nextCursor** | **number** | | [optional] [default to undefined]
**hasNext** | **boolean** | | [optional] [default to undefined]
## Example
```typescript
-import { CursorResponseDtoStudyReservationMember } from './api';
+import { CursorResponseDtoStudyReservationMemberDto } from './api';
-const instance: CursorResponseDtoStudyReservationMember = {
+const instance: CursorResponseDtoStudyReservationMemberDto = {
items,
nextCursor,
hasNext,
diff --git a/src/api/openapi/docs/DetailItem.md b/src/api/openapi/docs/DetailItem.md
new file mode 100644
index 00000000..a51a9e94
--- /dev/null
+++ b/src/api/openapi/docs/DetailItem.md
@@ -0,0 +1,50 @@
+# DetailItem
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**msgid** | **string** | | [optional] [default to undefined]
+**type** | **string** | | [optional] [default to undefined]
+**sender** | **string** | | [optional] [default to undefined]
+**phone** | **string** | | [optional] [default to undefined]
+**status** | **string** | | [optional] [default to undefined]
+**reqdate** | **string** | | [optional] [default to undefined]
+**sentdate** | **string** | | [optional] [default to undefined]
+**rsltdate** | **string** | | [optional] [default to undefined]
+**reportdate** | **string** | | [optional] [default to undefined]
+**rslt** | **string** | | [optional] [default to undefined]
+**rsltMessage** | **string** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**buttonJson** | **string** | | [optional] [default to undefined]
+**tplCode** | **string** | | [optional] [default to undefined]
+**senderKey** | **string** | | [optional] [default to undefined]
+**smid** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { DetailItem } from './api';
+
+const instance: DetailItem = {
+ msgid,
+ type,
+ sender,
+ phone,
+ status,
+ reqdate,
+ sentdate,
+ rsltdate,
+ reportdate,
+ rslt,
+ rsltMessage,
+ message,
+ buttonJson,
+ tplCode,
+ senderKey,
+ smid,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationApi.md b/src/api/openapi/docs/EvaluationApi.md
index f76d57f9..4f9784af 100644
--- a/src/api/openapi/docs/EvaluationApi.md
+++ b/src/api/openapi/docs/EvaluationApi.md
@@ -4,13 +4,14 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|Method | HTTP request | Description|
|------------- | ------------- | -------------|
-|[**createEvaluation**](#createevaluation) | **POST** /homeworks/{homeworkId}/evaluations | 과제 평가 생성|
-|[**deleteEvaluation**](#deleteevaluation) | **DELETE** /evaluations/{evaluationId} | 과제 평가 삭제|
-|[**getEvaluation**](#getevaluation) | **GET** /homeworks/{homeworkId}/evaluation | 과제 평가 조회|
-|[**updateEvaluation**](#updateevaluation) | **PUT** /evaluations/{evaluationId} | 과제 평가 수정|
+|[**createEvaluation**](#createevaluation) | **POST** /api/v1/homeworks/{homeworkId}/evaluations | 과제 평가 생성|
+|[**deleteEvaluation**](#deleteevaluation) | **DELETE** /api/v1/evaluations/{evaluationId} | 과제 평가 삭제|
+|[**getEvaluation**](#getevaluation) | **GET** /api/v1/homeworks/{homeworkId}/evaluation | 과제 평가 조회|
+|[**getMissionEvaluationGrades**](#getmissionevaluationgrades) | **GET** /api/v1/evaluations/grades | 미션 평가 등급 목록 조회|
+|[**updateEvaluation**](#updateevaluation) | **PUT** /api/v1/evaluations/{evaluationId} | 과제 평가 수정|
# **createEvaluation**
-> BaseResponse createEvaluation(evaluationRequest)
+> EvaluationCreationResponseSchema createEvaluation(evaluationRequest)
특정 과제에 대한 평가를 생성합니다.
@@ -45,7 +46,7 @@ const { status, data } = await apiInstance.createEvaluation(
### Return type
-**BaseResponse**
+**EvaluationCreationResponseSchema**
### Authorization
@@ -61,13 +62,14 @@ const { status, data } = await apiInstance.createEvaluation(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**201** | 평가 생성 성공 | - |
-|**400** | 잘못된 요청 (유효하지 않은 등급 또는 댓글 길이 초과) | - |
+|**400** | 잘못된 요청 (유효하지 않은 등급, 중복 평가, 평가 기간 오류) | - |
+|**403** | Illegal access to evaluation | - |
|**404** | 과제를 찾을 수 없음 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **deleteEvaluation**
-> BaseResponse deleteEvaluation()
+> NoContentResponse deleteEvaluation()
특정 과제 평가를 삭제합니다.
@@ -98,7 +100,7 @@ const { status, data } = await apiInstance.deleteEvaluation(
### Return type
-**BaseResponse**
+**NoContentResponse**
### Authorization
@@ -114,12 +116,13 @@ const { status, data } = await apiInstance.deleteEvaluation(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**204** | 평가 삭제 성공 | - |
+|**403** | Illegal access to evaluation | - |
|**404** | 평가를 찾을 수 없음 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **getEvaluation**
-> BaseResponse getEvaluation()
+> EvaluationResponseSchema getEvaluation()
특정 과제에 대한 평가를 조회합니다.
@@ -150,7 +153,7 @@ const { status, data } = await apiInstance.getEvaluation(
### Return type
-**BaseResponse**
+**EvaluationResponseSchema**
### Authorization
@@ -170,8 +173,53 @@ const { status, data } = await apiInstance.getEvaluation(
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+# **getMissionEvaluationGrades**
+> GradeListResponseSchema getMissionEvaluationGrades()
+
+미션 평가에 사용 가능한 등급 목록을 조회합니다.
+
+### Example
+
+```typescript
+import {
+ EvaluationApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new EvaluationApi(configuration);
+
+const { status, data } = await apiInstance.getMissionEvaluationGrades();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**GradeListResponseSchema**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 등급 목록 조회 성공 | - |
+|**500** | 서버 내부 오류 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
# **updateEvaluation**
-> BaseResponse updateEvaluation(evaluationRequest)
+> NoContentResponse updateEvaluation(evaluationRequest)
기존 과제 평가의 등급과 댓글을 수정합니다.
@@ -206,7 +254,7 @@ const { status, data } = await apiInstance.updateEvaluation(
### Return type
-**BaseResponse**
+**NoContentResponse**
### Authorization
@@ -223,6 +271,7 @@ const { status, data } = await apiInstance.updateEvaluation(
|-------------|-------------|------------------|
|**200** | 평가 수정 성공 | - |
|**400** | 잘못된 요청 (유효하지 않은 등급 또는 댓글 길이 초과) | - |
+|**403** | Illegal access to evaluation | - |
|**404** | 평가를 찾을 수 없음 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationCreationResponseDto.md b/src/api/openapi/docs/EvaluationCreationResponseDto.md
new file mode 100644
index 00000000..3ef0507d
--- /dev/null
+++ b/src/api/openapi/docs/EvaluationCreationResponseDto.md
@@ -0,0 +1,20 @@
+# EvaluationCreationResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**evaluationId** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { EvaluationCreationResponseDto } from './api';
+
+const instance: EvaluationCreationResponseDto = {
+ evaluationId,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationCreationResponseSchema.md b/src/api/openapi/docs/EvaluationCreationResponseSchema.md
new file mode 100644
index 00000000..0a39ca99
--- /dev/null
+++ b/src/api/openapi/docs/EvaluationCreationResponseSchema.md
@@ -0,0 +1,26 @@
+# EvaluationCreationResponseSchema
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**EvaluationCreationResponseDto**](EvaluationCreationResponseDto.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { EvaluationCreationResponseSchema } from './api';
+
+const instance: EvaluationCreationResponseSchema = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationDetailResponseDto.md b/src/api/openapi/docs/EvaluationDetailResponseDto.md
new file mode 100644
index 00000000..5c3d5963
--- /dev/null
+++ b/src/api/openapi/docs/EvaluationDetailResponseDto.md
@@ -0,0 +1,28 @@
+# EvaluationDetailResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**evaluationId** | **number** | | [optional] [default to undefined]
+**evaluationGradeCode** | **string** | | [optional] [default to undefined]
+**evaluationGradeScore** | **number** | | [optional] [default to undefined]
+**evaluationGradeLabel** | **string** | | [optional] [default to undefined]
+**evaluationComment** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { EvaluationDetailResponseDto } from './api';
+
+const instance: EvaluationDetailResponseDto = {
+ evaluationId,
+ evaluationGradeCode,
+ evaluationGradeScore,
+ evaluationGradeLabel,
+ evaluationComment,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationRequest.md b/src/api/openapi/docs/EvaluationRequest.md
index 047ea100..83eaf272 100644
--- a/src/api/openapi/docs/EvaluationRequest.md
+++ b/src/api/openapi/docs/EvaluationRequest.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**grade** | **string** | | [default to undefined]
+**gradeCode** | **string** | | [default to undefined]
**comment** | **string** | | [optional] [default to undefined]
## Example
@@ -14,7 +14,7 @@ Name | Type | Description | Notes
import { EvaluationRequest } from './api';
const instance: EvaluationRequest = {
- grade,
+ gradeCode,
comment,
};
```
diff --git a/src/api/openapi/docs/EvaluationResponse.md b/src/api/openapi/docs/EvaluationResponse.md
new file mode 100644
index 00000000..5d7636a6
--- /dev/null
+++ b/src/api/openapi/docs/EvaluationResponse.md
@@ -0,0 +1,32 @@
+# EvaluationResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**evaluationId** | **number** | | [optional] [default to undefined]
+**homeworkId** | **number** | | [optional] [default to undefined]
+**grade** | [**GradeInstanceDto**](GradeInstanceDto.md) | | [optional] [default to undefined]
+**comment** | **string** | | [optional] [default to undefined]
+**createdAt** | **string** | | [optional] [default to undefined]
+**updatedAt** | **string** | | [optional] [default to undefined]
+**updated** | **boolean** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { EvaluationResponse } from './api';
+
+const instance: EvaluationResponse = {
+ evaluationId,
+ homeworkId,
+ grade,
+ comment,
+ createdAt,
+ updatedAt,
+ updated,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/EvaluationResponseSchema.md b/src/api/openapi/docs/EvaluationResponseSchema.md
new file mode 100644
index 00000000..2182b766
--- /dev/null
+++ b/src/api/openapi/docs/EvaluationResponseSchema.md
@@ -0,0 +1,26 @@
+# EvaluationResponseSchema
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**EvaluationResponse**](EvaluationResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { EvaluationResponseSchema } from './api';
+
+const instance: EvaluationResponseSchema = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/FileControllerApi.md b/src/api/openapi/docs/FileControllerApi.md
index 13b22d9b..9a0ece47 100644
--- a/src/api/openapi/docs/FileControllerApi.md
+++ b/src/api/openapi/docs/FileControllerApi.md
@@ -7,7 +7,7 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|[**uploadProfileImage**](#uploadprofileimage) | **PUT** /api/v1/files/{filePath} | |
# **uploadProfileImage**
-> BaseResponse uploadProfileImage()
+> BaseResponseVoid uploadProfileImage()
### Example
@@ -44,7 +44,7 @@ const { status, data } = await apiInstance.uploadProfileImage(
### Return type
-**BaseResponse**
+**BaseResponseVoid**
### Authorization
diff --git a/src/api/openapi/docs/GetMemberRoleResponse.md b/src/api/openapi/docs/GetMemberRoleResponse.md
new file mode 100644
index 00000000..a9cd7146
--- /dev/null
+++ b/src/api/openapi/docs/GetMemberRoleResponse.md
@@ -0,0 +1,26 @@
+# GetMemberRoleResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | **{ [key: string]: string | undefined; }** | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GetMemberRoleResponse } from './api';
+
+const instance: GetMemberRoleResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GradeDto.md b/src/api/openapi/docs/GradeDto.md
new file mode 100644
index 00000000..85e26fa7
--- /dev/null
+++ b/src/api/openapi/docs/GradeDto.md
@@ -0,0 +1,30 @@
+# GradeDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**gradeId** | **number** | | [optional] [default to undefined]
+**code** | **string** | | [optional] [default to undefined]
+**score** | **number** | | [optional] [default to undefined]
+**label** | **string** | | [optional] [default to undefined]
+**type** | **string** | | [optional] [default to undefined]
+**orderNum** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GradeDto } from './api';
+
+const instance: GradeDto = {
+ gradeId,
+ code,
+ score,
+ label,
+ type,
+ orderNum,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GradeInstanceDto.md b/src/api/openapi/docs/GradeInstanceDto.md
new file mode 100644
index 00000000..10650b81
--- /dev/null
+++ b/src/api/openapi/docs/GradeInstanceDto.md
@@ -0,0 +1,24 @@
+# GradeInstanceDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**gradeCode** | **string** | | [optional] [default to undefined]
+**gradeScore** | **number** | | [optional] [default to undefined]
+**gradeLabel** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GradeInstanceDto } from './api';
+
+const instance: GradeInstanceDto = {
+ gradeCode,
+ gradeScore,
+ gradeLabel,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GradeListResponseSchema.md b/src/api/openapi/docs/GradeListResponseSchema.md
new file mode 100644
index 00000000..defd0cd0
--- /dev/null
+++ b/src/api/openapi/docs/GradeListResponseSchema.md
@@ -0,0 +1,26 @@
+# GradeListResponseSchema
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**Array<GradeDto>**](GradeDto.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GradeListResponseSchema } from './api';
+
+const instance: GradeListResponseSchema = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GrantedTokenInfo.md b/src/api/openapi/docs/GrantedTokenInfo.md
new file mode 100644
index 00000000..849fdb75
--- /dev/null
+++ b/src/api/openapi/docs/GrantedTokenInfo.md
@@ -0,0 +1,32 @@
+# GrantedTokenInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accessToken** | **string** | | [default to undefined]
+**refreshToken** | **string** | | [optional] [default to undefined]
+**id** | **string** | | [default to undefined]
+**authVendor** | **string** | | [default to undefined]
+**name** | **string** | | [optional] [default to undefined]
+**profileImageUrl** | **string** | | [optional] [default to undefined]
+**userInfo** | [**OAuth2UserInfo**](OAuth2UserInfo.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GrantedTokenInfo } from './api';
+
+const instance: GrantedTokenInfo = {
+ accessToken,
+ refreshToken,
+ id,
+ authVendor,
+ name,
+ profileImageUrl,
+ userInfo,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyApplicant.md b/src/api/openapi/docs/GroupStudyApplicant.md
index a9dc9fe8..5e87304f 100644
--- a/src/api/openapi/docs/GroupStudyApplicant.md
+++ b/src/api/openapi/docs/GroupStudyApplicant.md
@@ -8,7 +8,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**memberId** | **number** | 신청자 ID | [optional] [default to undefined]
**memberNickname** | **string** | 신청자 닉네임 | [optional] [default to undefined]
-**profileImage** | [**Image**](Image.md) | 신청자 프로필 이미지 | [optional] [default to undefined]
+**profileImage** | [**ImageDto**](ImageDto.md) | 신청자 프로필 이미지 | [optional] [default to undefined]
**simpleIntroduction** | **string** | 신청자 한줄 소개 | [optional] [default to undefined]
**sincerityTemp** | [**SincerityTempResponse**](SincerityTempResponse.md) | 성실온도 | [optional] [default to undefined]
diff --git a/src/api/openapi/docs/GroupStudyApplyDetailResponse.md b/src/api/openapi/docs/GroupStudyApplyDetailResponse.md
index 847389bf..7bb10874 100644
--- a/src/api/openapi/docs/GroupStudyApplyDetailResponse.md
+++ b/src/api/openapi/docs/GroupStudyApplyDetailResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**GroupStudyApplyResponseContent**](GroupStudyApplyResponseContent.md) | Content | [optional] [default to undefined]
+**content** | [**GroupStudyApplyResponseDto**](GroupStudyApplyResponseDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyApplyResponseContent.md b/src/api/openapi/docs/GroupStudyApplyResponseDto.md
similarity index 91%
rename from src/api/openapi/docs/GroupStudyApplyResponseContent.md
rename to src/api/openapi/docs/GroupStudyApplyResponseDto.md
index f9cefebd..fb77ac6b 100644
--- a/src/api/openapi/docs/GroupStudyApplyResponseContent.md
+++ b/src/api/openapi/docs/GroupStudyApplyResponseDto.md
@@ -1,4 +1,4 @@
-# GroupStudyApplyResponseContent
+# GroupStudyApplyResponseDto
그룹스터디 신청 응답
@@ -21,9 +21,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudyApplyResponseContent } from './api';
+import { GroupStudyApplyResponseDto } from './api';
-const instance: GroupStudyApplyResponseContent = {
+const instance: GroupStudyApplyResponseDto = {
applyId,
applicantId,
groupStudyId,
diff --git a/src/api/openapi/docs/GroupStudyBasicInfoRequestDto.md b/src/api/openapi/docs/GroupStudyBasicInfoRequestDto.md
index 7d378895..71f38c7b 100644
--- a/src/api/openapi/docs/GroupStudyBasicInfoRequestDto.md
+++ b/src/api/openapi/docs/GroupStudyBasicInfoRequestDto.md
@@ -6,6 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**studyLeaderParticipation** | **boolean** | 스터디 리더 스터디 참가 여부 | [optional] [default to undefined]
**classification** | **string** | 스터디 분류 (그룹스터디 / 프리미엄 스터디) | [default to undefined]
**type** | **string** | 스터디 타입 | [default to undefined]
**hostType** | **string** | 스터디 주최자 구분(미입력 시 일반회원 GENERAL) | [optional] [default to undefined]
@@ -25,6 +26,7 @@ Name | Type | Description | Notes
import { GroupStudyBasicInfoRequestDto } from './api';
const instance: GroupStudyBasicInfoRequestDto = {
+ studyLeaderParticipation,
classification,
type,
hostType,
diff --git a/src/api/openapi/docs/GroupStudyBasicInfoResponse.md b/src/api/openapi/docs/GroupStudyBasicInfoResponseDto.md
similarity index 86%
rename from src/api/openapi/docs/GroupStudyBasicInfoResponse.md
rename to src/api/openapi/docs/GroupStudyBasicInfoResponseDto.md
index 44834a49..b89440fd 100644
--- a/src/api/openapi/docs/GroupStudyBasicInfoResponse.md
+++ b/src/api/openapi/docs/GroupStudyBasicInfoResponseDto.md
@@ -1,6 +1,5 @@
-# GroupStudyBasicInfoResponse
+# GroupStudyBasicInfoResponseDto
-그룹스터디 기본 정보 응답
## Properties
@@ -8,7 +7,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**groupStudyId** | **number** | 그룹스터디 ID | [optional] [default to undefined]
**classification** | **string** | 스터디 분류 | [optional] [default to undefined]
-**leader** | [**StudyReservationMember**](StudyReservationMember.md) | 그룹스터디 리더 정보 | [optional] [default to undefined]
+**leader** | [**StudyReservationMemberDto**](StudyReservationMemberDto.md) | 그룹스터디 리더 정보 | [optional] [default to undefined]
+**studyLeaderParticipation** | **boolean** | 스터디 리더 참가 여부 | [optional] [default to undefined]
**type** | **string** | 스터디 타입 | [optional] [default to undefined]
**hostType** | **string** | 스터디 주최자 구분 | [optional] [default to undefined]
**targetRoles** | **Array<string>** | 스터디 모집 대상 (복수 선택 가능) | [optional] [default to undefined]
@@ -32,12 +32,13 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudyBasicInfoResponse } from './api';
+import { GroupStudyBasicInfoResponseDto } from './api';
-const instance: GroupStudyBasicInfoResponse = {
+const instance: GroupStudyBasicInfoResponseDto = {
groupStudyId,
classification,
leader,
+ studyLeaderParticipation,
type,
hostType,
targetRoles,
diff --git a/src/api/openapi/docs/GroupStudyBasicInfoUpdateRequestDto.md b/src/api/openapi/docs/GroupStudyBasicInfoUpdateRequestDto.md
index a7a6f5dc..87673517 100644
--- a/src/api/openapi/docs/GroupStudyBasicInfoUpdateRequestDto.md
+++ b/src/api/openapi/docs/GroupStudyBasicInfoUpdateRequestDto.md
@@ -6,6 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
+**studyLeaderParticipation** | **boolean** | 스터디 리더 참가 여부 | [default to undefined]
**type** | **string** | 스터디 타입 | [default to undefined]
**hostType** | **string** | 스터디 주최자 구분(미입력 시 일반회원 GENERAL) | [optional] [default to undefined]
**targetRoles** | **Array<string>** | 스터디 모집 대상 (복수 선택 가능) | [default to undefined]
@@ -26,6 +27,7 @@ Name | Type | Description | Notes
import { GroupStudyBasicInfoUpdateRequestDto } from './api';
const instance: GroupStudyBasicInfoUpdateRequestDto = {
+ studyLeaderParticipation,
type,
hostType,
targetRoles,
diff --git a/src/api/openapi/docs/GroupStudyCreationResponse.md b/src/api/openapi/docs/GroupStudyCreationResponse.md
index 2218fee4..ad77c6e4 100644
--- a/src/api/openapi/docs/GroupStudyCreationResponse.md
+++ b/src/api/openapi/docs/GroupStudyCreationResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**GroupStudyCreationResponseContent**](GroupStudyCreationResponseContent.md) | Content | [optional] [default to undefined]
+**content** | [**GroupStudyCreationResponseDto**](GroupStudyCreationResponseDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyCreationResponseContent.md b/src/api/openapi/docs/GroupStudyCreationResponseDto.md
similarity index 82%
rename from src/api/openapi/docs/GroupStudyCreationResponseContent.md
rename to src/api/openapi/docs/GroupStudyCreationResponseDto.md
index 091c5cb5..b513a2f6 100644
--- a/src/api/openapi/docs/GroupStudyCreationResponseContent.md
+++ b/src/api/openapi/docs/GroupStudyCreationResponseDto.md
@@ -1,6 +1,5 @@
-# GroupStudyCreationResponseContent
+# GroupStudyCreationResponseDto
-그룹스터디 생성 응답
## Properties
@@ -15,9 +14,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudyCreationResponseContent } from './api';
+import { GroupStudyCreationResponseDto } from './api';
-const instance: GroupStudyCreationResponseContent = {
+const instance: GroupStudyCreationResponseDto = {
groupStudyId,
thumbnailUploadUrl,
createdAt,
diff --git a/src/api/openapi/docs/GroupStudyDetailInfoResponse.md b/src/api/openapi/docs/GroupStudyDetailInfoResponseDto.md
similarity index 79%
rename from src/api/openapi/docs/GroupStudyDetailInfoResponse.md
rename to src/api/openapi/docs/GroupStudyDetailInfoResponseDto.md
index 918513bb..168193ab 100644
--- a/src/api/openapi/docs/GroupStudyDetailInfoResponse.md
+++ b/src/api/openapi/docs/GroupStudyDetailInfoResponseDto.md
@@ -1,12 +1,11 @@
-# GroupStudyDetailInfoResponse
+# GroupStudyDetailInfoResponseDto
-그룹스터디 상세 정보 응답
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**image** | [**Image**](Image.md) | 기존 스터디 썸네일 이미지 | [optional] [default to undefined]
+**image** | [**ImageDto**](ImageDto.md) | 기존 스터디 썸네일 이미지 | [optional] [default to undefined]
**title** | **string** | 스터디 제목 | [optional] [default to undefined]
**description** | **string** | 스터디 소개 | [optional] [default to undefined]
**summary** | **string** | 스터디 한줄 요약 | [optional] [default to undefined]
@@ -18,9 +17,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudyDetailInfoResponse } from './api';
+import { GroupStudyDetailInfoResponseDto } from './api';
-const instance: GroupStudyDetailInfoResponse = {
+const instance: GroupStudyDetailInfoResponseDto = {
image,
title,
description,
diff --git a/src/api/openapi/docs/GroupStudyDetailResponse.md b/src/api/openapi/docs/GroupStudyDetailResponse.md
index cc146bc3..e04362ca 100644
--- a/src/api/openapi/docs/GroupStudyDetailResponse.md
+++ b/src/api/openapi/docs/GroupStudyDetailResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**GroupStudyDetailResponseContent**](GroupStudyDetailResponseContent.md) | Content | [optional] [default to undefined]
+**content** | [**GroupStudyFullResponseDto**](GroupStudyFullResponseDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyDetailResponseContent.md b/src/api/openapi/docs/GroupStudyDetailResponseContent.md
deleted file mode 100644
index f1a965ef..00000000
--- a/src/api/openapi/docs/GroupStudyDetailResponseContent.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# GroupStudyDetailResponseContent
-
-그룹스터디 상세 조회 응답
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**basicInfo** | [**GroupStudyBasicInfoResponse**](GroupStudyBasicInfoResponse.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
-**detailInfo** | [**GroupStudyDetailInfoResponse**](GroupStudyDetailInfoResponse.md) | 그룹스터디 상세 정보 | [optional] [default to undefined]
-**interviewPost** | [**GroupStudInterviewPostResponseContent**](GroupStudInterviewPostResponseContent.md) | 그룹스터디 면접 질문 | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyDetailResponseContent } from './api';
-
-const instance: GroupStudyDetailResponseContent = {
- basicInfo,
- detailInfo,
- interviewPost,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyDiscretionGradeResponse.md b/src/api/openapi/docs/GroupStudyDiscretionGradeResponse.md
new file mode 100644
index 00000000..a2fa16d7
--- /dev/null
+++ b/src/api/openapi/docs/GroupStudyDiscretionGradeResponse.md
@@ -0,0 +1,20 @@
+# GroupStudyDiscretionGradeResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**grades** | [**Array<GroupStudyProgressGradeResponse>**](GroupStudyProgressGradeResponse.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GroupStudyDiscretionGradeResponse } from './api';
+
+const instance: GroupStudyDiscretionGradeResponse = {
+ grades,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyFullResponseDto.md b/src/api/openapi/docs/GroupStudyFullResponseDto.md
new file mode 100644
index 00000000..d04eca68
--- /dev/null
+++ b/src/api/openapi/docs/GroupStudyFullResponseDto.md
@@ -0,0 +1,24 @@
+# GroupStudyFullResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**basicInfo** | [**GroupStudyBasicInfoResponseDto**](GroupStudyBasicInfoResponseDto.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
+**detailInfo** | [**GroupStudyDetailInfoResponseDto**](GroupStudyDetailInfoResponseDto.md) | 그룹스터디 상세 정보 | [optional] [default to undefined]
+**interviewPost** | [**GroupStudyInterviewPostResponseDto**](GroupStudyInterviewPostResponseDto.md) | 그룹스터디 면접 질문 | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GroupStudyFullResponseDto } from './api';
+
+const instance: GroupStudyFullResponseDto = {
+ basicInfo,
+ detailInfo,
+ interviewPost,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyHomeworkApi.md b/src/api/openapi/docs/GroupStudyHomeworkApi.md
index 0328c710..455e6fdf 100644
--- a/src/api/openapi/docs/GroupStudyHomeworkApi.md
+++ b/src/api/openapi/docs/GroupStudyHomeworkApi.md
@@ -4,12 +4,69 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|Method | HTTP request | Description|
|------------- | ------------- | -------------|
-|[**editHomework**](#edithomework) | **PUT** /homeworks/{homeworkId} | |
-|[**submitHomework**](#submithomework) | **POST** /missions/{missionId}/homeworks | |
+|[**deleteHomework**](#deletehomework) | **DELETE** /api/v1/homeworks/{homeworkId} | 과제 삭제|
+|[**editHomework**](#edithomework) | **PUT** /api/v1/homeworks/{homeworkId} | 과제 수정|
+|[**getHomework**](#gethomework) | **GET** /api/v1/homeworks/{homeworkId} | |
+|[**submitHomework**](#submithomework) | **POST** /api/v1/missions/{missionId}/homeworks | 과제 제출|
+
+# **deleteHomework**
+> NoContentResponse deleteHomework()
+
+제출한 과제를 삭제합니다. 평가가 완료되지 않았고 미션 기간 내에만 삭제할 수 있습니다.
+
+### Example
+
+```typescript
+import {
+ GroupStudyHomeworkApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new GroupStudyHomeworkApi(configuration);
+
+let homeworkId: number; //과제 ID (default to undefined)
+
+const { status, data } = await apiInstance.deleteHomework(
+ homeworkId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **homeworkId** | [**number**] | 과제 ID | defaults to undefined|
+
+
+### Return type
+
+**NoContentResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | 과제 삭제 성공 | - |
+|**400** | 잘못된 요청 (이미 평가됨, 이미 삭제됨, 제출 기간 오류 등) | - |
+|**403** | Illegal access to homework | - |
+|**404** | 과제를 찾을 수 없음 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **editHomework**
> BaseResponse editHomework(homeworkEditRequest)
+제출한 과제의 내용을 수정합니다. 평가가 완료되지 않았고 미션 기간 내에만 수정할 수 있습니다. 텍스트 내용은 최소 100자 이상이어야 합니다.
### Example
@@ -23,7 +80,7 @@ import {
const configuration = new Configuration();
const apiInstance = new GroupStudyHomeworkApi(configuration);
-let homeworkId: number; // (default to undefined)
+let homeworkId: number; //과제 ID (default to undefined)
let homeworkEditRequest: HomeworkEditRequest; //
const { status, data } = await apiInstance.editHomework(
@@ -37,7 +94,7 @@ const { status, data } = await apiInstance.editHomework(
|Name | Type | Description | Notes|
|------------- | ------------- | ------------- | -------------|
| **homeworkEditRequest** | **HomeworkEditRequest**| | |
-| **homeworkId** | [**number**] | | defaults to undefined|
+| **homeworkId** | [**number**] | 과제 ID | defaults to undefined|
### Return type
@@ -51,6 +108,59 @@ const { status, data } = await apiInstance.editHomework(
### HTTP request headers
- **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | 과제 수정 성공 | - |
+|**400** | 잘못된 요청 (이미 평가됨, 텍스트 내용 길이 부족, 제출 기간 오류 등) | - |
+|**403** | Illegal access to homework | - |
+|**404** | 과제를 찾을 수 없음 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getHomework**
+> BaseResponseHomeworkResponseDto getHomework()
+
+
+### Example
+
+```typescript
+import {
+ GroupStudyHomeworkApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new GroupStudyHomeworkApi(configuration);
+
+let homeworkId: number; // (default to undefined)
+
+const { status, data } = await apiInstance.getHomework(
+ homeworkId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **homeworkId** | [**number**] | | defaults to undefined|
+
+
+### Return type
+
+**BaseResponseHomeworkResponseDto**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
- **Accept**: */*
@@ -64,6 +174,7 @@ const { status, data } = await apiInstance.editHomework(
# **submitHomework**
> BaseResponse submitHomework(homeworkSubmissionRequest)
+특정 미션에 대한 과제를 제출합니다. 텍스트 내용은 최소 100자 이상이어야 하며, 선택적으로 링크를 포함할 수 있습니다.
### Example
@@ -77,7 +188,7 @@ import {
const configuration = new Configuration();
const apiInstance = new GroupStudyHomeworkApi(configuration);
-let missionId: number; // (default to undefined)
+let missionId: number; //미션 ID (default to undefined)
let homeworkSubmissionRequest: HomeworkSubmissionRequest; //
const { status, data } = await apiInstance.submitHomework(
@@ -91,7 +202,7 @@ const { status, data } = await apiInstance.submitHomework(
|Name | Type | Description | Notes|
|------------- | ------------- | ------------- | -------------|
| **homeworkSubmissionRequest** | **HomeworkSubmissionRequest**| | |
-| **missionId** | [**number**] | | defaults to undefined|
+| **missionId** | [**number**] | 미션 ID | defaults to undefined|
### Return type
@@ -105,13 +216,15 @@ const { status, data } = await apiInstance.submitHomework(
### HTTP request headers
- **Content-Type**: application/json
- - **Accept**: */*
+ - **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-|**200** | OK | - |
+|**201** | 과제 제출 성공 | - |
+|**400** | 잘못된 요청 (텍스트 내용 길이 부족, 제출 기간 오류 등) | - |
+|**404** | 과제 또는 미션을 찾을 수 없음 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudInterviewPostResponseContent.md b/src/api/openapi/docs/GroupStudyInterviewPostResponseDto.md
similarity index 83%
rename from src/api/openapi/docs/GroupStudInterviewPostResponseContent.md
rename to src/api/openapi/docs/GroupStudyInterviewPostResponseDto.md
index 9368fb75..1e25a5af 100644
--- a/src/api/openapi/docs/GroupStudInterviewPostResponseContent.md
+++ b/src/api/openapi/docs/GroupStudyInterviewPostResponseDto.md
@@ -1,4 +1,4 @@
-# GroupStudInterviewPostResponseContent
+# GroupStudyInterviewPostResponseDto
그룹스터디 개설질문 응답
@@ -14,9 +14,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudInterviewPostResponseContent } from './api';
+import { GroupStudyInterviewPostResponseDto } from './api';
-const instance: GroupStudInterviewPostResponseContent = {
+const instance: GroupStudyInterviewPostResponseDto = {
interviewPost,
createdAt,
updatedAt,
diff --git a/src/api/openapi/docs/GroupStudyInterviewPostUpdateResponse.md b/src/api/openapi/docs/GroupStudyInterviewPostUpdateResponse.md
index f930fd45..6bc975b8 100644
--- a/src/api/openapi/docs/GroupStudyInterviewPostUpdateResponse.md
+++ b/src/api/openapi/docs/GroupStudyInterviewPostUpdateResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**GroupStudInterviewPostResponseContent**](GroupStudInterviewPostResponseContent.md) | Content | [optional] [default to undefined]
+**content** | [**GroupStudyInterviewPostResponseDto**](GroupStudyInterviewPostResponseDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyListItem.md b/src/api/openapi/docs/GroupStudyListItem.md
deleted file mode 100644
index f6cceb5c..00000000
--- a/src/api/openapi/docs/GroupStudyListItem.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# GroupStudyListItem
-
-그룹스터디 목록 아이템 (PageResponse에서 사용)
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**basicInfo** | [**GroupStudyBasicInfoResponse**](GroupStudyBasicInfoResponse.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
-**simpleDetailInfo** | [**GroupStudySimpleInfoResponse**](GroupStudySimpleInfoResponse.md) | 그룹스터디 간단한 상세 정보 | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyListItem } from './api';
-
-const instance: GroupStudyListItem = {
- basicInfo,
- simpleDetailInfo,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyListItemDto.md b/src/api/openapi/docs/GroupStudyListItemDto.md
new file mode 100644
index 00000000..bc828d00
--- /dev/null
+++ b/src/api/openapi/docs/GroupStudyListItemDto.md
@@ -0,0 +1,23 @@
+# GroupStudyListItemDto
+
+그룹스터디 목록 아이템 (PageResponse에서 사용)
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**basicInfo** | [**GroupStudyBasicInfoResponseDto**](GroupStudyBasicInfoResponseDto.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
+**simpleDetailInfo** | [**GroupStudySimpleInfoResponseDto**](GroupStudySimpleInfoResponseDto.md) | 그룹스터디 간단한 상세 정보 | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { GroupStudyListItemDto } from './api';
+
+const instance: GroupStudyListItemDto = {
+ basicInfo,
+ simpleDetailInfo,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyListResponse.md b/src/api/openapi/docs/GroupStudyListResponse.md
index 21d49260..7cbe5e65 100644
--- a/src/api/openapi/docs/GroupStudyListResponse.md
+++ b/src/api/openapi/docs/GroupStudyListResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**PageResponseGroupStudyListItem**](PageResponseGroupStudyListItem.md) | Content | [optional] [default to undefined]
+**content** | [**PageResponseGroupStudyListItemDto**](PageResponseGroupStudyListItemDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyManagementApi.md b/src/api/openapi/docs/GroupStudyManagementApi.md
index cd77cf7c..8f7550f3 100644
--- a/src/api/openapi/docs/GroupStudyManagementApi.md
+++ b/src/api/openapi/docs/GroupStudyManagementApi.md
@@ -195,7 +195,7 @@ let pageSize: number; //페이지 크기 (optional) (default to 20)
let type: Array<'PROJECT' | 'MENTORING' | 'SEMINAR' | 'CHALLENGE' | 'BOOK_STUDY' | 'LECTURE_STUDY'>; //스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능. (optional) (default to undefined)
let targetRoles: Array<'BACKEND' | 'FRONTEND' | 'PLANNER' | 'DESIGNER'>; //모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능. (optional) (default to undefined)
let method: Array<'ONLINE' | 'OFFLINE' | 'HYBRID'>; //진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능. (optional) (default to undefined)
-let inProgress: boolean; //진행중인 스터디만 조회할지 여부. (optional) (default to undefined)
+let recruiting: boolean; //모집 중인 스터디만 조회할지 여부. (optional) (default to undefined)
const { status, data } = await apiInstance.getGroupStudies(
classification,
@@ -204,7 +204,7 @@ const { status, data } = await apiInstance.getGroupStudies(
type,
targetRoles,
method,
- inProgress
+ recruiting
);
```
@@ -218,7 +218,7 @@ const { status, data } = await apiInstance.getGroupStudies(
| **type** | **Array<'PROJECT' | 'MENTORING' | 'SEMINAR' | 'CHALLENGE' | 'BOOK_STUDY' | 'LECTURE_STUDY'>** | 스터디 종류 필터 (PROJECT: 프로젝트, STUDY: 스터디). 다중 선택 가능. | (optional) defaults to undefined|
| **targetRoles** | **Array<'BACKEND' | 'FRONTEND' | 'PLANNER' | 'DESIGNER'>** | 모집 대상 역할 필터 (PLANNER: 기획자, BACKEND: 백엔드 개발자, FRONTEND: 프론트엔드 개발자, DESIGNER: 디자이너, ANY: 무관). 다중 선택 가능. | (optional) defaults to undefined|
| **method** | **Array<'ONLINE' | 'OFFLINE' | 'HYBRID'>** | 진행 방식 필터 (ONLINE: 온라인, OFFLINE: 오프라인, BOTH: 병행). 다중 선택 가능. | (optional) defaults to undefined|
-| **inProgress** | [**boolean**] | 진행중인 스터디만 조회할지 여부. | (optional) defaults to undefined|
+| **recruiting** | [**boolean**] | 모집 중인 스터디만 조회할지 여부. | (optional) defaults to undefined|
### Return type
diff --git a/src/api/openapi/docs/GroupStudyMemberApi.md b/src/api/openapi/docs/GroupStudyMemberApi.md
index ca5614a8..d90cc337 100644
--- a/src/api/openapi/docs/GroupStudyMemberApi.md
+++ b/src/api/openapi/docs/GroupStudyMemberApi.md
@@ -4,17 +4,67 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|Method | HTTP request | Description|
|------------- | ------------- | -------------|
+|[**getDiscretionGrades**](#getdiscretiongrades) | **GET** /api/v1/group-studies/members/discretions | 진행 점수 등급 목록 조회|
|[**getGroupStudyMembers**](#getgroupstudymembers) | **GET** /api/v1/group-studies/{id}/members | 참여자 목록 조회|
+|[**getMemberRole**](#getmemberrole) | **GET** /api/v1/group-studies/{id}/members/role | 그룹스터디 내 요청자 역할 조회|
|[**getMemberStatus**](#getmemberstatus) | **GET** /api/v1/group-studies/{id}/members/status | 그룹스터디 회원의 현재 상태 및 사유 조회|
-|[**getProgressGrades**](#getprogressgrades) | **GET** /api/v1/group-studies/members/progress-grades | 진행 점수 등급 목록 조회|
|[**kickMember**](#kickmember) | **DELETE** /api/v1/group-studies/{id}/members | 참여자 탈퇴/추방|
|[**updateGreeting**](#updategreeting) | **PUT** /api/v1/group-studies/{id}/members/greeting | 가입인사 등록/수정|
-|[**updateMemberProgress**](#updatememberprogress) | **PUT** /api/v1/group-studies/{id}/members/progress | 진행 점수 부여/수정|
+|[**updateMemberDiscretion**](#updatememberdiscretion) | **PUT** /api/v1/group-studies/{id}/members/discretions | 진행 점수 부여/수정|
+
+# **getDiscretionGrades**
+> getDiscretionGrades()
+
+작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+
+### Example
+
+```typescript
+import {
+ GroupStudyMemberApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new GroupStudyMemberApi(configuration);
+
+const { status, data } = await apiInstance.getDiscretionGrades();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json, */*
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 진행 점수 등급 목록 조회 성공 | - |
+|**400** | 클라이언트 요청 오류 | - |
+|**404** | 리소스 조회 실패 | - |
+|**500** | 그 외 | - |
+|**401** | Bearer Token is invalid or no bearer token | - |
+|**403** | You are authenticated but not allowed authorization | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **getGroupStudyMembers**
> GroupStudyMembersResponse getGroupStudyMembers()
-작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | progressHistory | array | 진행 점수 획득 내역 | [ ... ] | --- ### Response > content > members > progress > progressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | ### Response > content > members > progress > progressHistory > grade | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+작성일자: 2025-09-28 작성자: 성효빈 ## Description - 그룹 스터디의 사용자 목록을 조회합니다. - 진행률 내림차순, 참여일시 오름차순으로 정렬됩니다. - **현재 로그인 사용자는 최상단에 한 번 더 표시**됩니다(ranking: 0). - 현재 로그인 사용자가 리더이면서 참여자가 아닌 경우에는 제외됩니다. - **랭킹 1·2·3위 사용자는 모든 페이지 응답에 포함**됩니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | isPaging | boolean | 페이지네이션 사용 여부 | N | default: true | | pageSize | number | 페이지 크기 | N | default: 5 | | pageNumber | number | 페이지 번호(1부터) | N | default: 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-08-17T12:08:35.54579\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹 스터디 참여자 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | pageSize | number | 페이지 크기 | 5 | | pageNumber | number | 현재 페이지 | 1 | | totalElements | number | 총 아이템 수(명예의 전당 제외) | 127 | | totalMemberCount | number | 총 참여자 수 | 130 | | hasPrevious | boolean | 이전 페이지 존재 여부 | true / false | | hasNext | boolean | 다음 페이지 존재 여부 | true / false | | members | array | 현재 페이지의 사용자 목록 | [ ... ] | --- ### Response > content > members | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 사용자 ID | 1 | | profileImageUrl | string | 프로필 이미지 URL | \"[https://test-api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp\"](https://api.zeroone.it.kr/profile-image/db8aaf70-7791-4134-9ea1-98b774b12056_1755342010720.webp) | | memberName | string | 이름 | \"성효빈\" | | tel | string | 전화번호 | \"010-1234-5678\" | | progress | object | 진행률 정보 | { ... } | | ranking | number | 랭킹 | 12 | | greeting | string | 가입인사 내용 | \"안녕하세요. 20자 이상이어야 합니다. 가나다라마바사\" | | lastAccessedAt | string(datetime) | 마지막 접속 일시 | \"2025-10-07T15:04:04\" | --- ### Response > content > members > progress | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | score | number | 진행 점수 | 75.5 | | maxProgressScore | number | 최대 진행 점수 | 100.0 | | discretionGradeHistory | array | 재량 점수 획득 내역 | [ ... ] | | missionProgressHistory | array | 미션 평가 내역 | [ ... ] | --- ### Response > content > members > progress > discretionGradeHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 획득 내역 ID | 1 | | acquiredAt | string(datetime) | 획득 일시 | \"2025-09-15 21:34:10\" | | grade | object | 획득 등급 | { ... } | | reason | string | 사유(성공한 Task) | \"PR 리뷰 3건 완료\" | --- ### Response > content > members > progress > missionProgressHistory | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 평가 ID | 1 | | acquiredAt | string(datetime) | 평가 일시 | \"2025-10-07T19:09:58\" | | grade | object | 평가 등급 | { ... } | | reason | string | 평가 사유(코멘트) | \"잘 작성하셨습니다\" |
### Example
@@ -74,10 +124,10 @@ const { status, data } = await apiInstance.getGroupStudyMembers(
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
-# **getMemberStatus**
-> GetGroupStudyMemberStatusResponse getMemberStatus()
+# **getMemberRole**
+> GetMemberRoleResponse getMemberRole()
-작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
+작성일자: 2026-01-04 작성자: Claude Code --- ## Description - 그룹스터디 내 요청자(API 호출자)의 역할을 조회합니다. - 역할은 PARTICIPANT(참여자) 또는 LEADER(리더)입니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2026-01-04T10:00:00.12345\" | | content | object | 응답 본문 | { \"role\": \"LEADER\" } | | message | string | 처리 결과 | \"그룹스터디 내 요청자 역할 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | role | string | 그룹스터디 내 역할 | \"PARTICIPANT\" 또는 \"LEADER\" |
### Example
@@ -92,7 +142,7 @@ const apiInstance = new GroupStudyMemberApi(configuration);
let id: number; //그룹스터디 ID (default to undefined)
-const { status, data } = await apiInstance.getMemberStatus(
+const { status, data } = await apiInstance.getMemberRole(
id
);
```
@@ -106,7 +156,7 @@ const { status, data } = await apiInstance.getMemberStatus(
### Return type
-**GetGroupStudyMemberStatusResponse**
+**GetMemberRoleResponse**
### Authorization
@@ -121,19 +171,19 @@ const { status, data } = await apiInstance.getMemberStatus(
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-|**200** | 그룹스터디 회원의 현재 상태 및 사유 조회 성공 | - |
+|**200** | 그룹스터디 내 요청자 역할 조회 성공 | - |
|**400** | 클라이언트 요청 오류 | - |
-|**404** | 그룹스터디 조회 실패 | - |
+|**404** | 그룹스터디 회원 조회 실패 | - |
|**500** | 그 외 | - |
|**401** | Bearer Token is invalid or no bearer token | - |
|**403** | You are authenticated but not allowed authorization | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
-# **getProgressGrades**
-> getProgressGrades()
+# **getMemberStatus**
+> GetGroupStudyMemberStatusResponse getMemberStatus()
-작성일자: 2025-09-28 작성자: 성효빈 --- ## Description 그룹 스터디에서 사용 가능한 진행 점수 등급 목록을 조회합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:45:22.12345\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"진행 점수 등급 목록 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | grades | array | 등급 목록 | [ ... ] | ### Response > content > grades | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | id | number | 진행 점수 등급 ID | 1 | | code | string | 등급 코드 | \"A+\" | | name | string | 등급명 | \"Great\" | | score | number | 등급 점수 | 4.5 |
+작성일자: 2025-10-24 작성자: 성효빈 --- ## Description - 그룹스터디 회원의 현재 상태 및 사유를 조회합니다. - 회원이 아닌 경우 \"NONE\"을 반환합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹스터디 ID | Y | 1 | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T21:18:45.67890\" | | content | object | 응답 본문 | { ... } | | message | string | 처리 결과 | \"그룹스터디 회원의 현재 상태 및 사유 조회 성공\" | --- ### Response > content | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | status | string | 그룹스터디 회원의 현재 상태 | 회원 아님: \"NONE\" / 대기:\"PENDING\" / 승인:\"APPROVED\" / 거절:\"REJECTED\" / 탈퇴:\"EXIT\" / 추방:\"KICKED\" | | reason | string | 사유 | \"마음에 안 들어서 강퇴했습니다.\" |
### Example
@@ -146,16 +196,23 @@ import {
const configuration = new Configuration();
const apiInstance = new GroupStudyMemberApi(configuration);
-const { status, data } = await apiInstance.getProgressGrades();
+let id: number; //그룹스터디 ID (default to undefined)
+
+const { status, data } = await apiInstance.getMemberStatus(
+ id
+);
```
### Parameters
-This endpoint does not have any parameters.
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **id** | [**number**] | 그룹스터디 ID | defaults to undefined|
### Return type
-void (empty response body)
+**GetGroupStudyMemberStatusResponse**
### Authorization
@@ -170,9 +227,9 @@ void (empty response body)
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-|**200** | 진행 점수 등급 목록 조회 성공 | - |
+|**200** | 그룹스터디 회원의 현재 상태 및 사유 조회 성공 | - |
|**400** | 클라이언트 요청 오류 | - |
-|**404** | 리소스 조회 실패 | - |
+|**404** | 그룹스터디 조회 실패 | - |
|**500** | 그 외 | - |
|**401** | Bearer Token is invalid or no bearer token | - |
|**403** | You are authenticated but not allowed authorization | - |
@@ -300,8 +357,8 @@ const { status, data } = await apiInstance.updateGreeting(
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
-# **updateMemberProgress**
-> StringResponseSchema updateMemberProgress(updateGroupStudyMemberProgressRequest)
+# **updateMemberDiscretion**
+> StringResponseSchema updateMemberDiscretion(updateGroupStudyMemberDiscretionRequest)
작성일자: 2025-09-28 작성자: 성효빈 --- ## Description - 그룹 스터디 리더가 특정 참여자에게 진행 점수를 부여하거나 수정합니다. - 최초 요청 시 생성, 이후 요청 시 수정합니다. --- ## Request | **키** | **타입** | **설명** | **필수 여부** | **예시** | | --- | --- | --- | --- | --- | | id(path) | number | 그룹 스터디 ID | Y | 1 | | targetMemberId | number | 대상자 ID | Y | 101 | | gradeId | number | 획득 등급 ID | Y | 1 | | reason | string | 사유 | Y | \"출석\" | --- ## Response | **키** | **타입** | **설명** | **예시** | | --- | --- | --- | --- | | statusCode | number | 상태 코드 | 200: 성공 / 400: 클라이언트 요청 오류 / 401: 인증 실패 / 403: 인가 실패 / 404: 리소스 조회 실패 / 500: 그 외 | | timestamp | string(datetime) | 응답 일시 | \"2025-09-28T20:35:41.12345\" | | content | string | 응답 본문 | null | | message | string | 처리 결과 | \"진행 점수 업데이트 성공\" |
@@ -311,18 +368,18 @@ const { status, data } = await apiInstance.updateGreeting(
import {
GroupStudyMemberApi,
Configuration,
- UpdateGroupStudyMemberProgressRequest
+ UpdateGroupStudyMemberDiscretionRequest
} from './api';
const configuration = new Configuration();
const apiInstance = new GroupStudyMemberApi(configuration);
let id: number; //그룹 스터디 ID (default to undefined)
-let updateGroupStudyMemberProgressRequest: UpdateGroupStudyMemberProgressRequest; //
+let updateGroupStudyMemberDiscretionRequest: UpdateGroupStudyMemberDiscretionRequest; //
-const { status, data } = await apiInstance.updateMemberProgress(
+const { status, data } = await apiInstance.updateMemberDiscretion(
id,
- updateGroupStudyMemberProgressRequest
+ updateGroupStudyMemberDiscretionRequest
);
```
@@ -330,7 +387,7 @@ const { status, data } = await apiInstance.updateMemberProgress(
|Name | Type | Description | Notes|
|------------- | ------------- | ------------- | -------------|
-| **updateGroupStudyMemberProgressRequest** | **UpdateGroupStudyMemberProgressRequest**| | |
+| **updateGroupStudyMemberDiscretionRequest** | **UpdateGroupStudyMemberDiscretionRequest**| | |
| **id** | [**number**] | 그룹 스터디 ID | defaults to undefined|
@@ -355,6 +412,7 @@ const { status, data } = await apiInstance.updateMemberProgress(
|**400** | 클라이언트 요청 오류 | - |
|**402** | 인가 실패 | - |
|**404** | 리소스 조회 실패 | - |
+|**409** | 서버 상태와 요청 충돌 | - |
|**500** | 그 외 | - |
|**401** | Bearer Token is invalid or no bearer token | - |
|**403** | You are authenticated but not allowed authorization | - |
diff --git a/src/api/openapi/docs/GroupStudyMemberProgressHistoryResponse.md b/src/api/openapi/docs/GroupStudyMemberProgressHistoryResponse.md
deleted file mode 100644
index 798c24c5..00000000
--- a/src/api/openapi/docs/GroupStudyMemberProgressHistoryResponse.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# GroupStudyMemberProgressHistoryResponse
-
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**id** | **number** | | [optional] [default to undefined]
-**acquiredAt** | **string** | | [optional] [default to undefined]
-**grade** | [**GroupStudyMemberProgressGradeResponse**](GroupStudyMemberProgressGradeResponse.md) | | [optional] [default to undefined]
-**reason** | **string** | | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyMemberProgressHistoryResponse } from './api';
-
-const instance: GroupStudyMemberProgressHistoryResponse = {
- id,
- acquiredAt,
- grade,
- reason,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyMemberProgressInfoResponse.md b/src/api/openapi/docs/GroupStudyMemberProgressInfoResponse.md
deleted file mode 100644
index b8678d37..00000000
--- a/src/api/openapi/docs/GroupStudyMemberProgressInfoResponse.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# GroupStudyMemberProgressInfoResponse
-
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**score** | **number** | | [optional] [default to undefined]
-**progressHistory** | [**Array<GroupStudyMemberProgressHistoryResponse>**](GroupStudyMemberProgressHistoryResponse.md) | | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyMemberProgressInfoResponse } from './api';
-
-const instance: GroupStudyMemberProgressInfoResponse = {
- score,
- progressHistory,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyMemberResponse.md b/src/api/openapi/docs/GroupStudyMemberResponse.md
deleted file mode 100644
index ecd976be..00000000
--- a/src/api/openapi/docs/GroupStudyMemberResponse.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# GroupStudyMemberResponse
-
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**id** | **number** | | [optional] [default to undefined]
-**profileImageUrl** | **string** | | [optional] [default to undefined]
-**memberName** | **string** | | [optional] [default to undefined]
-**tel** | **string** | | [optional] [default to undefined]
-**progress** | [**GroupStudyMemberProgressInfoResponse**](GroupStudyMemberProgressInfoResponse.md) | | [optional] [default to undefined]
-**ranking** | **number** | | [optional] [default to undefined]
-**greeting** | **string** | | [optional] [default to undefined]
-**lastAccessedAt** | **string** | | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyMemberResponse } from './api';
-
-const instance: GroupStudyMemberResponse = {
- id,
- profileImageUrl,
- memberName,
- tel,
- progress,
- ranking,
- greeting,
- lastAccessedAt,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyMembersResponse.md b/src/api/openapi/docs/GroupStudyMembersResponse.md
index 946f842a..553962f7 100644
--- a/src/api/openapi/docs/GroupStudyMembersResponse.md
+++ b/src/api/openapi/docs/GroupStudyMembersResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**GroupStudyMembersResponseContent**](GroupStudyMembersResponseContent.md) | Content | [optional] [default to undefined]
+**content** | [**GroupStudyMembersResponse**](GroupStudyMembersResponse.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/GroupStudyMembersResponseContent.md b/src/api/openapi/docs/GroupStudyMembersResponseContent.md
deleted file mode 100644
index 97662784..00000000
--- a/src/api/openapi/docs/GroupStudyMembersResponseContent.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# GroupStudyMembersResponseContent
-
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**pageSize** | **number** | | [optional] [default to undefined]
-**pageNumber** | **number** | | [optional] [default to undefined]
-**totalElements** | **number** | | [optional] [default to undefined]
-**totalMemberCount** | **number** | | [optional] [default to undefined]
-**hasPrevious** | **boolean** | | [optional] [default to undefined]
-**hasNext** | **boolean** | | [optional] [default to undefined]
-**members** | [**Array<GroupStudyMemberResponse>**](GroupStudyMemberResponse.md) | | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { GroupStudyMembersResponseContent } from './api';
-
-const instance: GroupStudyMembersResponseContent = {
- pageSize,
- pageNumber,
- totalElements,
- totalMemberCount,
- hasPrevious,
- hasNext,
- members,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/GroupStudyMemberProgressGradeResponse.md b/src/api/openapi/docs/GroupStudyProgressGradeResponse.md
similarity index 78%
rename from src/api/openapi/docs/GroupStudyMemberProgressGradeResponse.md
rename to src/api/openapi/docs/GroupStudyProgressGradeResponse.md
index 545b82f3..554ce76f 100644
--- a/src/api/openapi/docs/GroupStudyMemberProgressGradeResponse.md
+++ b/src/api/openapi/docs/GroupStudyProgressGradeResponse.md
@@ -1,4 +1,4 @@
-# GroupStudyMemberProgressGradeResponse
+# GroupStudyProgressGradeResponse
## Properties
@@ -13,9 +13,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GroupStudyMemberProgressGradeResponse } from './api';
+import { GroupStudyProgressGradeResponse } from './api';
-const instance: GroupStudyMemberProgressGradeResponse = {
+const instance: GroupStudyProgressGradeResponse = {
id,
code,
name,
diff --git a/src/api/openapi/docs/GroupStudySimpleInfoResponse.md b/src/api/openapi/docs/GroupStudySimpleInfoResponseDto.md
similarity index 69%
rename from src/api/openapi/docs/GroupStudySimpleInfoResponse.md
rename to src/api/openapi/docs/GroupStudySimpleInfoResponseDto.md
index 41d421d7..f33e6899 100644
--- a/src/api/openapi/docs/GroupStudySimpleInfoResponse.md
+++ b/src/api/openapi/docs/GroupStudySimpleInfoResponseDto.md
@@ -1,4 +1,4 @@
-# GroupStudySimpleInfoResponse
+# GroupStudySimpleInfoResponseDto
그룹스터디 간단한 상세 정보 (목록조회용)
@@ -6,16 +6,16 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**thumbnail** | [**Image**](Image.md) | 스터디 썸네일 이미지 | [optional] [default to undefined]
+**thumbnail** | [**ImageDto**](ImageDto.md) | 스터디 썸네일 이미지 | [optional] [default to undefined]
**title** | **string** | 스터디 제목 | [optional] [default to undefined]
**summary** | **string** | 스터디 한줄 요약 | [optional] [default to undefined]
## Example
```typescript
-import { GroupStudySimpleInfoResponse } from './api';
+import { GroupStudySimpleInfoResponseDto } from './api';
-const instance: GroupStudySimpleInfoResponse = {
+const instance: GroupStudySimpleInfoResponseDto = {
thumbnail,
title,
summary,
diff --git a/src/api/openapi/docs/HeartInfo.md b/src/api/openapi/docs/HeartInfo.md
new file mode 100644
index 00000000..92357c3c
--- /dev/null
+++ b/src/api/openapi/docs/HeartInfo.md
@@ -0,0 +1,36 @@
+# HeartInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**sMSCNT** | **number** | | [optional] [default to undefined]
+**lMSCNT** | **number** | | [optional] [default to undefined]
+**mMSCNT** | **number** | | [optional] [default to undefined]
+**aLTCNT** | **number** | | [optional] [default to undefined]
+**fTSCNT** | **number** | | [optional] [default to undefined]
+**fTMCNT** | **number** | | [optional] [default to undefined]
+**fTWCNT** | **number** | | [optional] [default to undefined]
+**fTLCNT** | **number** | | [optional] [default to undefined]
+**fTCCNT** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HeartInfo } from './api';
+
+const instance: HeartInfo = {
+ sMSCNT,
+ lMSCNT,
+ mMSCNT,
+ aLTCNT,
+ fTSCNT,
+ fTMCNT,
+ fTWCNT,
+ fTLCNT,
+ fTCCNT,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/HistoryItem.md b/src/api/openapi/docs/HistoryItem.md
new file mode 100644
index 00000000..6b71f312
--- /dev/null
+++ b/src/api/openapi/docs/HistoryItem.md
@@ -0,0 +1,34 @@
+# HistoryItem
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**mid** | **string** | | [optional] [default to undefined]
+**type** | **string** | | [optional] [default to undefined]
+**sender** | **string** | | [optional] [default to undefined]
+**msgCount** | **number** | | [optional] [default to undefined]
+**mbody** | **string** | | [optional] [default to undefined]
+**reserveDate** | **string** | | [optional] [default to undefined]
+**reserveState** | **string** | | [optional] [default to undefined]
+**regdate** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HistoryItem } from './api';
+
+const instance: HistoryItem = {
+ mid,
+ type,
+ sender,
+ msgCount,
+ mbody,
+ reserveDate,
+ reserveState,
+ regdate,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/HomeworkContentDto.md b/src/api/openapi/docs/HomeworkContentDto.md
new file mode 100644
index 00000000..8c4656d3
--- /dev/null
+++ b/src/api/openapi/docs/HomeworkContentDto.md
@@ -0,0 +1,22 @@
+# HomeworkContentDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**textContent** | **string** | | [optional] [default to undefined]
+**optionalContent** | [**HomeworkOptionalContentDto**](HomeworkOptionalContentDto.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HomeworkContentDto } from './api';
+
+const instance: HomeworkContentDto = {
+ textContent,
+ optionalContent,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/HomeworkDetailResponseDto.md b/src/api/openapi/docs/HomeworkDetailResponseDto.md
new file mode 100644
index 00000000..1bfb0367
--- /dev/null
+++ b/src/api/openapi/docs/HomeworkDetailResponseDto.md
@@ -0,0 +1,38 @@
+# HomeworkDetailResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**homeworkId** | **number** | | [optional] [default to undefined]
+**homeworkStatus** | **string** | | [optional] [default to undefined]
+**submissionTime** | **string** | | [optional] [default to undefined]
+**submitterId** | **number** | | [optional] [default to undefined]
+**submitterApplyRole** | **string** | 그룹스터디 신청자 역할 | [optional] [default to undefined]
+**submitterNickname** | **string** | | [optional] [default to undefined]
+**submitterProfileImage** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
+**homeworkTextContent** | **string** | | [optional] [default to undefined]
+**homeworkLink** | **string** | | [optional] [default to undefined]
+**evaluation** | [**EvaluationDetailResponseDto**](EvaluationDetailResponseDto.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HomeworkDetailResponseDto } from './api';
+
+const instance: HomeworkDetailResponseDto = {
+ homeworkId,
+ homeworkStatus,
+ submissionTime,
+ submitterId,
+ submitterApplyRole,
+ submitterNickname,
+ submitterProfileImage,
+ homeworkTextContent,
+ homeworkLink,
+ evaluation,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/HomeworkOptionalContentDto.md b/src/api/openapi/docs/HomeworkOptionalContentDto.md
new file mode 100644
index 00000000..79d9445d
--- /dev/null
+++ b/src/api/openapi/docs/HomeworkOptionalContentDto.md
@@ -0,0 +1,20 @@
+# HomeworkOptionalContentDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**link** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HomeworkOptionalContentDto } from './api';
+
+const instance: HomeworkOptionalContentDto = {
+ link,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/HomeworkResponseDto.md b/src/api/openapi/docs/HomeworkResponseDto.md
new file mode 100644
index 00000000..f876569a
--- /dev/null
+++ b/src/api/openapi/docs/HomeworkResponseDto.md
@@ -0,0 +1,38 @@
+# HomeworkResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**homeworkId** | **number** | | [optional] [default to undefined]
+**submitterId** | **number** | | [optional] [default to undefined]
+**submitterNickname** | **string** | | [optional] [default to undefined]
+**submitterProfileImage** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
+**requestedByStudyLeader** | **boolean** | | [optional] [default to undefined]
+**submitted** | **boolean** | | [optional] [default to undefined]
+**submissionTime** | **string** | | [optional] [default to undefined]
+**homeworkContent** | [**HomeworkContentDto**](HomeworkContentDto.md) | | [optional] [default to undefined]
+**evaluation** | [**EvaluationResponse**](EvaluationResponse.md) | | [optional] [default to undefined]
+**peerReviews** | [**Array<PeerReviewResponse>**](PeerReviewResponse.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HomeworkResponseDto } from './api';
+
+const instance: HomeworkResponseDto = {
+ homeworkId,
+ submitterId,
+ submitterNickname,
+ submitterProfileImage,
+ requestedByStudyLeader,
+ submitted,
+ submissionTime,
+ homeworkContent,
+ evaluation,
+ peerReviews,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/Image.md b/src/api/openapi/docs/ImageDto.md
similarity index 60%
rename from src/api/openapi/docs/Image.md
rename to src/api/openapi/docs/ImageDto.md
index a164ea17..4713c242 100644
--- a/src/api/openapi/docs/Image.md
+++ b/src/api/openapi/docs/ImageDto.md
@@ -1,4 +1,4 @@
-# Image
+# ImageDto
## Properties
@@ -6,14 +6,14 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**imageId** | **number** | 이미지 ID | [optional] [default to undefined]
-**resizedImages** | [**Array<ResizedImage>**](ResizedImage.md) | 같은 이미지를 여러 사이즈로 리사이징하여 생성된 이미지 목록 | [optional] [default to undefined]
+**resizedImages** | [**Array<ResizedImageDto>**](ResizedImageDto.md) | 같은 이미지를 여러 사이즈로 리사이징하여 생성된 이미지 목록 | [optional] [default to undefined]
## Example
```typescript
-import { Image } from './api';
+import { ImageDto } from './api';
-const instance: Image = {
+const instance: ImageDto = {
imageId,
resizedImages,
};
diff --git a/src/api/openapi/docs/Info.md b/src/api/openapi/docs/Info.md
new file mode 100644
index 00000000..8dca0020
--- /dev/null
+++ b/src/api/openapi/docs/Info.md
@@ -0,0 +1,32 @@
+# Info
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**type** | **string** | | [optional] [default to undefined]
+**mid** | **string** | | [optional] [default to undefined]
+**current** | **number** | | [optional] [default to undefined]
+**unit** | **number** | | [optional] [default to undefined]
+**total** | **number** | | [optional] [default to undefined]
+**scnt** | **number** | | [optional] [default to undefined]
+**fcnt** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { Info } from './api';
+
+const instance: Info = {
+ type,
+ mid,
+ current,
+ unit,
+ total,
+ scnt,
+ fcnt,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/KakaoChannelListResponseDto.md b/src/api/openapi/docs/KakaoChannelListResponseDto.md
new file mode 100644
index 00000000..854b22a2
--- /dev/null
+++ b/src/api/openapi/docs/KakaoChannelListResponseDto.md
@@ -0,0 +1,24 @@
+# KakaoChannelListResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**list** | [**Array<KakaoChannelProfileDto>**](KakaoChannelProfileDto.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { KakaoChannelListResponseDto } from './api';
+
+const instance: KakaoChannelListResponseDto = {
+ code,
+ message,
+ list,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/KakaoChannelProfileDto.md b/src/api/openapi/docs/KakaoChannelProfileDto.md
new file mode 100644
index 00000000..fcf2ca29
--- /dev/null
+++ b/src/api/openapi/docs/KakaoChannelProfileDto.md
@@ -0,0 +1,40 @@
+# KakaoChannelProfileDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**senderKey** | **string** | | [optional] [default to undefined]
+**uuid** | **string** | | [optional] [default to undefined]
+**name** | **string** | | [optional] [default to undefined]
+**status** | **string** | | [optional] [default to undefined]
+**profileStat** | **string** | | [optional] [default to undefined]
+**cdate** | **string** | | [optional] [default to undefined]
+**udate** | **string** | | [optional] [default to undefined]
+**catCode** | **string** | | [optional] [default to undefined]
+**alimUseYn** | **boolean** | | [optional] [default to undefined]
+**license** | **string** | | [optional] [default to undefined]
+**licenseNum** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { KakaoChannelProfileDto } from './api';
+
+const instance: KakaoChannelProfileDto = {
+ senderKey,
+ uuid,
+ name,
+ status,
+ profileStat,
+ cdate,
+ udate,
+ catCode,
+ alimUseYn,
+ license,
+ licenseNum,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/KakaoTemplateListResponseDto.md b/src/api/openapi/docs/KakaoTemplateListResponseDto.md
new file mode 100644
index 00000000..fdddd81e
--- /dev/null
+++ b/src/api/openapi/docs/KakaoTemplateListResponseDto.md
@@ -0,0 +1,26 @@
+# KakaoTemplateListResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**list** | [**Array<TemplateDto>**](TemplateDto.md) | | [optional] [default to undefined]
+**info** | [**TemplateInfo**](TemplateInfo.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { KakaoTemplateListResponseDto } from './api';
+
+const instance: KakaoTemplateListResponseDto = {
+ code,
+ message,
+ list,
+ info,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MatchingRequestResponse.md b/src/api/openapi/docs/MatchingRequestResponse.md
new file mode 100644
index 00000000..69b12c4e
--- /dev/null
+++ b/src/api/openapi/docs/MatchingRequestResponse.md
@@ -0,0 +1,34 @@
+# MatchingRequestResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**matchingRequestId** | **number** | 매칭 요청 ID | [optional] [default to undefined]
+**memberId** | **number** | 요청 회원 ID | [optional] [default to undefined]
+**partnerId** | **number** | 파트너 회원 ID | [optional] [default to undefined]
+**status** | **string** | 매칭 상태 | [optional] [default to undefined]
+**type** | **string** | 매칭 종류 | [optional] [default to undefined]
+**content** | **string** | 내용/메모 | [optional] [default to undefined]
+**createdAt** | **string** | 생성 일시 | [optional] [default to undefined]
+**updatedAt** | **string** | 수정 일시 | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { MatchingRequestResponse } from './api';
+
+const instance: MatchingRequestResponse = {
+ matchingRequestId,
+ memberId,
+ partnerId,
+ status,
+ type,
+ content,
+ createdAt,
+ updatedAt,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MemberAccountHistoryResponseDto.md b/src/api/openapi/docs/MemberAccountHistoryResponseDto.md
new file mode 100644
index 00000000..eecaf64c
--- /dev/null
+++ b/src/api/openapi/docs/MemberAccountHistoryResponseDto.md
@@ -0,0 +1,30 @@
+# MemberAccountHistoryResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**memberId** | **number** | | [optional] [default to undefined]
+**joinedAt** | **string** | | [optional] [default to undefined]
+**loginMostRecentlyAt** | **string** | | [optional] [default to undefined]
+**loginHists** | **Array<string>** | | [optional] [default to undefined]
+**roleChangeHists** | [**Array<ChangeHistDto>**](ChangeHistDto.md) | | [optional] [default to undefined]
+**memberStatusChangeHists** | [**Array<ChangeHistDto>**](ChangeHistDto.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { MemberAccountHistoryResponseDto } from './api';
+
+const instance: MemberAccountHistoryResponseDto = {
+ memberId,
+ joinedAt,
+ loginMostRecentlyAt,
+ loginHists,
+ roleChangeHists,
+ memberStatusChangeHists,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MemberProfileResponseDto.md b/src/api/openapi/docs/MemberProfileResponseDto.md
index be7b36b7..4c45ad60 100644
--- a/src/api/openapi/docs/MemberProfileResponseDto.md
+++ b/src/api/openapi/docs/MemberProfileResponseDto.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**memberName** | **string** | 회원 이름 | [optional] [default to undefined]
**nickname** | **string** | 닉네임 | [optional] [default to undefined]
-**profileImage** | [**Image**](Image.md) | 프로필 이미지 - 리사이징된 이미지를 포함하고 있음 - 지금은 ORIGINAL 하나밖에 없음 | [optional] [default to undefined]
+**profileImage** | [**ImageDto**](ImageDto.md) | 프로필 이미지 - 리사이징된 이미지를 포함하고 있음 - 지금은 ORIGINAL 하나밖에 없음 | [optional] [default to undefined]
**simpleIntroduction** | **string** | 한마디 소개 | [optional] [default to undefined]
**mbti** | **string** | MBTI | [optional] [default to undefined]
**interests** | [**Array<IdNameDto>**](IdNameDto.md) | 관심사 | [optional] [default to undefined]
diff --git a/src/api/openapi/docs/MemberTmpControllerApi.md b/src/api/openapi/docs/MemberTmpControllerApi.md
index f96041e6..8a257118 100644
--- a/src/api/openapi/docs/MemberTmpControllerApi.md
+++ b/src/api/openapi/docs/MemberTmpControllerApi.md
@@ -7,7 +7,7 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|[**deleteMemberPermanently**](#deletememberpermanently) | **GET** /api/v1/members/{memberId}/permanently | |
# **deleteMemberPermanently**
-> BaseResponse deleteMemberPermanently()
+> BaseResponseVoid deleteMemberPermanently()
### Example
@@ -37,7 +37,7 @@ const { status, data } = await apiInstance.deleteMemberPermanently(
### Return type
-**BaseResponse**
+**BaseResponseVoid**
### Authorization
diff --git a/src/api/openapi/docs/MissionApi.md b/src/api/openapi/docs/MissionApi.md
index e1d08237..b93f0f7d 100644
--- a/src/api/openapi/docs/MissionApi.md
+++ b/src/api/openapi/docs/MissionApi.md
@@ -4,14 +4,16 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|Method | HTTP request | Description|
|------------- | ------------- | -------------|
-|[**createMission**](#createmission) | **POST** /group-studies/{groupStudyId}/missions | 그룹스터디 미션 생성|
-|[**getMissions**](#getmissions) | **GET** /group-studies/{groupStudyId}/missions | 그룹스터디 미션 목록 조회|
-|[**updateMission**](#updatemission) | **PUT** /missions/{missionId} | 그룹스터디 미션 수정|
+|[**createMission**](#createmission) | **POST** /api/v1/group-studies/{groupStudyId}/missions | 그룹스터디 미션 생성|
+|[**deleteMission**](#deletemission) | **DELETE** /api/v1/missions/{missionId} | 미션 삭제|
+|[**getMission**](#getmission) | **GET** /api/v1/missions/{missionId} | 그룹스터디 미션 조회|
+|[**getMissions**](#getmissions) | **GET** /api/v1/group-studies/{groupStudyId}/missions | 그룹스터디 미션 목록 조회|
+|[**updateMission**](#updatemission) | **PUT** /api/v1/missions/{missionId} | 그룹스터디 미션 수정|
# **createMission**
> CreateMissionResponseSchema createMission(missionCreationRequest)
-그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
+그룹스터디 리더가 새로운 미션을 생성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - RequestBody: MissionCreationRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 (현재 또는 미래) - endTime (필수): 미션 종료 시간 (현재 또는 미래) **[Response]** - MissionCreationResult: 생성된 미션 ID - Location 헤더: /missions/{missionId}
### Example
@@ -60,14 +62,122 @@ const { status, data } = await apiInstance.createMission(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**201** | 미션 생성 성공 | - |
-|**400** | 잘못된 요청 (validation 실패) | - |
-|**403** | 권한 없음 (리더가 아님) | - |
-|**404** | 그룹스터디를 찾을 수 없음 | - |
+|**400** | 잘못된 요청 (validation 실패 또는 미션 생성 실패) - NULL_TO_NOT_NULL_FIELD, EMPTY_TO_NOT_EMPTY_FIELD, DATE_REVERSED, NOT_ALLOWED_TODAY, LENGTH_EXCEEDED | - |
+|**403** | Mission creator not leader (MIS006) | - |
+|**404** | 그룹스터디를 찾을 수 없음 (GSM001) | - |
+|**409** | 미션 기간 중복 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **deleteMission**
+> NoContentResponse deleteMission()
+
+특정 미션을 삭제합니다.
+
+### Example
+
+```typescript
+import {
+ MissionApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new MissionApi(configuration);
+
+let missionId: number; //미션 ID (default to undefined)
+
+const { status, data } = await apiInstance.deleteMission(
+ missionId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **missionId** | [**number**] | 미션 ID | defaults to undefined|
+
+
+### Return type
+
+**NoContentResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | 미션 삭제 성공 | - |
+|**400** | 미션 삭제 실패 - 미션이 이미 시작됨 (MIS003) | - |
+|**403** | 미션에 대한 불법적인 접근 (MIS007) | - |
+|**404** | 미션을 찾을 수 없음 (MIS002) | - |
+|**409** | 미션 기간 중복 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getMission**
+> MissionResponse getMission()
+
+미션 ID를 통해 특정 미션의 상세 정보를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 **[Request]** - PathVariable: missionId (필수) - 미션 ID
+
+### Example
+
+```typescript
+import {
+ MissionApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new MissionApi(configuration);
+
+let missionId: number; //미션 ID (default to undefined)
+
+const { status, data } = await apiInstance.getMission(
+ missionId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **missionId** | [**number**] | 미션 ID | defaults to undefined|
+
+
+### Return type
+
+**MissionResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 미션 조회 성공 | - |
+|**404** | 미션을 찾을 수 없음 (MIS002) | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **getMissions**
-> GetMissionsResponseSchema getMissions()
+> MissionListResponseSchema getMissions()
특정 그룹스터디의 미션 목록을 페이지네이션으로 조회합니다. **[Request]** - PathVariable: groupStudyId (필수) - 그룹스터디 ID - QueryParam: page (선택, 기본값: 1) - 페이지 번호 (1부터 시작) - QueryParam: size (선택, 기본값: 10) - 페이지 크기 **[Response]** - PageResponseDto: 미션 목록과 페이지 정보 - 각 미션 정보: id, title, startTime, endTime, status
@@ -83,13 +193,15 @@ const configuration = new Configuration();
const apiInstance = new MissionApi(configuration);
let groupStudyId: number; //그룹스터디 ID (default to undefined)
+let searchType: 'ALL' | 'COMPLETED_MISSION' | 'IN_PROGRESS_MISSION'; //검색 타입 - 진행 중인 미션 혹은 완료된 미션 (default to undefined)
let page: number; //페이지 번호 (1부터 시작, 기본값: 1) (optional) (default to 1)
-let size: number; //페이지 크기 (기본값: 10) (optional) (default to 10)
+let pageSize: number; //페이지 크기 (기본값: 10) (optional) (default to 10)
const { status, data } = await apiInstance.getMissions(
groupStudyId,
+ searchType,
page,
- size
+ pageSize
);
```
@@ -98,13 +210,14 @@ const { status, data } = await apiInstance.getMissions(
|Name | Type | Description | Notes|
|------------- | ------------- | ------------- | -------------|
| **groupStudyId** | [**number**] | 그룹스터디 ID | defaults to undefined|
+| **searchType** | [**'ALL' | 'COMPLETED_MISSION' | 'IN_PROGRESS_MISSION'**]**Array<'ALL' | 'COMPLETED_MISSION' | 'IN_PROGRESS_MISSION'>** | 검색 타입 - 진행 중인 미션 혹은 완료된 미션 | defaults to undefined|
| **page** | [**number**] | 페이지 번호 (1부터 시작, 기본값: 1) | (optional) defaults to 1|
-| **size** | [**number**] | 페이지 크기 (기본값: 10) | (optional) defaults to 10|
+| **pageSize** | [**number**] | 페이지 크기 (기본값: 10) | (optional) defaults to 10|
### Return type
-**GetMissionsResponseSchema**
+**MissionListResponseSchema**
### Authorization
@@ -120,14 +233,13 @@ const { status, data } = await apiInstance.getMissions(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**200** | 미션 목록 조회 성공 | - |
-|**404** | 그룹스터디를 찾을 수 없음 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **updateMission**
> UpdateMissionResponseSchema updateMission(missionUpdateRequest)
-그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - content (필수): 미션 내용 - startTime (필수): 미션 시작 시간 - endTime (선택): 미션 종료 시간 - tasks (필수): 미션 작업 목록 - scoreAllocation (선택): 점수 배분 (1~10) **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
+그룹스터디 리더가 기존 미션을 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 리더 권한 필요 **[Request]** - PathVariable: missionId (필수) - 미션 ID - RequestBody: MissionUpdateRequest (필수) - title (필수): 미션 제목 - description (선택): 미션 설명 - guide (필수): 미션 가이드 - startTime (필수): 미션 시작 시간 - endTime (필수): 미션 종료 시간 **[Response]** - 204 No Content: 수정 성공 시 응답 본문 없음
### Example
@@ -176,9 +288,10 @@ const { status, data } = await apiInstance.updateMission(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**204** | 미션 수정 성공 | - |
-|**400** | 잘못된 요청 (validation 실패) | - |
-|**403** | 권한 없음 (리더가 아님) | - |
-|**404** | 미션을 찾을 수 없음 | - |
+|**400** | 잘못된 요청 (validation 실패, 미션 수정 실패, 또는 파라미터 검증 실패) - NULL_TO_NOT_NULL_FIELD, EMPTY_TO_NOT_EMPTY_FIELD, DATE_REVERSED, NOT_ALLOWED_TODAY, LENGTH_EXCEEDED | - |
+|**403** | 미션에 대한 비인가 접근 (MIS007) | - |
+|**404** | 미션을 찾을 수 없음 (MIS002) | - |
+|**409** | 미션 기간 중복 | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MissionCreationRequest.md b/src/api/openapi/docs/MissionCreationRequest.md
index 991c445d..1bda733e 100644
--- a/src/api/openapi/docs/MissionCreationRequest.md
+++ b/src/api/openapi/docs/MissionCreationRequest.md
@@ -6,9 +6,11 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**title** | **string** | 미션 제목 | [default to undefined]
-**content** | **string** | 미션 내용 | [default to undefined]
-**startTime** | **string** | 미션 시작 시간 | [default to undefined]
-**endTime** | **string** | 미션 종료 시간 | [default to undefined]
+**description** | **string** | 미션 내용 | [optional] [default to undefined]
+**guide** | **string** | 미션 가이드 | [default to undefined]
+**weekNum** | **number** | 주차 | [optional] [default to undefined]
+**startDate** | **string** | 미션 시작 시간 | [default to undefined]
+**endDate** | **string** | 미션 종료 시간 | [default to undefined]
## Example
@@ -17,9 +19,11 @@ import { MissionCreationRequest } from './api';
const instance: MissionCreationRequest = {
title,
- content,
- startTime,
- endTime,
+ description,
+ guide,
+ weekNum,
+ startDate,
+ endDate,
};
```
diff --git a/src/api/openapi/docs/MissionListResponse.md b/src/api/openapi/docs/MissionListResponse.md
index 051e601a..45b9f9e9 100644
--- a/src/api/openapi/docs/MissionListResponse.md
+++ b/src/api/openapi/docs/MissionListResponse.md
@@ -5,11 +5,15 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**id** | **number** | | [optional] [default to undefined]
+**missionId** | **number** | | [optional] [default to undefined]
+**weekNum** | **number** | | [optional] [default to undefined]
**title** | **string** | | [optional] [default to undefined]
-**startTime** | **string** | | [optional] [default to undefined]
-**endTime** | **string** | | [optional] [default to undefined]
+**description** | **string** | | [optional] [default to undefined]
+**startDate** | **string** | | [optional] [default to undefined]
+**endDate** | **string** | | [optional] [default to undefined]
**status** | **string** | | [optional] [default to undefined]
+**maxEvaluationCount** | **number** | | [optional] [default to undefined]
+**evaluatedCount** | **number** | | [optional] [default to undefined]
## Example
@@ -17,11 +21,15 @@ Name | Type | Description | Notes
import { MissionListResponse } from './api';
const instance: MissionListResponse = {
- id,
+ missionId,
+ weekNum,
title,
- startTime,
- endTime,
+ description,
+ startDate,
+ endDate,
status,
+ maxEvaluationCount,
+ evaluatedCount,
};
```
diff --git a/src/api/openapi/docs/GetMissionsResponseSchema.md b/src/api/openapi/docs/MissionListResponseSchema.md
similarity index 84%
rename from src/api/openapi/docs/GetMissionsResponseSchema.md
rename to src/api/openapi/docs/MissionListResponseSchema.md
index e4d7b22d..546a09d9 100644
--- a/src/api/openapi/docs/GetMissionsResponseSchema.md
+++ b/src/api/openapi/docs/MissionListResponseSchema.md
@@ -1,4 +1,4 @@
-# GetMissionsResponseSchema
+# MissionListResponseSchema
## Properties
@@ -13,9 +13,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { GetMissionsResponseSchema } from './api';
+import { MissionListResponseSchema } from './api';
-const instance: GetMissionsResponseSchema = {
+const instance: MissionListResponseSchema = {
statusCode,
timestamp,
content,
diff --git a/src/api/openapi/docs/MissionResponse.md b/src/api/openapi/docs/MissionResponse.md
new file mode 100644
index 00000000..5b57632b
--- /dev/null
+++ b/src/api/openapi/docs/MissionResponse.md
@@ -0,0 +1,26 @@
+# MissionResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**MissionResponseDto**](MissionResponseDto.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { MissionResponse } from './api';
+
+const instance: MissionResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MissionResponseDto.md b/src/api/openapi/docs/MissionResponseDto.md
new file mode 100644
index 00000000..cea3e863
--- /dev/null
+++ b/src/api/openapi/docs/MissionResponseDto.md
@@ -0,0 +1,40 @@
+# MissionResponseDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**missionId** | **number** | | [optional] [default to undefined]
+**weekNum** | **number** | | [optional] [default to undefined]
+**status** | **string** | | [optional] [default to undefined]
+**missionTitle** | **string** | | [optional] [default to undefined]
+**missionDescription** | **string** | | [optional] [default to undefined]
+**missionGuide** | **string** | | [optional] [default to undefined]
+**missionStartDate** | **string** | | [optional] [default to undefined]
+**missionEndDate** | **string** | | [optional] [default to undefined]
+**maxHomeworkSubmissionCount** | **number** | | [optional] [default to undefined]
+**currentHomeworkSubmissionCount** | **number** | | [optional] [default to undefined]
+**homeworks** | [**Array<HomeworkDetailResponseDto>**](HomeworkDetailResponseDto.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { MissionResponseDto } from './api';
+
+const instance: MissionResponseDto = {
+ missionId,
+ weekNum,
+ status,
+ missionTitle,
+ missionDescription,
+ missionGuide,
+ missionStartDate,
+ missionEndDate,
+ maxHomeworkSubmissionCount,
+ currentHomeworkSubmissionCount,
+ homeworks,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MissionUpdateRequest.md b/src/api/openapi/docs/MissionUpdateRequest.md
index 6c41be42..31b5a5ba 100644
--- a/src/api/openapi/docs/MissionUpdateRequest.md
+++ b/src/api/openapi/docs/MissionUpdateRequest.md
@@ -5,12 +5,12 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**title** | **string** | | [default to undefined]
-**content** | **string** | | [default to undefined]
-**startTime** | **string** | | [default to undefined]
-**endTime** | **string** | | [optional] [default to undefined]
-**tasks** | [**Array<MissionTaskDto>**](MissionTaskDto.md) | | [default to undefined]
-**scoreAllocation** | **number** | | [optional] [default to undefined]
+**title** | **string** | 미션 제목 | [default to undefined]
+**description** | **string** | 미션 내용 | [optional] [default to undefined]
+**guide** | **string** | 미션 가이드 | [default to undefined]
+**weekNum** | **number** | 주차 | [optional] [default to undefined]
+**startDate** | **string** | 미션 시작 시간 | [default to undefined]
+**endDate** | **string** | 미션 종료 시간 | [default to undefined]
## Example
@@ -19,11 +19,11 @@ import { MissionUpdateRequest } from './api';
const instance: MissionUpdateRequest = {
title,
- content,
- startTime,
- endTime,
- tasks,
- scoreAllocation,
+ description,
+ guide,
+ weekNum,
+ startDate,
+ endDate,
};
```
diff --git a/src/api/openapi/docs/MyGroupStudyApplicationResponse.md b/src/api/openapi/docs/MyGroupStudyApplicationResponse.md
index 13c9d9d3..b79365e1 100644
--- a/src/api/openapi/docs/MyGroupStudyApplicationResponse.md
+++ b/src/api/openapi/docs/MyGroupStudyApplicationResponse.md
@@ -7,7 +7,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**statusCode** | **number** | Status Code | [default to undefined]
**timestamp** | **string** | Timestamp | [default to undefined]
-**content** | [**PageResponseMyGroupStudyApplyListItem**](PageResponseMyGroupStudyApplyListItem.md) | Content | [optional] [default to undefined]
+**content** | [**PageResponseMyGroupStudyApplyListItemDto**](PageResponseMyGroupStudyApplyListItemDto.md) | Content | [optional] [default to undefined]
**message** | **string** | Message | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/MyGroupStudyApplyListItem.md b/src/api/openapi/docs/MyGroupStudyApplyListItem.md
deleted file mode 100644
index 94d096fe..00000000
--- a/src/api/openapi/docs/MyGroupStudyApplyListItem.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# MyGroupStudyApplyListItem
-
-내가 신청한 그룹스터디 목록 아이템 (PageResponse에서 사용)
-
-## Properties
-
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**basicInfo** | [**GroupStudyBasicInfoResponse**](GroupStudyBasicInfoResponse.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
-**simpleDetailInfo** | [**GroupStudySimpleInfoResponse**](GroupStudySimpleInfoResponse.md) | 그룹스터디 간단한 상세 정보 | [optional] [default to undefined]
-**applyInfo** | [**GroupStudyApplyResponseContent**](GroupStudyApplyResponseContent.md) | 그룹스터디 신청 정보 | [optional] [default to undefined]
-**reviewWritten** | **boolean** | 후기 작성 여부 | [optional] [default to undefined]
-
-## Example
-
-```typescript
-import { MyGroupStudyApplyListItem } from './api';
-
-const instance: MyGroupStudyApplyListItem = {
- basicInfo,
- simpleDetailInfo,
- applyInfo,
- reviewWritten,
-};
-```
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MyGroupStudyApplyListItemDto.md b/src/api/openapi/docs/MyGroupStudyApplyListItemDto.md
new file mode 100644
index 00000000..a89a9898
--- /dev/null
+++ b/src/api/openapi/docs/MyGroupStudyApplyListItemDto.md
@@ -0,0 +1,27 @@
+# MyGroupStudyApplyListItemDto
+
+내가 신청한 그룹스터디 목록 아이템 (PageResponse에서 사용)
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**basicInfo** | [**GroupStudyBasicInfoResponseDto**](GroupStudyBasicInfoResponseDto.md) | 그룹스터디 기본 정보 | [optional] [default to undefined]
+**simpleDetailInfo** | [**GroupStudySimpleInfoResponseDto**](GroupStudySimpleInfoResponseDto.md) | 그룹스터디 간단한 상세 정보 | [optional] [default to undefined]
+**applyInfo** | [**GroupStudyApplyResponseDto**](GroupStudyApplyResponseDto.md) | 그룹스터디 신청 정보 | [optional] [default to undefined]
+**reviewWritten** | **boolean** | 후기 작성 여부 | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { MyGroupStudyApplyListItemDto } from './api';
+
+const instance: MyGroupStudyApplyListItemDto = {
+ basicInfo,
+ simpleDetailInfo,
+ applyInfo,
+ reviewWritten,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/OAuth2UserInfo.md b/src/api/openapi/docs/OAuth2UserInfo.md
new file mode 100644
index 00000000..ed57334c
--- /dev/null
+++ b/src/api/openapi/docs/OAuth2UserInfo.md
@@ -0,0 +1,24 @@
+# OAuth2UserInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **string** | | [optional] [default to undefined]
+**name** | **string** | | [optional] [default to undefined]
+**profileImageUrl** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { OAuth2UserInfo } from './api';
+
+const instance: OAuth2UserInfo = {
+ id,
+ name,
+ profileImageUrl,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/OptionalHomeworkSubmission.md b/src/api/openapi/docs/OptionalHomeworkSubmission.md
index 62a31a45..1e771263 100644
--- a/src/api/openapi/docs/OptionalHomeworkSubmission.md
+++ b/src/api/openapi/docs/OptionalHomeworkSubmission.md
@@ -6,7 +6,6 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**link** | **string** | | [optional] [default to undefined]
-**empty** | **boolean** | | [optional] [default to undefined]
## Example
@@ -15,7 +14,6 @@ import { OptionalHomeworkSubmission } from './api';
const instance: OptionalHomeworkSubmission = {
link,
- empty,
};
```
diff --git a/src/api/openapi/docs/PageResponseGroupStudyListItem.md b/src/api/openapi/docs/PageResponseGroupStudyListItemDto.md
similarity index 74%
rename from src/api/openapi/docs/PageResponseGroupStudyListItem.md
rename to src/api/openapi/docs/PageResponseGroupStudyListItemDto.md
index f98f87b0..bf5da09d 100644
--- a/src/api/openapi/docs/PageResponseGroupStudyListItem.md
+++ b/src/api/openapi/docs/PageResponseGroupStudyListItemDto.md
@@ -1,11 +1,11 @@
-# PageResponseGroupStudyListItem
+# PageResponseGroupStudyListItemDto
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**content** | [**Array<GroupStudyListItem>**](GroupStudyListItem.md) | | [optional] [default to undefined]
+**content** | [**Array<GroupStudyListItemDto>**](GroupStudyListItemDto.md) | | [optional] [default to undefined]
**page** | **number** | | [optional] [default to undefined]
**size** | **number** | | [optional] [default to undefined]
**totalElements** | **number** | | [optional] [default to undefined]
@@ -16,9 +16,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { PageResponseGroupStudyListItem } from './api';
+import { PageResponseGroupStudyListItemDto } from './api';
-const instance: PageResponseGroupStudyListItem = {
+const instance: PageResponseGroupStudyListItemDto = {
content,
page,
size,
diff --git a/src/api/openapi/docs/PageResponseMyGroupStudyApplyListItem.md b/src/api/openapi/docs/PageResponseMyGroupStudyApplyListItemDto.md
similarity index 72%
rename from src/api/openapi/docs/PageResponseMyGroupStudyApplyListItem.md
rename to src/api/openapi/docs/PageResponseMyGroupStudyApplyListItemDto.md
index 0ca076e3..fa6c8a73 100644
--- a/src/api/openapi/docs/PageResponseMyGroupStudyApplyListItem.md
+++ b/src/api/openapi/docs/PageResponseMyGroupStudyApplyListItemDto.md
@@ -1,11 +1,11 @@
-# PageResponseMyGroupStudyApplyListItem
+# PageResponseMyGroupStudyApplyListItemDto
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**content** | [**Array<MyGroupStudyApplyListItem>**](MyGroupStudyApplyListItem.md) | | [optional] [default to undefined]
+**content** | [**Array<MyGroupStudyApplyListItemDto>**](MyGroupStudyApplyListItemDto.md) | | [optional] [default to undefined]
**page** | **number** | | [optional] [default to undefined]
**size** | **number** | | [optional] [default to undefined]
**totalElements** | **number** | | [optional] [default to undefined]
@@ -16,9 +16,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { PageResponseMyGroupStudyApplyListItem } from './api';
+import { PageResponseMyGroupStudyApplyListItemDto } from './api';
-const instance: PageResponseMyGroupStudyApplyListItem = {
+const instance: PageResponseMyGroupStudyApplyListItemDto = {
content,
page,
size,
diff --git a/src/api/openapi/docs/ParticipatingStudyInfo.md b/src/api/openapi/docs/ParticipatingStudyInfo.md
index 33caf4b8..4f32010f 100644
--- a/src/api/openapi/docs/ParticipatingStudyInfo.md
+++ b/src/api/openapi/docs/ParticipatingStudyInfo.md
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**studyId** | **number** | 스터디 ID. 그룹스터디 ID 혹은 1대1 스터디 ID. type에 따라서 종류가 달라진다 | [optional] [default to undefined]
-**thumbnail** | [**Image**](Image.md) | 섬네일 이미지 | [optional] [default to undefined]
+**thumbnail** | [**ImageDto**](ImageDto.md) | 섬네일 이미지 | [optional] [default to undefined]
**title** | **string** | 스터디 제목 - 일대일 스터디인 경우 null | [optional] [default to undefined]
**maxMembersCount** | **number** | 참여 가능한 최대 회원 수 | [optional] [default to undefined]
**participantsCount** | **number** | 참여한 회원의 수 | [optional] [default to undefined]
diff --git a/src/api/openapi/docs/PaymentData.md b/src/api/openapi/docs/PaymentData.md
new file mode 100644
index 00000000..4db1d3be
--- /dev/null
+++ b/src/api/openapi/docs/PaymentData.md
@@ -0,0 +1,36 @@
+# PaymentData
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**paymentKey** | **string** | | [optional] [default to undefined]
+**orderId** | **string** | | [optional] [default to undefined]
+**status** | **string** | | [optional] [default to undefined]
+**method** | **string** | | [optional] [default to undefined]
+**totalAmount** | **number** | | [optional] [default to undefined]
+**balanceAmount** | **number** | | [optional] [default to undefined]
+**approvedAt** | **string** | | [optional] [default to undefined]
+**secret** | **string** | | [optional] [default to undefined]
+**cancels** | [**Array<CancelData>**](CancelData.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { PaymentData } from './api';
+
+const instance: PaymentData = {
+ paymentKey,
+ orderId,
+ status,
+ method,
+ totalAmount,
+ balanceAmount,
+ approvedAt,
+ secret,
+ cancels,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PaymentUserApi.md b/src/api/openapi/docs/PaymentUserApi.md
index 5ca608be..4c1d2638 100644
--- a/src/api/openapi/docs/PaymentUserApi.md
+++ b/src/api/openapi/docs/PaymentUserApi.md
@@ -68,7 +68,7 @@ const { status, data } = await apiInstance.cancelPayment(
# **confirmTossPayment**
> StudyPaymentDetailResponseSchema confirmTossPayment(tossPaymentConfirmRequest)
-작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태가 DONE 인지 - 모든 검증이 통과되면 결제 상태를 SUCCESS 로 변경합니다. - 이미 SUCCESS 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다.
+작성일자: 2025-12-11 작성자: 이도현 수정일자: 2026-01-08 --- ## Description - 토스 결제창에서 사용자가 결제를 완료한 뒤, 클라이언트가 서버로 결제 검증을 요청하는 API입니다. - 서버는 다음을 검증합니다. - 결제 요청을 생성한 회원과 현재 토큰의 회원이 동일한지 - 서버에 저장된 orderId, amount 와 클라이언트/토스에서 전달된 값이 일치하는지 - 토스 PG 응답 상태 확인 - **즉시 결제 (카드, 간편결제 등)**: 토스 응답 상태가 `DONE`이면 결제 상태를 `SUCCESS`로 변경합니다. - **가상계좌 결제**: 토스 응답 상태가 `WAITING_FOR_DEPOSIT`이면 결제 상태를 `WAITING_FOR_DEPOSIT`으로 변경하고, 가상계좌 정보를 저장합니다. - 가상계좌 입금 완료 시 Toss Webhook을 통해 `SUCCESS`로 상태가 변경됩니다. - 이미 `SUCCESS` 또는 `WAITING_FOR_DEPOSIT` 상태인 결제에 대해 다시 호출되면, 재검증 없이 현재 결제 정보를 그대로 반환합니다. --- ## 결제 상태 (PaymentStatus) | 상태 | 설명 | |-----------------------|------------------------------------------------| | REQUESTED | 결제 요청됨 (결제창 진입 전) | | PENDING | 결제 진행 중 | | WAITING_FOR_DEPOSIT | 가상계좌 입금 대기 중 | | SUCCESS | 결제 완료 | | FAILED | 결제 실패 | | CANCELED | 결제 취소 | --- ## Request Body (TossPaymentConfirmRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |-----------|--------|------------------------------------|------|-------------------------------| | paymentId | number | 서버에서 생성한 결제 ID | Y | 123 | | orderId | string | 토스 결제의 orderId (tossOrderId) | Y | \"ZTO-STUDY-10-1-XYZ123\" | | amount | number | 결제 금액 | Y | 99000 | | paymentKey| string | 토스 paymentKey | Y | \"pay_20251211_abcdef123456\" | --- ## Response (StudyPaymentDetailResponse) - 결제 상세 정보 전체를 반환하며, 마이페이지 상세 조회와 동일한 필드를 가집니다. - 가상계좌 결제인 경우 `virtualAccount` 필드에 가상계좌 정보가 포함됩니다. ### virtualAccount (가상계좌 정보, 가상계좌 결제 시에만 값이 있음) | 키 | 타입 | 설명 | |--------------|----------|-------------------------| | accountNumber| string | 가상계좌 번호 | | bankCode | string | 은행 코드 | | bankName | string | 은행 이름 | | customerName | string | 예금주명 | | dueDate | datetime | 입금 기한 | | expired | boolean | 만료 여부 |
### Example
@@ -201,7 +201,7 @@ const { status, data } = await apiInstance.getMyTransactions(
# **getMyTransactionsByGroupStudy**
> PageUserTransactionDetailResponseSchema getMyTransactionsByGroupStudy()
-작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
+작성일자: 2025-12-22 작성자: 이도현 --- ## Description - 특정 그룹스터디에 대한 해당 유저의 전체 결제/환불 히스토리를 조회합니다. - 리스트 화면에서 토글 클릭 시 호출되어 상세 거래 내역을 표시합니다. - 결과는 최신순으로 정렬됩니다. - PAYMENT_SUCCESS, PAYMENT_FAILED, PAYMENT_CANCELED, PAYMENT_WAITING_FOR_DEPOSIT, REFUND_COMPLETED, REFUND_FAILED, REFUND_REJECTED 기록만 조회합니다. --- ## Path Parameters | 키 | 타입 | 설명 | 필수 | 예시 | |--------------|--------|----------------------------------|------|----------------| | groupStudyId | Long | 그룹스터디 ID | Y | 10 | ## Query Parameters (Pageable) | 키 | 타입 | 설명 | 필수 | 예시 | |------|--------|----------------------------------|------|----------------| | page | number | 페이지 번호(0부터 시작) | N | 0 | | size | number | 페이지 크기 | N | 20 | --- ## Response (PageResponseDto) - `content`: 거래 히스토리 리스트 - `page`: 현재 페이지(1 기반) - `size`: 페이지 크기 - `totalElements`: 전체 개수
### Example
@@ -264,7 +264,7 @@ const { status, data } = await apiInstance.getMyTransactionsByGroupStudy(
# **preparePayment**
> StudyPaymentPrepareResponseSchema preparePayment(studyPaymentPrepareRequest)
-작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |-----------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
+작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 유료 스터디 결제를 진행하기 위해 결제 정보를 생성합니다. - 사용자는 이미 신청(PENDING/APPROVED)한 유료 스터디에 대해 결제 페이지로 진입할 때 이 API를 호출합니다. - 서버 기준 스터디 가격(`group_study.price`)과 클라이언트에서 전달한 금액이 다를 경우 결제 준비를 거부합니다. - 동일 회원이 동일 스터디에 대해 SUCCESS 상태 결제를 이미 보유한 경우 재결제를 허용하지 않습니다. --- ## Business Rule - 그룹스터디 조건 - 삭제된 스터디일 경우 결제 불가 - 스터디 상태가 `RECRUITING` 이 아닐 경우 결제 불가 - 무료 스터디(`price == null or 0`)는 결제 불가 - 신청 여부 - 회원이 해당 스터디에 `PENDING` 또는 `APPROVED` 상태로 신청한 기록이 없으면 결제 불가 - 결제 중복 방지 - 동일 회원/스터디 조합에 대해 SUCCESS 결제가 이미 존재하면 에러 --- ## Path Variable | 키 | 타입 | 위치 | 설명 | 필수 | 예시 | |--------------|--------|-------|---------------------|------|------| | groupStudyId | number | path | 결제 대상 스터디 ID | Y | 10 | --- ## Request Body (StudyPaymentPrepareRequest) | 키 | 타입 | 설명 | 필수 | 예시 | |--------|--------|--------------------------------------------------------------|------|-------| | amount | number | 클라이언트에서 인지한 결제 금액 (null 가능, 있을 경우 서버 금액과 일치 검증) | N | 99000 | --- ## Response (StudyPaymentPrepareResponse) | 키 | 타입 | 설명 | |---------------------------|---------|------------------------------------| | paymentId | number | 생성된 결제 ID | | paymentCode | string | 비즈니스용 결제 코드 (PAY-...) | | groupStudyId | number | 스터디 ID | | groupStudyTitle | string | 스터디 제목 | | groupStudyDescription | string | 스터디 설명 | | groupStudyImage | string | 스터디 이미지 | | memberId | number | 결제 회원 ID | | memberName | string | 결제 회원 이름(또는 프로필 이름) | | amount | number | 결제 금액 | | currency | string | 통화 (예: KRW) | | pgProvider | string | PG사 식별자 (예: TOSS) | | tossOrderId | string | 토스 payment orderId (유니크 값) |
### Example
@@ -313,7 +313,7 @@ const { status, data } = await apiInstance.preparePayment(
| Status code | Description | Response headers |
|-------------|-------------|------------------|
|**201** | 결제 준비 성공 | - |
-|**400** | 잘못된 요청 (금액 불일치, 무료 스터디, 모집중이 아닌 스터디 등) | - |
+|**400** | 잘못된 요청 (금액 불일치, 무료 스터디, 스터디 시작 후 결제 시도, 미신청 스터디 등) | - |
|**404** | 존재하지 않는 회원 요청 | - |
|**409** | 이미 결제 완료된 스터디 | - |
|**401** | Bearer Token is invalid or no bearer token | - |
diff --git a/src/api/openapi/docs/PeerReviewApi.md b/src/api/openapi/docs/PeerReviewApi.md
new file mode 100644
index 00000000..7718c0b6
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewApi.md
@@ -0,0 +1,231 @@
+# PeerReviewApi
+
+All URIs are relative to *https://test-api.zeroone.it.kr*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**createPeerReview**](#createpeerreview) | **POST** /api/v1/homeworks/{homeworkId}/peer-reviews | 피어리뷰 작성|
+|[**deletePeerReview**](#deletepeerreview) | **DELETE** /api/v1/peer-reviews/{peerReviewId} | 피어리뷰 삭제|
+|[**getPeerReviews**](#getpeerreviews) | **GET** /api/v1/homeworks/{homeworkId}/peer-reviews | 과제별 피어리뷰 목록 조회|
+|[**updatePeerReview**](#updatepeerreview) | **PUT** /api/v1/peer-reviews/{peerReviewId} | 피어리뷰 수정|
+
+# **createPeerReview**
+> PeerReviewCreationResponseSchema createPeerReview(peerReviewCreateRequest)
+
+과제에 대한 피어리뷰(댓글)를 작성합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 작성 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID - RequestBody: PeerReviewCreateRequest (필수) - comment (필수): 피어리뷰 내용 (최대 3000자) **[Response]** - 201 Created: 피어리뷰 생성 성공
+
+### Example
+
+```typescript
+import {
+ PeerReviewApi,
+ Configuration,
+ PeerReviewCreateRequest
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new PeerReviewApi(configuration);
+
+let homeworkId: number; //과제 ID (default to undefined)
+let peerReviewCreateRequest: PeerReviewCreateRequest; //피어리뷰 작성 요청 정보
+
+const { status, data } = await apiInstance.createPeerReview(
+ homeworkId,
+ peerReviewCreateRequest
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **peerReviewCreateRequest** | **PeerReviewCreateRequest**| 피어리뷰 작성 요청 정보 | |
+| **homeworkId** | [**number**] | 과제 ID | defaults to undefined|
+
+
+### Return type
+
+**PeerReviewCreationResponseSchema**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**201** | 피어리뷰 작성 성공 | - |
+|**400** | 잘못된 요청 (validation 실패) | - |
+|**404** | 리소스를 찾을 수 없음 | - |
+|**409** | Conflict | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **deletePeerReview**
+> NoContentResponse deletePeerReview()
+
+작성한 피어리뷰를 삭제합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 삭제 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID **[Response]** - 204 No Content: 삭제 성공
+
+### Example
+
+```typescript
+import {
+ PeerReviewApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new PeerReviewApi(configuration);
+
+let peerReviewId: number; //피어리뷰 ID (default to undefined)
+
+const { status, data } = await apiInstance.deletePeerReview(
+ peerReviewId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **peerReviewId** | [**number**] | 피어리뷰 ID | defaults to undefined|
+
+
+### Return type
+
+**NoContentResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*, application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | 피어리뷰 삭제 성공 | - |
+|**403** | 권한 없음 (본인 피어리뷰가 아님) | - |
+|**404** | 피어리뷰를 찾을 수 없음 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getPeerReviews**
+> PeerReviewListResponse getPeerReviews()
+
+특정 과제에 달린 모든 피어리뷰를 조회합니다. **[권한]** - 인증된 사용자만 접근 가능 - 그룹스터디 참가자만 조회 가능 **[Request]** - PathVariable: homeworkId (필수) - 과제 ID **[Response]** - 200 OK: 피어리뷰 목록 (작성일시 오름차순 정렬)
+
+### Example
+
+```typescript
+import {
+ PeerReviewApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new PeerReviewApi(configuration);
+
+let homeworkId: number; //과제 ID (default to undefined)
+
+const { status, data } = await apiInstance.getPeerReviews(
+ homeworkId
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **homeworkId** | [**number**] | 과제 ID | defaults to undefined|
+
+
+### Return type
+
+**PeerReviewListResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | 피어리뷰 목록 조회 성공 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **updatePeerReview**
+> NoContentResponse updatePeerReview(peerReviewUpdateRequest)
+
+작성한 피어리뷰를 수정합니다. **[권한]** - 인증된 사용자만 접근 가능 - 본인이 작성한 피어리뷰만 수정 가능 **[Request]** - PathVariable: peerReviewId (필수) - 피어리뷰 ID - RequestBody: PeerReviewUpdateRequest (필수) - comment (필수): 수정할 피어리뷰 내용 **[Response]** - 204 No Content: 피어리뷰 수정 성공
+
+### Example
+
+```typescript
+import {
+ PeerReviewApi,
+ Configuration,
+ PeerReviewUpdateRequest
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new PeerReviewApi(configuration);
+
+let peerReviewId: number; //피어리뷰 ID (default to undefined)
+let peerReviewUpdateRequest: PeerReviewUpdateRequest; //피어리뷰 수정 요청 정보
+
+const { status, data } = await apiInstance.updatePeerReview(
+ peerReviewId,
+ peerReviewUpdateRequest
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **peerReviewUpdateRequest** | **PeerReviewUpdateRequest**| 피어리뷰 수정 요청 정보 | |
+| **peerReviewId** | [**number**] | 피어리뷰 ID | defaults to undefined|
+
+
+### Return type
+
+**NoContentResponse**
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | 피어리뷰 수정 성공 | - |
+|**400** | 잘못된 요청 (validation 실패) | - |
+|**403** | 권한 없음 (본인 피어리뷰가 아님) | - |
+|**404** | 피어리뷰를 찾을 수 없음 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/src/api/openapi/docs/PeerReviewCreateRequest.md b/src/api/openapi/docs/PeerReviewCreateRequest.md
new file mode 100644
index 00000000..edd2059b
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewCreateRequest.md
@@ -0,0 +1,22 @@
+# PeerReviewCreateRequest
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**parentId** | **number** | Parent Peer Review ID - null if root | [optional] [default to undefined]
+**comment** | **string** | Peer review comment | [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewCreateRequest } from './api';
+
+const instance: PeerReviewCreateRequest = {
+ parentId,
+ comment,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PeerReviewCreationResponse.md b/src/api/openapi/docs/PeerReviewCreationResponse.md
new file mode 100644
index 00000000..5e6a7a30
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewCreationResponse.md
@@ -0,0 +1,20 @@
+# PeerReviewCreationResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**generatedPeerReviewId** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewCreationResponse } from './api';
+
+const instance: PeerReviewCreationResponse = {
+ generatedPeerReviewId,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PeerReviewCreationResponseSchema.md b/src/api/openapi/docs/PeerReviewCreationResponseSchema.md
new file mode 100644
index 00000000..56d800b8
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewCreationResponseSchema.md
@@ -0,0 +1,26 @@
+# PeerReviewCreationResponseSchema
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**PeerReviewCreationResponse**](PeerReviewCreationResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewCreationResponseSchema } from './api';
+
+const instance: PeerReviewCreationResponseSchema = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PeerReviewListResponse.md b/src/api/openapi/docs/PeerReviewListResponse.md
new file mode 100644
index 00000000..dbaeafd4
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewListResponse.md
@@ -0,0 +1,26 @@
+# PeerReviewListResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**statusCode** | **number** | Status Code | [default to undefined]
+**timestamp** | **string** | Timestamp | [default to undefined]
+**content** | [**Array<PeerReviewResponse>**](PeerReviewResponse.md) | Content | [optional] [default to undefined]
+**message** | **string** | Message | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewListResponse } from './api';
+
+const instance: PeerReviewListResponse = {
+ statusCode,
+ timestamp,
+ content,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PeerReviewResponse.md b/src/api/openapi/docs/PeerReviewResponse.md
new file mode 100644
index 00000000..21b0db98
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewResponse.md
@@ -0,0 +1,36 @@
+# PeerReviewResponse
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**peerReviewId** | **number** | | [optional] [default to undefined]
+**homeworkId** | **number** | | [optional] [default to undefined]
+**reviewerId** | **number** | | [optional] [default to undefined]
+**reviewerNickname** | **string** | | [optional] [default to undefined]
+**reviewerProfileImage** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
+**comment** | **string** | | [optional] [default to undefined]
+**createdAt** | **string** | | [optional] [default to undefined]
+**updatedAt** | **string** | | [optional] [default to undefined]
+**updated** | **boolean** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewResponse } from './api';
+
+const instance: PeerReviewResponse = {
+ peerReviewId,
+ homeworkId,
+ reviewerId,
+ reviewerNickname,
+ reviewerProfileImage,
+ comment,
+ createdAt,
+ updatedAt,
+ updated,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/PeerReviewUpdateRequest.md b/src/api/openapi/docs/PeerReviewUpdateRequest.md
new file mode 100644
index 00000000..a33ec53e
--- /dev/null
+++ b/src/api/openapi/docs/PeerReviewUpdateRequest.md
@@ -0,0 +1,20 @@
+# PeerReviewUpdateRequest
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**comment** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { PeerReviewUpdateRequest } from './api';
+
+const instance: PeerReviewUpdateRequest = {
+ comment,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/ResizedImage.md b/src/api/openapi/docs/ResizedImageDto.md
similarity index 87%
rename from src/api/openapi/docs/ResizedImage.md
rename to src/api/openapi/docs/ResizedImageDto.md
index dcfda30e..c82dc9f4 100644
--- a/src/api/openapi/docs/ResizedImage.md
+++ b/src/api/openapi/docs/ResizedImageDto.md
@@ -1,4 +1,4 @@
-# ResizedImage
+# ResizedImageDto
## Properties
@@ -12,9 +12,9 @@ Name | Type | Description | Notes
## Example
```typescript
-import { ResizedImage } from './api';
+import { ResizedImageDto } from './api';
-const instance: ResizedImage = {
+const instance: ResizedImageDto = {
resizedImageId,
resizedImageUrl,
imageSizeType,
diff --git a/src/api/openapi/docs/SettlementAccountApi.md b/src/api/openapi/docs/SettlementAccountApi.md
index 28a9157b..05d8081f 100644
--- a/src/api/openapi/docs/SettlementAccountApi.md
+++ b/src/api/openapi/docs/SettlementAccountApi.md
@@ -10,7 +10,7 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|[**update**](#update) | **PUT** /api/v1/mypage/settlement-account | 정산 계좌 수정|
# **_delete**
-> BaseResponse _delete()
+> BaseResponseVoid _delete()
작성일자: 2025-12-11 작성자: 이도현 --- ## Description - 로그인한 회원의 정산 계좌 정보를 삭제합니다. - 삭제 후 정산 계좌는 조회할 수 없습니다. --- ## Response - 성공 시 응답 바디 없이 204 No Content를 반환합니다.
@@ -34,7 +34,7 @@ This endpoint does not have any parameters.
### Return type
-**BaseResponse**
+**BaseResponseVoid**
### Authorization
diff --git a/src/api/openapi/docs/StudyPaymentDetailResponse.md b/src/api/openapi/docs/StudyPaymentDetailResponse.md
index cb86439d..3ae640f5 100644
--- a/src/api/openapi/docs/StudyPaymentDetailResponse.md
+++ b/src/api/openapi/docs/StudyPaymentDetailResponse.md
@@ -21,6 +21,7 @@ Name | Type | Description | Notes
**tossOrderId** | **string** | | [optional] [default to undefined]
**tossPaymentKey** | **string** | | [optional] [default to undefined]
**receiptUrl** | **string** | | [optional] [default to undefined]
+**virtualAccount** | [**VirtualAccountInfo**](VirtualAccountInfo.md) | | [optional] [default to undefined]
**createdAt** | **string** | | [optional] [default to undefined]
**paidAt** | **string** | | [optional] [default to undefined]
**canceledAt** | **string** | | [optional] [default to undefined]
@@ -48,6 +49,7 @@ const instance: StudyPaymentDetailResponse = {
tossOrderId,
tossPaymentKey,
receiptUrl,
+ virtualAccount,
createdAt,
paidAt,
canceledAt,
diff --git a/src/api/openapi/docs/StudyPaymentPrepareResponse.md b/src/api/openapi/docs/StudyPaymentPrepareResponse.md
index 8ce720e9..91b60d53 100644
--- a/src/api/openapi/docs/StudyPaymentPrepareResponse.md
+++ b/src/api/openapi/docs/StudyPaymentPrepareResponse.md
@@ -9,8 +9,10 @@ Name | Type | Description | Notes
**paymentCode** | **string** | | [optional] [default to undefined]
**groupStudyId** | **number** | | [optional] [default to undefined]
**groupStudyTitle** | **string** | | [optional] [default to undefined]
+**groupStudyDescription** | **string** | | [optional] [default to undefined]
**memberId** | **number** | | [optional] [default to undefined]
**memberName** | **string** | | [optional] [default to undefined]
+**groupStudyImage** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
**amount** | **number** | | [optional] [default to undefined]
**currency** | **string** | | [optional] [default to undefined]
**pgProvider** | **string** | | [optional] [default to undefined]
@@ -26,8 +28,10 @@ const instance: StudyPaymentPrepareResponse = {
paymentCode,
groupStudyId,
groupStudyTitle,
+ groupStudyDescription,
memberId,
memberName,
+ groupStudyImage,
amount,
currency,
pgProvider,
diff --git a/src/api/openapi/docs/StudyReservationMember.md b/src/api/openapi/docs/StudyReservationMemberDto.md
similarity index 73%
rename from src/api/openapi/docs/StudyReservationMember.md
rename to src/api/openapi/docs/StudyReservationMemberDto.md
index ee3d578f..9083db86 100644
--- a/src/api/openapi/docs/StudyReservationMember.md
+++ b/src/api/openapi/docs/StudyReservationMemberDto.md
@@ -1,4 +1,4 @@
-# StudyReservationMember
+# StudyReservationMemberDto
## Properties
@@ -7,15 +7,15 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**memberId** | **number** | | [optional] [default to undefined]
**memberNickname** | **string** | | [optional] [default to undefined]
-**profileImage** | [**Image**](Image.md) | | [optional] [default to undefined]
+**profileImage** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
**simpleIntroduction** | **string** | | [optional] [default to undefined]
## Example
```typescript
-import { StudyReservationMember } from './api';
+import { StudyReservationMemberDto } from './api';
-const instance: StudyReservationMember = {
+const instance: StudyReservationMemberDto = {
memberId,
memberNickname,
profileImage,
diff --git a/src/api/openapi/docs/StudyReservationResponseContent.md b/src/api/openapi/docs/StudyReservationResponseContent.md
index d7db5fa4..1e6c3e00 100644
--- a/src/api/openapi/docs/StudyReservationResponseContent.md
+++ b/src/api/openapi/docs/StudyReservationResponseContent.md
@@ -5,7 +5,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**members** | [**CursorResponseDtoStudyReservationMember**](CursorResponseDtoStudyReservationMember.md) | | [optional] [default to undefined]
+**members** | [**CursorResponseDtoStudyReservationMemberDto**](CursorResponseDtoStudyReservationMemberDto.md) | | [optional] [default to undefined]
**totalMemberCount** | **number** | | [optional] [default to undefined]
## Example
diff --git a/src/api/openapi/docs/StudySettlementDetailResponse.md b/src/api/openapi/docs/StudySettlementDetailResponse.md
index 107c19ed..1015f2de 100644
--- a/src/api/openapi/docs/StudySettlementDetailResponse.md
+++ b/src/api/openapi/docs/StudySettlementDetailResponse.md
@@ -17,6 +17,7 @@ Name | Type | Description | Notes
**taxRate** | **number** | | [optional] [default to undefined]
**settlementAmount** | **number** | | [optional] [default to undefined]
**scheduledAt** | **string** | | [optional] [default to undefined]
+**approvedAt** | **string** | | [optional] [default to undefined]
**settledAt** | **string** | | [optional] [default to undefined]
**status** | **string** | | [optional] [default to undefined]
@@ -38,6 +39,7 @@ const instance: StudySettlementDetailResponse = {
taxRate,
settlementAmount,
scheduledAt,
+ approvedAt,
settledAt,
status,
};
diff --git a/src/api/openapi/docs/TemplateDto.md b/src/api/openapi/docs/TemplateDto.md
new file mode 100644
index 00000000..b9dee20f
--- /dev/null
+++ b/src/api/openapi/docs/TemplateDto.md
@@ -0,0 +1,58 @@
+# TemplateDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**senderKey** | **string** | | [optional] [default to undefined]
+**templtCode** | **string** | | [optional] [default to undefined]
+**templtName** | **string** | | [optional] [default to undefined]
+**templtContent** | **string** | | [optional] [default to undefined]
+**templateType** | **string** | | [optional] [default to undefined]
+**templateEmType** | **string** | | [optional] [default to undefined]
+**templtTitle** | **string** | | [optional] [default to undefined]
+**templtSubtitle** | **string** | | [optional] [default to undefined]
+**templtImageName** | **string** | | [optional] [default to undefined]
+**templtImageUrl** | **string** | | [optional] [default to undefined]
+**status** | **string** | | [optional] [default to undefined]
+**inspStatus** | **string** | | [optional] [default to undefined]
+**cdate** | **string** | | [optional] [default to undefined]
+**block** | **string** | | [optional] [default to undefined]
+**dormant** | **string** | | [optional] [default to undefined]
+**securityFlag** | **string** | | [optional] [default to undefined]
+**templateAdvert** | **string** | | [optional] [default to undefined]
+**templateExtra** | **string** | | [optional] [default to undefined]
+**buttons** | [**Array<ButtonDto>**](ButtonDto.md) | | [optional] [default to undefined]
+**comments** | **Array<object>** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TemplateDto } from './api';
+
+const instance: TemplateDto = {
+ senderKey,
+ templtCode,
+ templtName,
+ templtContent,
+ templateType,
+ templateEmType,
+ templtTitle,
+ templtSubtitle,
+ templtImageName,
+ templtImageUrl,
+ status,
+ inspStatus,
+ cdate,
+ block,
+ dormant,
+ securityFlag,
+ templateAdvert,
+ templateExtra,
+ buttons,
+ comments,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/TemplateInfo.md b/src/api/openapi/docs/TemplateInfo.md
new file mode 100644
index 00000000..c02ee00c
--- /dev/null
+++ b/src/api/openapi/docs/TemplateInfo.md
@@ -0,0 +1,26 @@
+# TemplateInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**rEG** | **number** | | [optional] [default to undefined]
+**rEQ** | **number** | | [optional] [default to undefined]
+**aPR** | **number** | | [optional] [default to undefined]
+**rEJ** | **number** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TemplateInfo } from './api';
+
+const instance: TemplateInfo = {
+ rEG,
+ rEQ,
+ aPR,
+ rEJ,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/TemplatesSyncStatusDto.md b/src/api/openapi/docs/TemplatesSyncStatusDto.md
new file mode 100644
index 00000000..81241bde
--- /dev/null
+++ b/src/api/openapi/docs/TemplatesSyncStatusDto.md
@@ -0,0 +1,34 @@
+# TemplatesSyncStatusDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**isSynced** | **boolean** | | [optional] [default to undefined]
+**syncStatus** | **string** | | [optional] [default to undefined]
+**cachedTemplates** | [**KakaoTemplateListResponseDto**](KakaoTemplateListResponseDto.md) | | [optional] [default to undefined]
+**refreshedTemplates** | [**KakaoTemplateListResponseDto**](KakaoTemplateListResponseDto.md) | | [optional] [default to undefined]
+**lastSyncTime** | **string** | | [optional] [default to undefined]
+**cachedCount** | **number** | | [optional] [default to undefined]
+**refreshedCount** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TemplatesSyncStatusDto } from './api';
+
+const instance: TemplatesSyncStatusDto = {
+ isSynced,
+ syncStatus,
+ cachedTemplates,
+ refreshedTemplates,
+ lastSyncTime,
+ cachedCount,
+ refreshedCount,
+ message,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/MissionTaskDto.md b/src/api/openapi/docs/TemporalToken.md
similarity index 64%
rename from src/api/openapi/docs/MissionTaskDto.md
rename to src/api/openapi/docs/TemporalToken.md
index c8542cc1..5a3b54c2 100644
--- a/src/api/openapi/docs/MissionTaskDto.md
+++ b/src/api/openapi/docs/TemporalToken.md
@@ -1,19 +1,19 @@
-# MissionTaskDto
+# TemporalToken
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**task** | **string** | | [optional] [default to undefined]
+**accessToken** | **string** | | [optional] [default to undefined]
## Example
```typescript
-import { MissionTaskDto } from './api';
+import { TemporalToken } from './api';
-const instance: MissionTaskDto = {
- task,
+const instance: TemporalToken = {
+ accessToken,
};
```
diff --git a/src/api/openapi/docs/TestAlimtalkResponseSchema.md b/src/api/openapi/docs/TestAlimtalkResponseSchema.md
new file mode 100644
index 00000000..9cd13013
--- /dev/null
+++ b/src/api/openapi/docs/TestAlimtalkResponseSchema.md
@@ -0,0 +1,24 @@
+# TestAlimtalkResponseSchema
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **number** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**info** | [**Info**](Info.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TestAlimtalkResponseSchema } from './api';
+
+const instance: TestAlimtalkResponseSchema = {
+ code,
+ message,
+ info,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/TestAlimtalkSendRequestDto.md b/src/api/openapi/docs/TestAlimtalkSendRequestDto.md
new file mode 100644
index 00000000..c2f06042
--- /dev/null
+++ b/src/api/openapi/docs/TestAlimtalkSendRequestDto.md
@@ -0,0 +1,30 @@
+# TestAlimtalkSendRequestDto
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**phoneNumber** | **string** | | [optional] [default to undefined]
+**receiverName** | **string** | | [optional] [default to undefined]
+**tplCode** | **string** | | [optional] [default to undefined]
+**subject** | **string** | | [optional] [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**fallbackMessage** | **string** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TestAlimtalkSendRequestDto } from './api';
+
+const instance: TestAlimtalkSendRequestDto = {
+ phoneNumber,
+ receiverName,
+ tplCode,
+ subject,
+ message,
+ fallbackMessage,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/ThreadCommentResponseContent.md b/src/api/openapi/docs/ThreadCommentResponseContent.md
index 963df4f7..02dfadfd 100644
--- a/src/api/openapi/docs/ThreadCommentResponseContent.md
+++ b/src/api/openapi/docs/ThreadCommentResponseContent.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**threadId** | **number** | | [optional] [default to undefined]
**authorId** | **number** | | [optional] [default to undefined]
**authorName** | **string** | | [optional] [default to undefined]
-**image** | [**Image**](Image.md) | | [optional] [default to undefined]
+**image** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
**content** | **string** | | [optional] [default to undefined]
**isLeader** | **boolean** | | [optional] [default to undefined]
**likesCount** | **number** | | [optional] [default to undefined]
diff --git a/src/api/openapi/docs/ThreadSummaryResponseContent.md b/src/api/openapi/docs/ThreadSummaryResponseContent.md
index 4ba2d38f..84c318b8 100644
--- a/src/api/openapi/docs/ThreadSummaryResponseContent.md
+++ b/src/api/openapi/docs/ThreadSummaryResponseContent.md
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
**groupStudyId** | **number** | | [optional] [default to undefined]
**authorId** | **number** | | [optional] [default to undefined]
**authorName** | **string** | | [optional] [default to undefined]
-**image** | [**Image**](Image.md) | | [optional] [default to undefined]
+**image** | [**ImageDto**](ImageDto.md) | | [optional] [default to undefined]
**content** | **string** | | [optional] [default to undefined]
**isLeader** | **boolean** | | [optional] [default to undefined]
**likesCount** | **number** | | [optional] [default to undefined]
diff --git a/src/api/openapi/docs/TokenAPIApi.md b/src/api/openapi/docs/TokenAPIApi.md
index 30847308..a5b37494 100644
--- a/src/api/openapi/docs/TokenAPIApi.md
+++ b/src/api/openapi/docs/TokenAPIApi.md
@@ -7,7 +7,7 @@ All URIs are relative to *https://test-api.zeroone.it.kr*
|[**generateToken**](#generatetoken) | **GET** /api/v1/tokens/token | |
# **generateToken**
-> BaseResponse generateToken()
+> BaseResponseTemporalToken generateToken()
### Example
@@ -40,7 +40,7 @@ const { status, data } = await apiInstance.generateToken(
### Return type
-**BaseResponse**
+**BaseResponseTemporalToken**
### Authorization
diff --git a/src/api/openapi/docs/TossWebhookApi.md b/src/api/openapi/docs/TossWebhookApi.md
new file mode 100644
index 00000000..8a8f949a
--- /dev/null
+++ b/src/api/openapi/docs/TossWebhookApi.md
@@ -0,0 +1,60 @@
+# TossWebhookApi
+
+All URIs are relative to *https://test-api.zeroone.it.kr*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**handleTossWebhook**](#handletosswebhook) | **POST** /api/v1/webhooks/toss | Toss Webhook 수신|
+
+# **handleTossWebhook**
+> handleTossWebhook(tossWebhookPayload)
+
+작성일자: 2026-01-08 작성자: 이도현 --- ## Description - Toss Payments에서 결제/환불 상태 변경 시 호출되는 Webhook 엔드포인트입니다. - **인증 없이 호출**되며, `secret` 값으로 요청의 유효성을 검증합니다. - 멱등키(idempotencyKey)를 사용하여 중복 웹훅 이벤트를 방지합니다. --- ## 지원 이벤트 타입 | 이벤트 타입 | 설명 | |--------------------------|--------------------------------| | PAYMENT_STATUS_CHANGED | 결제 상태 변경 (입금 완료 등) | --- ## 가상계좌 입금 완료 처리 - 가상계좌 결제 시 `WAITING_FOR_DEPOSIT` 상태로 대기합니다. - 사용자가 입금을 완료하면 Toss에서 `PAYMENT_STATUS_CHANGED` 이벤트를 전송합니다. - Webhook 수신 시 `status: \"DONE\"`이면 결제 상태를 `SUCCESS`로 변경합니다. - 입금 기한 만료 시 `status: \"EXPIRED\"`로 전송되며, 결제 상태를 `FAILED`로 변경합니다. --- ## 상태 전이 규칙 | 현재 상태 | 전이 가능한 상태 | |-----------------------|---------------------------------------------------| | REQUESTED | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | PENDING | SUCCESS, WAITING_FOR_DEPOSIT, CANCELED, FAILED | | WAITING_FOR_DEPOSIT | SUCCESS, CANCELED, FAILED (입금완료/취소/만료) | | SUCCESS | CANCELED (환불 시) | | CANCELED | (종료 상태) | | FAILED | (종료 상태) | --- ## Request Body (TossWebhookPayload) | 키 | 타입 | 설명 | |-----------|----------|----------------------------------------| | eventType | string | 이벤트 타입 (PAYMENT_STATUS_CHANGED) | | createdAt | datetime | 이벤트 발생 시각 (ISO 8601) | | data | object | 결제 정보 | ### data (PaymentData) | 키 | 타입 | 설명 | |--------------|--------|-------------------------------------------| | paymentKey | string | Toss 결제 키 | | orderId | string | 주문 ID | | status | string | 결제 상태 (DONE, EXPIRED, CANCELED 등) | | method | string | 결제 수단 | | totalAmount | number | 총 결제 금액 | | secret | string | 검증용 secret | | cancels | array | 취소 정보 배열 (환불 시) | --- ## Response - 항상 200 OK를 반환합니다. - 중복 웹훅 이벤트는 자동으로 무시됩니다.
+
+### Example
+
+```typescript
+import {
+ TossWebhookApi,
+ Configuration,
+ TossWebhookPayload
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new TossWebhookApi(configuration);
+
+let tossWebhookPayload: TossWebhookPayload; //Toss Webhook 페이로드
+
+const { status, data } = await apiInstance.handleTossWebhook(
+ tossWebhookPayload
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **tossWebhookPayload** | **TossWebhookPayload**| Toss Webhook 페이로드 | |
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[bearer](../README.md#bearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Webhook 수신 성공 | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/src/api/openapi/docs/TossWebhookPayload.md b/src/api/openapi/docs/TossWebhookPayload.md
new file mode 100644
index 00000000..b653e662
--- /dev/null
+++ b/src/api/openapi/docs/TossWebhookPayload.md
@@ -0,0 +1,28 @@
+# TossWebhookPayload
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**eventType** | **string** | | [optional] [default to undefined]
+**createdAt** | **string** | | [optional] [default to undefined]
+**data** | [**PaymentData**](PaymentData.md) | | [optional] [default to undefined]
+**paymentStatusChanged** | **boolean** | | [optional] [default to undefined]
+**latestCancel** | [**CancelData**](CancelData.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { TossWebhookPayload } from './api';
+
+const instance: TossWebhookPayload = {
+ eventType,
+ createdAt,
+ data,
+ paymentStatusChanged,
+ latestCancel,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/docs/UpdateGroupStudyMemberProgressRequest.md b/src/api/openapi/docs/UpdateGroupStudyMemberDiscretionRequest.md
similarity index 67%
rename from src/api/openapi/docs/UpdateGroupStudyMemberProgressRequest.md
rename to src/api/openapi/docs/UpdateGroupStudyMemberDiscretionRequest.md
index 0987eb69..26bd15a3 100644
--- a/src/api/openapi/docs/UpdateGroupStudyMemberProgressRequest.md
+++ b/src/api/openapi/docs/UpdateGroupStudyMemberDiscretionRequest.md
@@ -1,4 +1,4 @@
-# UpdateGroupStudyMemberProgressRequest
+# UpdateGroupStudyMemberDiscretionRequest
## Properties
@@ -6,17 +6,15 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**targetMemberId** | **number** | | [default to undefined]
-**gradeId** | **number** | | [default to undefined]
**reason** | **string** | | [optional] [default to undefined]
## Example
```typescript
-import { UpdateGroupStudyMemberProgressRequest } from './api';
+import { UpdateGroupStudyMemberDiscretionRequest } from './api';
-const instance: UpdateGroupStudyMemberProgressRequest = {
+const instance: UpdateGroupStudyMemberDiscretionRequest = {
targetMemberId,
- gradeId,
reason,
};
```
diff --git a/src/api/openapi/docs/VirtualAccountInfo.md b/src/api/openapi/docs/VirtualAccountInfo.md
new file mode 100644
index 00000000..1ed41f1b
--- /dev/null
+++ b/src/api/openapi/docs/VirtualAccountInfo.md
@@ -0,0 +1,30 @@
+# VirtualAccountInfo
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountNumber** | **string** | | [optional] [default to undefined]
+**bankCode** | **string** | | [optional] [default to undefined]
+**bankName** | **string** | | [optional] [default to undefined]
+**customerName** | **string** | | [optional] [default to undefined]
+**dueDate** | **string** | | [optional] [default to undefined]
+**expired** | **boolean** | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { VirtualAccountInfo } from './api';
+
+const instance: VirtualAccountInfo = {
+ accountNumber,
+ bankCode,
+ bankName,
+ customerName,
+ dueDate,
+ expired,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/src/api/openapi/models/admin-transaction-list-response.ts b/src/api/openapi/models/admin-transaction-list-response.ts
index 3d8165ec..165efbf9 100644
--- a/src/api/openapi/models/admin-transaction-list-response.ts
+++ b/src/api/openapi/models/admin-transaction-list-response.ts
@@ -44,6 +44,7 @@ export const AdminTransactionListResponseGroupStudyStatusEnum = {
export type AdminTransactionListResponseGroupStudyStatusEnum = typeof AdminTransactionListResponseGroupStudyStatusEnum[keyof typeof AdminTransactionListResponseGroupStudyStatusEnum];
export const AdminTransactionListResponsePaymentHistoryTypeEnum = {
PaymentRequested: 'PAYMENT_REQUESTED',
+ PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT',
PaymentSuccess: 'PAYMENT_SUCCESS',
PaymentFailed: 'PAYMENT_FAILED',
PaymentCanceled: 'PAYMENT_CANCELED',
diff --git a/src/api/openapi/models/group-study-member-progress-info-response.ts b/src/api/openapi/models/alimtalk-heart-info-response-dto.ts
similarity index 57%
rename from src/api/openapi/models/group-study-member-progress-info-response.ts
rename to src/api/openapi/models/alimtalk-heart-info-response-dto.ts
index cdad8f10..8c601075 100644
--- a/src/api/openapi/models/group-study-member-progress-info-response.ts
+++ b/src/api/openapi/models/alimtalk-heart-info-response-dto.ts
@@ -15,10 +15,11 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyMemberProgressHistoryResponse } from './group-study-member-progress-history-response';
+import type { HeartInfo } from './heart-info';
-export interface GroupStudyMemberProgressInfoResponse {
- 'score'?: number;
- 'progressHistory'?: Array;
+export interface AlimtalkHeartInfoResponseDto {
+ 'code'?: number;
+ 'message'?: string;
+ 'list'?: HeartInfo;
}
diff --git a/src/api/openapi/models/group-study-member-progress-history-response.ts b/src/api/openapi/models/alimtalk-history-detail-response-dto.ts
similarity index 55%
rename from src/api/openapi/models/group-study-member-progress-history-response.ts
rename to src/api/openapi/models/alimtalk-history-detail-response-dto.ts
index 18e1c2bc..5eed044c 100644
--- a/src/api/openapi/models/group-study-member-progress-history-response.ts
+++ b/src/api/openapi/models/alimtalk-history-detail-response-dto.ts
@@ -15,12 +15,14 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyMemberProgressGradeResponse } from './group-study-member-progress-grade-response';
+import type { DetailItem } from './detail-item';
-export interface GroupStudyMemberProgressHistoryResponse {
- 'id'?: number;
- 'acquiredAt'?: string;
- 'grade'?: GroupStudyMemberProgressGradeResponse;
- 'reason'?: string;
+export interface AlimtalkHistoryDetailResponseDto {
+ 'code'?: number;
+ 'message'?: string;
+ 'list'?: Array;
+ 'currentPage'?: number;
+ 'totalPage'?: number;
+ 'totalCount'?: number;
}
diff --git a/src/api/openapi/models/alimtalk-history-list-response-dto.ts b/src/api/openapi/models/alimtalk-history-list-response-dto.ts
new file mode 100644
index 00000000..7ff90017
--- /dev/null
+++ b/src/api/openapi/models/alimtalk-history-list-response-dto.ts
@@ -0,0 +1,28 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { HistoryItem } from './history-item';
+
+export interface AlimtalkHistoryListResponseDto {
+ 'code'?: number;
+ 'message'?: string;
+ 'list'?: Array;
+ 'currentPage'?: number;
+ 'totalPage'?: number;
+ 'totalCount'?: number;
+}
+
diff --git a/src/api/openapi/models/base-response-granted-token-info.ts b/src/api/openapi/models/base-response-granted-token-info.ts
new file mode 100644
index 00000000..adfa320a
--- /dev/null
+++ b/src/api/openapi/models/base-response-granted-token-info.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GrantedTokenInfo } from './granted-token-info';
+
+export interface BaseResponseGrantedTokenInfo {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: GrantedTokenInfo;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-group-study-discretion-grade-response.ts b/src/api/openapi/models/base-response-group-study-discretion-grade-response.ts
new file mode 100644
index 00000000..7352c649
--- /dev/null
+++ b/src/api/openapi/models/base-response-group-study-discretion-grade-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GroupStudyDiscretionGradeResponse } from './group-study-discretion-grade-response';
+
+export interface BaseResponseGroupStudyDiscretionGradeResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: GroupStudyDiscretionGradeResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-group-study-members-response.ts b/src/api/openapi/models/base-response-group-study-members-response.ts
new file mode 100644
index 00000000..bc281457
--- /dev/null
+++ b/src/api/openapi/models/base-response-group-study-members-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GroupStudyMembersResponse } from './group-study-members-response';
+
+export interface BaseResponseGroupStudyMembersResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: GroupStudyMembersResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-homework-response-dto.ts b/src/api/openapi/models/base-response-homework-response-dto.ts
new file mode 100644
index 00000000..f1e0d8f9
--- /dev/null
+++ b/src/api/openapi/models/base-response-homework-response-dto.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { HomeworkResponseDto } from './homework-response-dto';
+
+export interface BaseResponseHomeworkResponseDto {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: HomeworkResponseDto;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-matching-request-response.ts b/src/api/openapi/models/base-response-matching-request-response.ts
new file mode 100644
index 00000000..80b8d89e
--- /dev/null
+++ b/src/api/openapi/models/base-response-matching-request-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { MatchingRequestResponse } from './matching-request-response';
+
+export interface BaseResponseMatchingRequestResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: MatchingRequestResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-member-account-history-response-dto.ts b/src/api/openapi/models/base-response-member-account-history-response-dto.ts
new file mode 100644
index 00000000..2a41b5a6
--- /dev/null
+++ b/src/api/openapi/models/base-response-member-account-history-response-dto.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { MemberAccountHistoryResponseDto } from './member-account-history-response-dto';
+
+export interface BaseResponseMemberAccountHistoryResponseDto {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: MemberAccountHistoryResponseDto;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-object.ts b/src/api/openapi/models/base-response-object.ts
new file mode 100644
index 00000000..a3accd0e
--- /dev/null
+++ b/src/api/openapi/models/base-response-object.ts
@@ -0,0 +1,35 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface BaseResponseObject {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: object;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-string.ts b/src/api/openapi/models/base-response-string.ts
new file mode 100644
index 00000000..f2d111f8
--- /dev/null
+++ b/src/api/openapi/models/base-response-string.ts
@@ -0,0 +1,35 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface BaseResponseString {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: string;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-study-space-is-participate-response.ts b/src/api/openapi/models/base-response-study-space-is-participate-response.ts
new file mode 100644
index 00000000..21a8a17e
--- /dev/null
+++ b/src/api/openapi/models/base-response-study-space-is-participate-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { StudySpaceIsParticipateResponse } from './study-space-is-participate-response';
+
+export interface BaseResponseStudySpaceIsParticipateResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: StudySpaceIsParticipateResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-temporal-token.ts b/src/api/openapi/models/base-response-temporal-token.ts
new file mode 100644
index 00000000..3cabcba3
--- /dev/null
+++ b/src/api/openapi/models/base-response-temporal-token.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { TemporalToken } from './temporal-token';
+
+export interface BaseResponseTemporalToken {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: TemporalToken;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/base-response-void.ts b/src/api/openapi/models/base-response-void.ts
new file mode 100644
index 00000000..ee722ea5
--- /dev/null
+++ b/src/api/openapi/models/base-response-void.ts
@@ -0,0 +1,35 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface BaseResponseVoid {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: object;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/button-dto.ts b/src/api/openapi/models/button-dto.ts
new file mode 100644
index 00000000..470525f2
--- /dev/null
+++ b/src/api/openapi/models/button-dto.ts
@@ -0,0 +1,27 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface ButtonDto {
+ 'ordering'?: string;
+ 'name'?: string;
+ 'linkType'?: string;
+ 'linkTypeName'?: string;
+ 'linkMo'?: string;
+ 'linkPc'?: string;
+ 'linkIos'?: string;
+ 'linkAnd'?: string;
+}
+
diff --git a/src/api/openapi/models/cancel-data.ts b/src/api/openapi/models/cancel-data.ts
new file mode 100644
index 00000000..a3d934f1
--- /dev/null
+++ b/src/api/openapi/models/cancel-data.ts
@@ -0,0 +1,25 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface CancelData {
+ 'transactionKey'?: string;
+ 'cancelReason'?: string;
+ 'cancelAmount'?: number;
+ 'refundableAmount'?: number;
+ 'canceledAt'?: string;
+ 'cancelStatus'?: string;
+}
+
diff --git a/src/api/openapi/models/change-hist-dto.ts b/src/api/openapi/models/change-hist-dto.ts
new file mode 100644
index 00000000..23c55fb9
--- /dev/null
+++ b/src/api/openapi/models/change-hist-dto.ts
@@ -0,0 +1,22 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface ChangeHistDto {
+ 'changedAt'?: string;
+ 'from'?: string;
+ 'to'?: string;
+}
+
diff --git a/src/api/openapi/models/cursor-response-dto-study-reservation-member.ts b/src/api/openapi/models/cursor-response-dto-study-reservation-member-dto.ts
similarity index 67%
rename from src/api/openapi/models/cursor-response-dto-study-reservation-member.ts
rename to src/api/openapi/models/cursor-response-dto-study-reservation-member-dto.ts
index 42a088d3..c20385a0 100644
--- a/src/api/openapi/models/cursor-response-dto-study-reservation-member.ts
+++ b/src/api/openapi/models/cursor-response-dto-study-reservation-member-dto.ts
@@ -15,10 +15,10 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { StudyReservationMember } from './study-reservation-member';
+import type { StudyReservationMemberDto } from './study-reservation-member-dto';
-export interface CursorResponseDtoStudyReservationMember {
- 'items'?: Array;
+export interface CursorResponseDtoStudyReservationMemberDto {
+ 'items'?: Array;
'nextCursor'?: number;
'hasNext'?: boolean;
}
diff --git a/src/api/openapi/models/detail-item.ts b/src/api/openapi/models/detail-item.ts
new file mode 100644
index 00000000..d2fe57c9
--- /dev/null
+++ b/src/api/openapi/models/detail-item.ts
@@ -0,0 +1,35 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface DetailItem {
+ 'msgid'?: string;
+ 'type'?: string;
+ 'sender'?: string;
+ 'phone'?: string;
+ 'status'?: string;
+ 'reqdate'?: string;
+ 'sentdate'?: string;
+ 'rsltdate'?: string;
+ 'reportdate'?: string;
+ 'rslt'?: string;
+ 'rslt_message'?: string;
+ 'message'?: string;
+ 'button_json'?: string;
+ 'tpl_code'?: string;
+ 'senderKey'?: string;
+ 'smid'?: string;
+}
+
diff --git a/src/api/openapi/models/evaluation-creation-response-dto.ts b/src/api/openapi/models/evaluation-creation-response-dto.ts
new file mode 100644
index 00000000..2add2cd0
--- /dev/null
+++ b/src/api/openapi/models/evaluation-creation-response-dto.ts
@@ -0,0 +1,20 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface EvaluationCreationResponseDto {
+ 'evaluationId'?: number;
+}
+
diff --git a/src/api/openapi/models/evaluation-creation-response-schema.ts b/src/api/openapi/models/evaluation-creation-response-schema.ts
new file mode 100644
index 00000000..bfd16714
--- /dev/null
+++ b/src/api/openapi/models/evaluation-creation-response-schema.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { EvaluationCreationResponseDto } from './evaluation-creation-response-dto';
+
+export interface EvaluationCreationResponseSchema {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: EvaluationCreationResponseDto;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/evaluation-detail-response-dto.ts b/src/api/openapi/models/evaluation-detail-response-dto.ts
new file mode 100644
index 00000000..0ca996ff
--- /dev/null
+++ b/src/api/openapi/models/evaluation-detail-response-dto.ts
@@ -0,0 +1,24 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface EvaluationDetailResponseDto {
+ 'evaluationId'?: number;
+ 'evaluationGradeCode'?: string;
+ 'evaluationGradeScore'?: number;
+ 'evaluationGradeLabel'?: string;
+ 'evaluationComment'?: string;
+}
+
diff --git a/src/api/openapi/models/evaluation-request.ts b/src/api/openapi/models/evaluation-request.ts
index e7a39456..9fefe0b7 100644
--- a/src/api/openapi/models/evaluation-request.ts
+++ b/src/api/openapi/models/evaluation-request.ts
@@ -15,22 +15,7 @@
export interface EvaluationRequest {
- 'grade': EvaluationRequestGradeEnum;
+ 'gradeCode': string;
'comment'?: string;
}
-export const EvaluationRequestGradeEnum = {
- APlus: 'A_PLUS',
- A: 'A',
- BPlus: 'B_PLUS',
- B: 'B',
- CPlus: 'C_PLUS',
- C: 'C',
- DPlus: 'D_PLUS',
- D: 'D',
- F: 'F'
-} as const;
-
-export type EvaluationRequestGradeEnum = typeof EvaluationRequestGradeEnum[keyof typeof EvaluationRequestGradeEnum];
-
-
diff --git a/src/api/openapi/models/evaluation-response-schema.ts b/src/api/openapi/models/evaluation-response-schema.ts
new file mode 100644
index 00000000..4ed7ea23
--- /dev/null
+++ b/src/api/openapi/models/evaluation-response-schema.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { EvaluationResponse } from './evaluation-response';
+
+export interface EvaluationResponseSchema {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: EvaluationResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/evaluation-response.ts b/src/api/openapi/models/evaluation-response.ts
new file mode 100644
index 00000000..051962a3
--- /dev/null
+++ b/src/api/openapi/models/evaluation-response.ts
@@ -0,0 +1,29 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GradeInstanceDto } from './grade-instance-dto';
+
+export interface EvaluationResponse {
+ 'evaluationId'?: number;
+ 'homeworkId'?: number;
+ 'grade'?: GradeInstanceDto;
+ 'comment'?: string;
+ 'createdAt'?: string;
+ 'updatedAt'?: string;
+ 'updated'?: boolean;
+}
+
diff --git a/src/api/openapi/models/get-member-role-response.ts b/src/api/openapi/models/get-member-role-response.ts
new file mode 100644
index 00000000..c94dc043
--- /dev/null
+++ b/src/api/openapi/models/get-member-role-response.ts
@@ -0,0 +1,35 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface GetMemberRoleResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: { [key: string]: string | undefined; };
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/grade-dto.ts b/src/api/openapi/models/grade-dto.ts
new file mode 100644
index 00000000..ab772d18
--- /dev/null
+++ b/src/api/openapi/models/grade-dto.ts
@@ -0,0 +1,32 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface GradeDto {
+ 'gradeId'?: number;
+ 'code'?: string;
+ 'score'?: number;
+ 'label'?: string;
+ 'type'?: GradeDtoTypeEnum;
+ 'orderNum'?: number;
+}
+
+export const GradeDtoTypeEnum = {
+ Mission: 'MISSION'
+} as const;
+
+export type GradeDtoTypeEnum = typeof GradeDtoTypeEnum[keyof typeof GradeDtoTypeEnum];
+
+
diff --git a/src/api/openapi/models/grade-instance-dto.ts b/src/api/openapi/models/grade-instance-dto.ts
new file mode 100644
index 00000000..8b8475ef
--- /dev/null
+++ b/src/api/openapi/models/grade-instance-dto.ts
@@ -0,0 +1,22 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface GradeInstanceDto {
+ 'gradeCode'?: string;
+ 'gradeScore'?: number;
+ 'gradeLabel'?: string;
+}
+
diff --git a/src/api/openapi/models/grade-list-response-schema.ts b/src/api/openapi/models/grade-list-response-schema.ts
new file mode 100644
index 00000000..16d8b747
--- /dev/null
+++ b/src/api/openapi/models/grade-list-response-schema.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GradeDto } from './grade-dto';
+
+export interface GradeListResponseSchema {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: Array;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/granted-token-info.ts b/src/api/openapi/models/granted-token-info.ts
new file mode 100644
index 00000000..bf11a00d
--- /dev/null
+++ b/src/api/openapi/models/granted-token-info.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { OAuth2UserInfo } from './oauth2-user-info';
+
+export interface GrantedTokenInfo {
+ 'accessToken': string;
+ 'refreshToken'?: string;
+ 'id': string;
+ 'authVendor': GrantedTokenInfoAuthVendorEnum;
+ 'name'?: string;
+ 'profileImageUrl'?: string;
+ 'userInfo'?: OAuth2UserInfo;
+}
+
+export const GrantedTokenInfoAuthVendorEnum = {
+ Kakao: 'KAKAO',
+ Google: 'GOOGLE',
+ Native: 'NATIVE'
+} as const;
+
+export type GrantedTokenInfoAuthVendorEnum = typeof GrantedTokenInfoAuthVendorEnum[keyof typeof GrantedTokenInfoAuthVendorEnum];
+
+
diff --git a/src/api/openapi/models/group-study-applicant.ts b/src/api/openapi/models/group-study-applicant.ts
index 0dc84eec..d70e741e 100644
--- a/src/api/openapi/models/group-study-applicant.ts
+++ b/src/api/openapi/models/group-study-applicant.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
// May contain unused imports in some cases
// @ts-ignore
import type { SincerityTempResponse } from './sincerity-temp-response';
@@ -35,7 +35,7 @@ export interface GroupStudyApplicant {
/**
* 신청자 프로필 이미지
*/
- 'profileImage'?: Image;
+ 'profileImage'?: ImageDto;
/**
* 신청자 한줄 소개
*/
diff --git a/src/api/openapi/models/group-study-apply-detail-response.ts b/src/api/openapi/models/group-study-apply-detail-response.ts
index 818fdecf..9e740769 100644
--- a/src/api/openapi/models/group-study-apply-detail-response.ts
+++ b/src/api/openapi/models/group-study-apply-detail-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyApplyResponseContent } from './group-study-apply-response-content';
+import type { GroupStudyApplyResponseDto } from './group-study-apply-response-dto';
export interface GroupStudyApplyDetailResponse {
/**
@@ -29,7 +29,7 @@ export interface GroupStudyApplyDetailResponse {
/**
* Content
*/
- 'content'?: GroupStudyApplyResponseContent;
+ 'content'?: GroupStudyApplyResponseDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-apply-response-content.ts b/src/api/openapi/models/group-study-apply-response-dto.ts
similarity index 70%
rename from src/api/openapi/models/group-study-apply-response-content.ts
rename to src/api/openapi/models/group-study-apply-response-dto.ts
index 4d4ef378..aa883036 100644
--- a/src/api/openapi/models/group-study-apply-response-content.ts
+++ b/src/api/openapi/models/group-study-apply-response-dto.ts
@@ -20,7 +20,7 @@ import type { InterviewAnswer } from './interview-answer';
/**
* 그룹스터디 신청 응답
*/
-export interface GroupStudyApplyResponseContent {
+export interface GroupStudyApplyResponseDto {
/**
* 신청 ID
*/
@@ -40,7 +40,7 @@ export interface GroupStudyApplyResponseContent {
/**
* 역할
*/
- 'role'?: GroupStudyApplyResponseContentRoleEnum;
+ 'role'?: GroupStudyApplyResponseDtoRoleEnum;
/**
* 최근 접속일
*/
@@ -52,7 +52,7 @@ export interface GroupStudyApplyResponseContent {
/**
* 신청상태
*/
- 'status'?: GroupStudyApplyResponseContentStatusEnum;
+ 'status'?: GroupStudyApplyResponseDtoStatusEnum;
/**
* 생성일시
*/
@@ -67,13 +67,13 @@ export interface GroupStudyApplyResponseContent {
'deletedAt'?: string;
}
-export const GroupStudyApplyResponseContentRoleEnum = {
+export const GroupStudyApplyResponseDtoRoleEnum = {
Participant: 'PARTICIPANT',
Leader: 'LEADER'
} as const;
-export type GroupStudyApplyResponseContentRoleEnum = typeof GroupStudyApplyResponseContentRoleEnum[keyof typeof GroupStudyApplyResponseContentRoleEnum];
-export const GroupStudyApplyResponseContentStatusEnum = {
+export type GroupStudyApplyResponseDtoRoleEnum = typeof GroupStudyApplyResponseDtoRoleEnum[keyof typeof GroupStudyApplyResponseDtoRoleEnum];
+export const GroupStudyApplyResponseDtoStatusEnum = {
None: 'NONE',
Pending: 'PENDING',
Approved: 'APPROVED',
@@ -82,6 +82,6 @@ export const GroupStudyApplyResponseContentStatusEnum = {
Kicked: 'KICKED'
} as const;
-export type GroupStudyApplyResponseContentStatusEnum = typeof GroupStudyApplyResponseContentStatusEnum[keyof typeof GroupStudyApplyResponseContentStatusEnum];
+export type GroupStudyApplyResponseDtoStatusEnum = typeof GroupStudyApplyResponseDtoStatusEnum[keyof typeof GroupStudyApplyResponseDtoStatusEnum];
diff --git a/src/api/openapi/models/group-study-basic-info-request-dto.ts b/src/api/openapi/models/group-study-basic-info-request-dto.ts
index 91f459d8..9cc1f6d5 100644
--- a/src/api/openapi/models/group-study-basic-info-request-dto.ts
+++ b/src/api/openapi/models/group-study-basic-info-request-dto.ts
@@ -18,6 +18,10 @@
* 그룹스터디 기본 정보 수정 요청
*/
export interface GroupStudyBasicInfoRequestDto {
+ /**
+ * 스터디 리더 스터디 참가 여부
+ */
+ 'studyLeaderParticipation'?: boolean;
/**
* 스터디 분류 (그룹스터디 / 프리미엄 스터디)
*/
diff --git a/src/api/openapi/models/group-study-basic-info-response.ts b/src/api/openapi/models/group-study-basic-info-response-dto.ts
similarity index 50%
rename from src/api/openapi/models/group-study-basic-info-response.ts
rename to src/api/openapi/models/group-study-basic-info-response-dto.ts
index e002c13e..c68933c1 100644
--- a/src/api/openapi/models/group-study-basic-info-response.ts
+++ b/src/api/openapi/models/group-study-basic-info-response-dto.ts
@@ -15,12 +15,9 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { StudyReservationMember } from './study-reservation-member';
+import type { StudyReservationMemberDto } from './study-reservation-member-dto';
-/**
- * 그룹스터디 기본 정보 응답
- */
-export interface GroupStudyBasicInfoResponse {
+export interface GroupStudyBasicInfoResponseDto {
/**
* 그룹스터디 ID
*/
@@ -28,23 +25,27 @@ export interface GroupStudyBasicInfoResponse {
/**
* 스터디 분류
*/
- 'classification'?: GroupStudyBasicInfoResponseClassificationEnum;
+ 'classification'?: GroupStudyBasicInfoResponseDtoClassificationEnum;
/**
* 그룹스터디 리더 정보
*/
- 'leader'?: StudyReservationMember;
+ 'leader'?: StudyReservationMemberDto;
+ /**
+ * 스터디 리더 참가 여부
+ */
+ 'studyLeaderParticipation'?: boolean;
/**
* 스터디 타입
*/
- 'type'?: GroupStudyBasicInfoResponseTypeEnum;
+ 'type'?: GroupStudyBasicInfoResponseDtoTypeEnum;
/**
* 스터디 주최자 구분
*/
- 'hostType'?: GroupStudyBasicInfoResponseHostTypeEnum;
+ 'hostType'?: GroupStudyBasicInfoResponseDtoHostTypeEnum;
/**
* 스터디 모집 대상 (복수 선택 가능)
*/
- 'targetRoles'?: Array;
+ 'targetRoles'?: Array;
/**
* 스터디 최대 모집인원
*/
@@ -68,15 +69,15 @@ export interface GroupStudyBasicInfoResponse {
/**
* 스터디 경력 레벨 (복수 선택 가능)
*/
- 'experienceLevels'?: Array;
+ 'experienceLevels'?: Array;
/**
* 스터디 진행 방식
*/
- 'method'?: GroupStudyBasicInfoResponseMethodEnum;
+ 'method'?: GroupStudyBasicInfoResponseDtoMethodEnum;
/**
* 스터디 정기모임 유무
*/
- 'regularMeeting'?: GroupStudyBasicInfoResponseRegularMeetingEnum;
+ 'regularMeeting'?: GroupStudyBasicInfoResponseDtoRegularMeetingEnum;
/**
* 스터디 진행 장소 (진행방식 입력 이후 받는 데이터)
*/
@@ -96,7 +97,7 @@ export interface GroupStudyBasicInfoResponse {
/**
* 스터디 진행상태
*/
- 'status'?: GroupStudyBasicInfoResponseStatusEnum;
+ 'status'?: GroupStudyBasicInfoResponseDtoStatusEnum;
/**
* 생성일시
*/
@@ -111,13 +112,13 @@ export interface GroupStudyBasicInfoResponse {
'deletedAt'?: string;
}
-export const GroupStudyBasicInfoResponseClassificationEnum = {
+export const GroupStudyBasicInfoResponseDtoClassificationEnum = {
GroupStudy: 'GROUP_STUDY',
PremiumStudy: 'PREMIUM_STUDY'
} as const;
-export type GroupStudyBasicInfoResponseClassificationEnum = typeof GroupStudyBasicInfoResponseClassificationEnum[keyof typeof GroupStudyBasicInfoResponseClassificationEnum];
-export const GroupStudyBasicInfoResponseTypeEnum = {
+export type GroupStudyBasicInfoResponseDtoClassificationEnum = typeof GroupStudyBasicInfoResponseDtoClassificationEnum[keyof typeof GroupStudyBasicInfoResponseDtoClassificationEnum];
+export const GroupStudyBasicInfoResponseDtoTypeEnum = {
Project: 'PROJECT',
Mentoring: 'MENTORING',
Seminar: 'SEMINAR',
@@ -126,23 +127,23 @@ export const GroupStudyBasicInfoResponseTypeEnum = {
LectureStudy: 'LECTURE_STUDY'
} as const;
-export type GroupStudyBasicInfoResponseTypeEnum = typeof GroupStudyBasicInfoResponseTypeEnum[keyof typeof GroupStudyBasicInfoResponseTypeEnum];
-export const GroupStudyBasicInfoResponseHostTypeEnum = {
+export type GroupStudyBasicInfoResponseDtoTypeEnum = typeof GroupStudyBasicInfoResponseDtoTypeEnum[keyof typeof GroupStudyBasicInfoResponseDtoTypeEnum];
+export const GroupStudyBasicInfoResponseDtoHostTypeEnum = {
Zeroone: 'ZEROONE',
Mentor: 'MENTOR',
General: 'GENERAL'
} as const;
-export type GroupStudyBasicInfoResponseHostTypeEnum = typeof GroupStudyBasicInfoResponseHostTypeEnum[keyof typeof GroupStudyBasicInfoResponseHostTypeEnum];
-export const GroupStudyBasicInfoResponseTargetRolesEnum = {
+export type GroupStudyBasicInfoResponseDtoHostTypeEnum = typeof GroupStudyBasicInfoResponseDtoHostTypeEnum[keyof typeof GroupStudyBasicInfoResponseDtoHostTypeEnum];
+export const GroupStudyBasicInfoResponseDtoTargetRolesEnum = {
Backend: 'BACKEND',
Frontend: 'FRONTEND',
Planner: 'PLANNER',
Designer: 'DESIGNER'
} as const;
-export type GroupStudyBasicInfoResponseTargetRolesEnum = typeof GroupStudyBasicInfoResponseTargetRolesEnum[keyof typeof GroupStudyBasicInfoResponseTargetRolesEnum];
-export const GroupStudyBasicInfoResponseExperienceLevelsEnum = {
+export type GroupStudyBasicInfoResponseDtoTargetRolesEnum = typeof GroupStudyBasicInfoResponseDtoTargetRolesEnum[keyof typeof GroupStudyBasicInfoResponseDtoTargetRolesEnum];
+export const GroupStudyBasicInfoResponseDtoExperienceLevelsEnum = {
Beginner: 'BEGINNER',
JobSeeker: 'JOB_SEEKER',
Junior: 'JUNIOR',
@@ -150,28 +151,28 @@ export const GroupStudyBasicInfoResponseExperienceLevelsEnum = {
Senior: 'SENIOR'
} as const;
-export type GroupStudyBasicInfoResponseExperienceLevelsEnum = typeof GroupStudyBasicInfoResponseExperienceLevelsEnum[keyof typeof GroupStudyBasicInfoResponseExperienceLevelsEnum];
-export const GroupStudyBasicInfoResponseMethodEnum = {
+export type GroupStudyBasicInfoResponseDtoExperienceLevelsEnum = typeof GroupStudyBasicInfoResponseDtoExperienceLevelsEnum[keyof typeof GroupStudyBasicInfoResponseDtoExperienceLevelsEnum];
+export const GroupStudyBasicInfoResponseDtoMethodEnum = {
Online: 'ONLINE',
Offline: 'OFFLINE',
Hybrid: 'HYBRID'
} as const;
-export type GroupStudyBasicInfoResponseMethodEnum = typeof GroupStudyBasicInfoResponseMethodEnum[keyof typeof GroupStudyBasicInfoResponseMethodEnum];
-export const GroupStudyBasicInfoResponseRegularMeetingEnum = {
+export type GroupStudyBasicInfoResponseDtoMethodEnum = typeof GroupStudyBasicInfoResponseDtoMethodEnum[keyof typeof GroupStudyBasicInfoResponseDtoMethodEnum];
+export const GroupStudyBasicInfoResponseDtoRegularMeetingEnum = {
None: 'NONE',
Weekly: 'WEEKLY',
Biweekly: 'BIWEEKLY',
TripleWeeklyOrMore: 'TRIPLE_WEEKLY_OR_MORE'
} as const;
-export type GroupStudyBasicInfoResponseRegularMeetingEnum = typeof GroupStudyBasicInfoResponseRegularMeetingEnum[keyof typeof GroupStudyBasicInfoResponseRegularMeetingEnum];
-export const GroupStudyBasicInfoResponseStatusEnum = {
+export type GroupStudyBasicInfoResponseDtoRegularMeetingEnum = typeof GroupStudyBasicInfoResponseDtoRegularMeetingEnum[keyof typeof GroupStudyBasicInfoResponseDtoRegularMeetingEnum];
+export const GroupStudyBasicInfoResponseDtoStatusEnum = {
Recruiting: 'RECRUITING',
InProgress: 'IN_PROGRESS',
Completed: 'COMPLETED'
} as const;
-export type GroupStudyBasicInfoResponseStatusEnum = typeof GroupStudyBasicInfoResponseStatusEnum[keyof typeof GroupStudyBasicInfoResponseStatusEnum];
+export type GroupStudyBasicInfoResponseDtoStatusEnum = typeof GroupStudyBasicInfoResponseDtoStatusEnum[keyof typeof GroupStudyBasicInfoResponseDtoStatusEnum];
diff --git a/src/api/openapi/models/group-study-basic-info-update-request-dto.ts b/src/api/openapi/models/group-study-basic-info-update-request-dto.ts
index 9117f340..c020065a 100644
--- a/src/api/openapi/models/group-study-basic-info-update-request-dto.ts
+++ b/src/api/openapi/models/group-study-basic-info-update-request-dto.ts
@@ -18,6 +18,10 @@
* 그룹스터디 기본 정보 수정 요청
*/
export interface GroupStudyBasicInfoUpdateRequestDto {
+ /**
+ * 스터디 리더 참가 여부
+ */
+ 'studyLeaderParticipation': boolean;
/**
* 스터디 타입
*/
diff --git a/src/api/openapi/models/group-study-creation-response-content.ts b/src/api/openapi/models/group-study-creation-response-dto.ts
similarity index 87%
rename from src/api/openapi/models/group-study-creation-response-content.ts
rename to src/api/openapi/models/group-study-creation-response-dto.ts
index 90434cc3..4d89ad08 100644
--- a/src/api/openapi/models/group-study-creation-response-content.ts
+++ b/src/api/openapi/models/group-study-creation-response-dto.ts
@@ -14,10 +14,7 @@
-/**
- * 그룹스터디 생성 응답
- */
-export interface GroupStudyCreationResponseContent {
+export interface GroupStudyCreationResponseDto {
/**
* 생성된 그룹스터디 ID
*/
diff --git a/src/api/openapi/models/group-study-creation-response.ts b/src/api/openapi/models/group-study-creation-response.ts
index 0b7724de..5cfddc5f 100644
--- a/src/api/openapi/models/group-study-creation-response.ts
+++ b/src/api/openapi/models/group-study-creation-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyCreationResponseContent } from './group-study-creation-response-content';
+import type { GroupStudyCreationResponseDto } from './group-study-creation-response-dto';
export interface GroupStudyCreationResponse {
/**
@@ -29,7 +29,7 @@ export interface GroupStudyCreationResponse {
/**
* Content
*/
- 'content'?: GroupStudyCreationResponseContent;
+ 'content'?: GroupStudyCreationResponseDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-detail-info-response.ts b/src/api/openapi/models/group-study-detail-info-response-dto.ts
similarity index 85%
rename from src/api/openapi/models/group-study-detail-info-response.ts
rename to src/api/openapi/models/group-study-detail-info-response-dto.ts
index 892d536a..7a2b6a14 100644
--- a/src/api/openapi/models/group-study-detail-info-response.ts
+++ b/src/api/openapi/models/group-study-detail-info-response-dto.ts
@@ -15,16 +15,13 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
-/**
- * 그룹스터디 상세 정보 응답
- */
-export interface GroupStudyDetailInfoResponse {
+export interface GroupStudyDetailInfoResponseDto {
/**
* 기존 스터디 썸네일 이미지
*/
- 'image'?: Image;
+ 'image'?: ImageDto;
/**
* 스터디 제목
*/
diff --git a/src/api/openapi/models/group-study-detail-response.ts b/src/api/openapi/models/group-study-detail-response.ts
index 0f6b1df6..797235db 100644
--- a/src/api/openapi/models/group-study-detail-response.ts
+++ b/src/api/openapi/models/group-study-detail-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyDetailResponseContent } from './group-study-detail-response-content';
+import type { GroupStudyFullResponseDto } from './group-study-full-response-dto';
export interface GroupStudyDetailResponse {
/**
@@ -29,7 +29,7 @@ export interface GroupStudyDetailResponse {
/**
* Content
*/
- 'content'?: GroupStudyDetailResponseContent;
+ 'content'?: GroupStudyFullResponseDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-discretion-grade-response.ts b/src/api/openapi/models/group-study-discretion-grade-response.ts
new file mode 100644
index 00000000..c1eae85d
--- /dev/null
+++ b/src/api/openapi/models/group-study-discretion-grade-response.ts
@@ -0,0 +1,23 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { GroupStudyProgressGradeResponse } from './group-study-progress-grade-response';
+
+export interface GroupStudyDiscretionGradeResponse {
+ 'grades'?: Array;
+}
+
diff --git a/src/api/openapi/models/group-study-detail-response-content.ts b/src/api/openapi/models/group-study-full-response-dto.ts
similarity index 53%
rename from src/api/openapi/models/group-study-detail-response-content.ts
rename to src/api/openapi/models/group-study-full-response-dto.ts
index d91856b1..ac142d46 100644
--- a/src/api/openapi/models/group-study-detail-response-content.ts
+++ b/src/api/openapi/models/group-study-full-response-dto.ts
@@ -15,29 +15,26 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudInterviewPostResponseContent } from './group-stud-interview-post-response-content';
+import type { GroupStudyBasicInfoResponseDto } from './group-study-basic-info-response-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyBasicInfoResponse } from './group-study-basic-info-response';
+import type { GroupStudyDetailInfoResponseDto } from './group-study-detail-info-response-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyDetailInfoResponse } from './group-study-detail-info-response';
+import type { GroupStudyInterviewPostResponseDto } from './group-study-interview-post-response-dto';
-/**
- * 그룹스터디 상세 조회 응답
- */
-export interface GroupStudyDetailResponseContent {
+export interface GroupStudyFullResponseDto {
/**
* 그룹스터디 기본 정보
*/
- 'basicInfo'?: GroupStudyBasicInfoResponse;
+ 'basicInfo'?: GroupStudyBasicInfoResponseDto;
/**
* 그룹스터디 상세 정보
*/
- 'detailInfo'?: GroupStudyDetailInfoResponse;
+ 'detailInfo'?: GroupStudyDetailInfoResponseDto;
/**
* 그룹스터디 면접 질문
*/
- 'interviewPost'?: GroupStudInterviewPostResponseContent;
+ 'interviewPost'?: GroupStudyInterviewPostResponseDto;
}
diff --git a/src/api/openapi/models/group-stud-interview-post-response-content.ts b/src/api/openapi/models/group-study-interview-post-response-dto.ts
similarity index 93%
rename from src/api/openapi/models/group-stud-interview-post-response-content.ts
rename to src/api/openapi/models/group-study-interview-post-response-dto.ts
index 2a0eb04d..f9856978 100644
--- a/src/api/openapi/models/group-stud-interview-post-response-content.ts
+++ b/src/api/openapi/models/group-study-interview-post-response-dto.ts
@@ -20,7 +20,7 @@ import type { InterviewQuestion } from './interview-question';
/**
* 그룹스터디 개설질문 응답
*/
-export interface GroupStudInterviewPostResponseContent {
+export interface GroupStudyInterviewPostResponseDto {
/**
* 스터디 리더가 작성한 개설질문 목록 (최대 10개)
*/
diff --git a/src/api/openapi/models/group-study-interview-post-update-response.ts b/src/api/openapi/models/group-study-interview-post-update-response.ts
index 919ca0d6..d8e0c6ca 100644
--- a/src/api/openapi/models/group-study-interview-post-update-response.ts
+++ b/src/api/openapi/models/group-study-interview-post-update-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudInterviewPostResponseContent } from './group-stud-interview-post-response-content';
+import type { GroupStudyInterviewPostResponseDto } from './group-study-interview-post-response-dto';
export interface GroupStudyInterviewPostUpdateResponse {
/**
@@ -29,7 +29,7 @@ export interface GroupStudyInterviewPostUpdateResponse {
/**
* Content
*/
- 'content'?: GroupStudInterviewPostResponseContent;
+ 'content'?: GroupStudyInterviewPostResponseDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-list-item.ts b/src/api/openapi/models/group-study-list-item-dto.ts
similarity index 63%
rename from src/api/openapi/models/group-study-list-item.ts
rename to src/api/openapi/models/group-study-list-item-dto.ts
index f82bda26..e413d804 100644
--- a/src/api/openapi/models/group-study-list-item.ts
+++ b/src/api/openapi/models/group-study-list-item-dto.ts
@@ -15,22 +15,22 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyBasicInfoResponse } from './group-study-basic-info-response';
+import type { GroupStudyBasicInfoResponseDto } from './group-study-basic-info-response-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudySimpleInfoResponse } from './group-study-simple-info-response';
+import type { GroupStudySimpleInfoResponseDto } from './group-study-simple-info-response-dto';
/**
* 그룹스터디 목록 아이템 (PageResponse에서 사용)
*/
-export interface GroupStudyListItem {
+export interface GroupStudyListItemDto {
/**
* 그룹스터디 기본 정보
*/
- 'basicInfo'?: GroupStudyBasicInfoResponse;
+ 'basicInfo'?: GroupStudyBasicInfoResponseDto;
/**
* 그룹스터디 간단한 상세 정보
*/
- 'simpleDetailInfo'?: GroupStudySimpleInfoResponse;
+ 'simpleDetailInfo'?: GroupStudySimpleInfoResponseDto;
}
diff --git a/src/api/openapi/models/group-study-list-response.ts b/src/api/openapi/models/group-study-list-response.ts
index b3f20830..819e2dd0 100644
--- a/src/api/openapi/models/group-study-list-response.ts
+++ b/src/api/openapi/models/group-study-list-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { PageResponseGroupStudyListItem } from './page-response-group-study-list-item';
+import type { PageResponseGroupStudyListItemDto } from './page-response-group-study-list-item-dto';
export interface GroupStudyListResponse {
/**
@@ -29,7 +29,7 @@ export interface GroupStudyListResponse {
/**
* Content
*/
- 'content'?: PageResponseGroupStudyListItem;
+ 'content'?: PageResponseGroupStudyListItemDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-member-response.ts b/src/api/openapi/models/group-study-member-response.ts
deleted file mode 100644
index a6204148..00000000
--- a/src/api/openapi/models/group-study-member-response.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Zeroone API v1
- * v1
- *
- * The version of the OpenAPI document: v1
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-// May contain unused imports in some cases
-// @ts-ignore
-import type { GroupStudyMemberProgressInfoResponse } from './group-study-member-progress-info-response';
-
-export interface GroupStudyMemberResponse {
- 'id'?: number;
- 'profileImageUrl'?: string;
- 'memberName'?: string;
- 'tel'?: string;
- 'progress'?: GroupStudyMemberProgressInfoResponse;
- 'ranking'?: number;
- 'greeting'?: string;
- 'lastAccessedAt'?: string;
-}
-
diff --git a/src/api/openapi/models/group-study-members-response-content.ts b/src/api/openapi/models/group-study-members-response-content.ts
deleted file mode 100644
index 332238d4..00000000
--- a/src/api/openapi/models/group-study-members-response-content.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Zeroone API v1
- * v1
- *
- * The version of the OpenAPI document: v1
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-// May contain unused imports in some cases
-// @ts-ignore
-import type { GroupStudyMemberResponse } from './group-study-member-response';
-
-export interface GroupStudyMembersResponseContent {
- 'pageSize'?: number;
- 'pageNumber'?: number;
- 'totalElements'?: number;
- 'totalMemberCount'?: number;
- 'hasPrevious'?: boolean;
- 'hasNext'?: boolean;
- 'members'?: Array;
-}
-
diff --git a/src/api/openapi/models/group-study-members-response.ts b/src/api/openapi/models/group-study-members-response.ts
index 3796c93c..ac6fd402 100644
--- a/src/api/openapi/models/group-study-members-response.ts
+++ b/src/api/openapi/models/group-study-members-response.ts
@@ -13,9 +13,6 @@
*/
-// May contain unused imports in some cases
-// @ts-ignore
-import type { GroupStudyMembersResponseContent } from './group-study-members-response-content';
export interface GroupStudyMembersResponse {
/**
@@ -29,7 +26,7 @@ export interface GroupStudyMembersResponse {
/**
* Content
*/
- 'content'?: GroupStudyMembersResponseContent;
+ 'content'?: GroupStudyMembersResponse;
/**
* Message
*/
diff --git a/src/api/openapi/models/group-study-member-progress-grade-response.ts b/src/api/openapi/models/group-study-progress-grade-response.ts
similarity index 86%
rename from src/api/openapi/models/group-study-member-progress-grade-response.ts
rename to src/api/openapi/models/group-study-progress-grade-response.ts
index 90a11628..326d66d6 100644
--- a/src/api/openapi/models/group-study-member-progress-grade-response.ts
+++ b/src/api/openapi/models/group-study-progress-grade-response.ts
@@ -14,7 +14,7 @@
-export interface GroupStudyMemberProgressGradeResponse {
+export interface GroupStudyProgressGradeResponse {
'id'?: number;
'code'?: string;
'name'?: string;
diff --git a/src/api/openapi/models/group-study-simple-info-response.ts b/src/api/openapi/models/group-study-simple-info-response-dto.ts
similarity index 83%
rename from src/api/openapi/models/group-study-simple-info-response.ts
rename to src/api/openapi/models/group-study-simple-info-response-dto.ts
index 7dbf5779..36c9ca7f 100644
--- a/src/api/openapi/models/group-study-simple-info-response.ts
+++ b/src/api/openapi/models/group-study-simple-info-response-dto.ts
@@ -15,16 +15,16 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
/**
* 그룹스터디 간단한 상세 정보 (목록조회용)
*/
-export interface GroupStudySimpleInfoResponse {
+export interface GroupStudySimpleInfoResponseDto {
/**
* 스터디 썸네일 이미지
*/
- 'thumbnail'?: Image;
+ 'thumbnail'?: ImageDto;
/**
* 스터디 제목
*/
diff --git a/src/api/openapi/models/heart-info.ts b/src/api/openapi/models/heart-info.ts
new file mode 100644
index 00000000..992469b0
--- /dev/null
+++ b/src/api/openapi/models/heart-info.ts
@@ -0,0 +1,28 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface HeartInfo {
+ 'SMS_CNT'?: number;
+ 'LMS_CNT'?: number;
+ 'MMS_CNT'?: number;
+ 'ALT_CNT'?: number;
+ 'FTS_CNT'?: number;
+ 'FTM_CNT'?: number;
+ 'FTW_CNT'?: number;
+ 'FTL_CNT'?: number;
+ 'FTC_CNT'?: number;
+}
+
diff --git a/src/api/openapi/models/history-item.ts b/src/api/openapi/models/history-item.ts
new file mode 100644
index 00000000..22978f73
--- /dev/null
+++ b/src/api/openapi/models/history-item.ts
@@ -0,0 +1,27 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface HistoryItem {
+ 'mid'?: string;
+ 'type'?: string;
+ 'sender'?: string;
+ 'msg_count'?: number;
+ 'mbody'?: string;
+ 'reserve_date'?: string;
+ 'reserve_state'?: string;
+ 'regdate'?: string;
+}
+
diff --git a/src/api/openapi/models/homework-content-dto.ts b/src/api/openapi/models/homework-content-dto.ts
new file mode 100644
index 00000000..0aefb04b
--- /dev/null
+++ b/src/api/openapi/models/homework-content-dto.ts
@@ -0,0 +1,24 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { HomeworkOptionalContentDto } from './homework-optional-content-dto';
+
+export interface HomeworkContentDto {
+ 'textContent'?: string;
+ 'optionalContent'?: HomeworkOptionalContentDto;
+}
+
diff --git a/src/api/openapi/models/homework-detail-response-dto.ts b/src/api/openapi/models/homework-detail-response-dto.ts
new file mode 100644
index 00000000..3b5c902a
--- /dev/null
+++ b/src/api/openapi/models/homework-detail-response-dto.ts
@@ -0,0 +1,53 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { EvaluationDetailResponseDto } from './evaluation-detail-response-dto';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ImageDto } from './image-dto';
+
+export interface HomeworkDetailResponseDto {
+ 'homeworkId'?: number;
+ 'homeworkStatus'?: HomeworkDetailResponseDtoHomeworkStatusEnum;
+ 'submissionTime'?: string;
+ 'submitterId'?: number;
+ /**
+ * 그룹스터디 신청자 역할
+ */
+ 'submitterApplyRole'?: HomeworkDetailResponseDtoSubmitterApplyRoleEnum;
+ 'submitterNickname'?: string;
+ 'submitterProfileImage'?: ImageDto;
+ 'homeworkTextContent'?: string;
+ 'homeworkLink'?: string;
+ 'evaluation'?: EvaluationDetailResponseDto;
+}
+
+export const HomeworkDetailResponseDtoHomeworkStatusEnum = {
+ EvaluationCompleted: 'EVALUATION_COMPLETED',
+ Submitted: 'SUBMITTED',
+ NotSubmitted: 'NOT_SUBMITTED'
+} as const;
+
+export type HomeworkDetailResponseDtoHomeworkStatusEnum = typeof HomeworkDetailResponseDtoHomeworkStatusEnum[keyof typeof HomeworkDetailResponseDtoHomeworkStatusEnum];
+export const HomeworkDetailResponseDtoSubmitterApplyRoleEnum = {
+ Participant: 'PARTICIPANT',
+ Leader: 'LEADER'
+} as const;
+
+export type HomeworkDetailResponseDtoSubmitterApplyRoleEnum = typeof HomeworkDetailResponseDtoSubmitterApplyRoleEnum[keyof typeof HomeworkDetailResponseDtoSubmitterApplyRoleEnum];
+
+
diff --git a/src/api/openapi/models/homework-optional-content-dto.ts b/src/api/openapi/models/homework-optional-content-dto.ts
new file mode 100644
index 00000000..2865dc68
--- /dev/null
+++ b/src/api/openapi/models/homework-optional-content-dto.ts
@@ -0,0 +1,20 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface HomeworkOptionalContentDto {
+ 'link'?: string;
+}
+
diff --git a/src/api/openapi/models/homework-response-dto.ts b/src/api/openapi/models/homework-response-dto.ts
new file mode 100644
index 00000000..43d2d3d9
--- /dev/null
+++ b/src/api/openapi/models/homework-response-dto.ts
@@ -0,0 +1,41 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { EvaluationResponse } from './evaluation-response';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { HomeworkContentDto } from './homework-content-dto';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ImageDto } from './image-dto';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { PeerReviewResponse } from './peer-review-response';
+
+export interface HomeworkResponseDto {
+ 'homeworkId'?: number;
+ 'submitterId'?: number;
+ 'submitterNickname'?: string;
+ 'submitterProfileImage'?: ImageDto;
+ 'requestedByStudyLeader'?: boolean;
+ 'submitted'?: boolean;
+ 'submissionTime'?: string;
+ 'homeworkContent'?: HomeworkContentDto;
+ 'evaluation'?: EvaluationResponse;
+ 'peerReviews'?: Array;
+}
+
diff --git a/src/api/openapi/models/image.ts b/src/api/openapi/models/image-dto.ts
similarity index 79%
rename from src/api/openapi/models/image.ts
rename to src/api/openapi/models/image-dto.ts
index e83afd1e..bf572585 100644
--- a/src/api/openapi/models/image.ts
+++ b/src/api/openapi/models/image-dto.ts
@@ -15,9 +15,9 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { ResizedImage } from './resized-image';
+import type { ResizedImageDto } from './resized-image-dto';
-export interface Image {
+export interface ImageDto {
/**
* 이미지 ID
*/
@@ -25,6 +25,6 @@ export interface Image {
/**
* 같은 이미지를 여러 사이즈로 리사이징하여 생성된 이미지 목록
*/
- 'resizedImages'?: Array;
+ 'resizedImages'?: Array;
}
diff --git a/src/api/openapi/models/index.ts b/src/api/openapi/models/index.ts
index a597f712..4f090dde 100644
--- a/src/api/openapi/models/index.ts
+++ b/src/api/openapi/models/index.ts
@@ -6,36 +6,62 @@ export * from './aligo-list-response-dto';
export * from './aligo-list-response-schema';
export * from './aligo-remain-response-dto';
export * from './aligo-remain-response-schema';
+export * from './alimtalk-heart-info-response-dto';
+export * from './alimtalk-history-detail-response-dto';
+export * from './alimtalk-history-list-response-dto';
export * from './auto-run-matching-request-dto';
export * from './available-study-time-dto';
export * from './available-study-time-list-response';
export * from './bank-list-response-schema';
export * from './bank-response';
export * from './base-response';
+export * from './base-response-granted-token-info';
+export * from './base-response-group-study-discretion-grade-response';
+export * from './base-response-group-study-members-response';
+export * from './base-response-homework-response-dto';
+export * from './base-response-matching-request-response';
+export * from './base-response-member-account-history-response-dto';
+export * from './base-response-object';
+export * from './base-response-string';
+export * from './base-response-study-space-is-participate-response';
+export * from './base-response-temporal-token';
+export * from './base-response-void';
+export * from './button-dto';
export * from './calendar-day-status';
+export * from './cancel-data';
export * from './career-list-response';
export * from './career-response-dto';
+export * from './change-hist-dto';
export * from './complete-daily-study-request';
export * from './complete-daily-study-request-schema';
export * from './create-mission-response-schema';
export * from './create-study-space-request';
export * from './cursor-response-dto-daily-study-response';
-export * from './cursor-response-dto-study-reservation-member';
+export * from './cursor-response-dto-study-reservation-member-dto';
export * from './daily-study-response';
+export * from './detail-item';
export * from './error-response';
+export * from './evaluation-creation-response-dto';
+export * from './evaluation-creation-response-schema';
+export * from './evaluation-detail-response-dto';
export * from './evaluation-request';
+export * from './evaluation-response';
+export * from './evaluation-response-schema';
export * from './full-member-profile-response';
export * from './full-member-profile-response-dto';
export * from './get-daily-studies-response-schema';
export * from './get-group-study-member-status-response';
export * from './get-group-study-member-status-response-content';
-export * from './get-missions-response-schema';
+export * from './get-member-role-response';
export * from './get-my-daily-study-calender-response-schema';
export * from './get-study-dashboard-response-schema';
export * from './get-study-space-response-schema';
export * from './get-study-spaces-response-schema';
export * from './get-today-my-daily-study-response-schema';
-export * from './group-stud-interview-post-response-content';
+export * from './grade-dto';
+export * from './grade-instance-dto';
+export * from './grade-list-response-schema';
+export * from './granted-token-info';
export * from './group-study-applicant';
export * from './group-study-apply-creation-response';
export * from './group-study-apply-creation-response-content';
@@ -46,33 +72,31 @@ export * from './group-study-apply-process-request';
export * from './group-study-apply-process-response';
export * from './group-study-apply-process-response-content';
export * from './group-study-apply-request';
-export * from './group-study-apply-response-content';
+export * from './group-study-apply-response-dto';
export * from './group-study-apply-update-request';
export * from './group-study-apply-update-response-content';
export * from './group-study-basic-info-request-dto';
-export * from './group-study-basic-info-response';
+export * from './group-study-basic-info-response-dto';
export * from './group-study-basic-info-update-request-dto';
export * from './group-study-creation-request-dto';
export * from './group-study-creation-response';
-export * from './group-study-creation-response-content';
+export * from './group-study-creation-response-dto';
export * from './group-study-detail-info-request-dto';
-export * from './group-study-detail-info-response';
+export * from './group-study-detail-info-response-dto';
export * from './group-study-detail-response';
-export * from './group-study-detail-response-content';
+export * from './group-study-discretion-grade-response';
+export * from './group-study-full-response-dto';
export * from './group-study-interview-post-request';
+export * from './group-study-interview-post-response-dto';
export * from './group-study-interview-post-update-response';
-export * from './group-study-list-item';
+export * from './group-study-list-item-dto';
export * from './group-study-list-response';
-export * from './group-study-member-progress-grade-response';
-export * from './group-study-member-progress-history-response';
-export * from './group-study-member-progress-info-response';
-export * from './group-study-member-response';
export * from './group-study-members-response';
-export * from './group-study-members-response-content';
export * from './group-study-notice-request';
export * from './group-study-notice-response';
export * from './group-study-notice-response-content';
-export * from './group-study-simple-info-response';
+export * from './group-study-progress-grade-response';
+export * from './group-study-simple-info-response-dto';
export * from './group-study-thread-comment-request';
export * from './group-study-thread-request';
export * from './group-study-update-request';
@@ -80,19 +104,31 @@ export * from './group-study-update-response';
export * from './growth-metric-response';
export * from './has-member-new-notification-response';
export * from './has-member-new-notification-response-schema';
+export * from './heart-info';
+export * from './history-item';
+export * from './homework-content-dto';
+export * from './homework-detail-response-dto';
export * from './homework-edit-request';
+export * from './homework-optional-content-dto';
+export * from './homework-response-dto';
export * from './homework-submission-request';
export * from './id-name-dto';
-export * from './image';
+export * from './image-dto';
export * from './image-size-type';
+export * from './info';
export * from './interview-answer';
export * from './interview-question';
export * from './job-list-response';
export * from './job-response-dto';
+export * from './kakao-channel-list-response-dto';
+export * from './kakao-channel-profile-dto';
+export * from './kakao-template-list-response-dto';
export * from './local-time';
export * from './matching-attributes';
+export * from './matching-request-response';
export * from './matching-system-status-response';
export * from './matching-system-status-schema';
+export * from './member-account-history-response-dto';
export * from './member-creation-request';
export * from './member-creation-response';
export * from './member-creation-response-content';
@@ -111,11 +147,13 @@ export * from './member-profile-update-response-dto';
export * from './mission-creation-request';
export * from './mission-creation-result';
export * from './mission-list-response';
-export * from './mission-task-dto';
+export * from './mission-list-response-schema';
+export * from './mission-response';
+export * from './mission-response-dto';
export * from './mission-update-request';
export * from './monthly-calendar-response';
export * from './my-group-study-application-response';
-export * from './my-group-study-apply-list-item';
+export * from './my-group-study-apply-list-item-dto';
export * from './nickname-availability-response';
export * from './nickname-availability-response-dto';
export * from './no-content-response';
@@ -123,14 +161,15 @@ export * from './notification-categories-response';
export * from './notification-categories-response-schema';
export * from './notification-topic-response';
export * from './number-response';
+export * from './oauth2-user-info';
export * from './optional-homework-submission';
export * from './page-admin-transaction-list-response-schema';
export * from './page-response-admin-transaction-list-response';
export * from './page-response-group-study-apply-list-item';
-export * from './page-response-group-study-list-item';
+export * from './page-response-group-study-list-item-dto';
export * from './page-response-member-notification-response';
export * from './page-response-mission-list-response';
-export * from './page-response-my-group-study-apply-list-item';
+export * from './page-response-my-group-study-apply-list-item-dto';
export * from './page-response-participating-study-info';
export * from './page-response-study-refund-summary-response';
export * from './page-response-study-settlement-summary-response';
@@ -144,8 +183,15 @@ export * from './pageable';
export * from './participating-study-info';
export * from './participating-study-response';
export * from './participating-study-response-content';
+export * from './payment-data';
export * from './payment-history-response';
export * from './payment-search-condition';
+export * from './peer-review-create-request';
+export * from './peer-review-creation-response';
+export * from './peer-review-creation-response-schema';
+export * from './peer-review-list-response';
+export * from './peer-review-response';
+export * from './peer-review-update-request';
export * from './phone-auth-response-dto';
export * from './phone-auth-response-schema';
export * from './phone-auth-send-request-dto';
@@ -162,7 +208,7 @@ export * from './request-auto-study-matching-dto';
export * from './reset-weekly-matching-request';
export * from './reset-weekly-matching-response';
export * from './reset-weekly-matching-schema';
-export * from './resized-image';
+export * from './resized-image-dto';
export * from './settlement-account-register-request';
export * from './settlement-account-response';
export * from './settlement-account-response-schema';
@@ -185,7 +231,7 @@ export * from './study-refund-detail-response';
export * from './study-refund-detail-response-schema';
export * from './study-refund-reject-request';
export * from './study-refund-summary-response';
-export * from './study-reservation-member';
+export * from './study-reservation-member-dto';
export * from './study-reservation-response';
export * from './study-reservation-response-content';
export * from './study-settlement-create-request';
@@ -197,17 +243,25 @@ export * from './study-space-is-participate-response-schema';
export * from './study-subject-dto';
export * from './study-subject-list-response';
export * from './tech-stack-response';
+export * from './template-dto';
+export * from './template-info';
+export * from './templates-sync-status-dto';
+export * from './temporal-token';
+export * from './test-alimtalk-response-schema';
+export * from './test-alimtalk-send-request-dto';
export * from './thread-comment-response-content';
export * from './thread-comment-response-schema';
export * from './thread-summary-response';
export * from './thread-summary-response-content';
export * from './today-study-data-response';
export * from './toss-payment-confirm-request';
+export * from './toss-webhook-payload';
+export * from './update-group-study-member-discretion-request';
export * from './update-group-study-member-greeting-request';
-export * from './update-group-study-member-progress-request';
export * from './update-mission-response-schema';
export * from './update-study-space-request';
export * from './upload-profile-image-request';
export * from './user-transaction-detail-response';
export * from './user-transaction-list-response';
+export * from './virtual-account-info';
export * from './void-response-schema';
diff --git a/src/api/openapi/models/info.ts b/src/api/openapi/models/info.ts
new file mode 100644
index 00000000..e5211780
--- /dev/null
+++ b/src/api/openapi/models/info.ts
@@ -0,0 +1,26 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface Info {
+ 'type'?: string;
+ 'mid'?: string;
+ 'current'?: number;
+ 'unit'?: number;
+ 'total'?: number;
+ 'scnt'?: number;
+ 'fcnt'?: number;
+}
+
diff --git a/src/api/openapi/models/kakao-channel-list-response-dto.ts b/src/api/openapi/models/kakao-channel-list-response-dto.ts
new file mode 100644
index 00000000..7036e2ae
--- /dev/null
+++ b/src/api/openapi/models/kakao-channel-list-response-dto.ts
@@ -0,0 +1,25 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { KakaoChannelProfileDto } from './kakao-channel-profile-dto';
+
+export interface KakaoChannelListResponseDto {
+ 'code'?: number;
+ 'message'?: string;
+ 'list'?: Array;
+}
+
diff --git a/src/api/openapi/models/kakao-channel-profile-dto.ts b/src/api/openapi/models/kakao-channel-profile-dto.ts
new file mode 100644
index 00000000..c7f4412d
--- /dev/null
+++ b/src/api/openapi/models/kakao-channel-profile-dto.ts
@@ -0,0 +1,30 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface KakaoChannelProfileDto {
+ 'senderKey'?: string;
+ 'uuid'?: string;
+ 'name'?: string;
+ 'status'?: string;
+ 'profileStat'?: string;
+ 'cdate'?: string;
+ 'udate'?: string;
+ 'catCode'?: string;
+ 'alimUseYn'?: boolean;
+ 'license'?: string;
+ 'licenseNum'?: string;
+}
+
diff --git a/src/api/openapi/models/kakao-template-list-response-dto.ts b/src/api/openapi/models/kakao-template-list-response-dto.ts
new file mode 100644
index 00000000..22785d30
--- /dev/null
+++ b/src/api/openapi/models/kakao-template-list-response-dto.ts
@@ -0,0 +1,29 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { TemplateDto } from './template-dto';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { TemplateInfo } from './template-info';
+
+export interface KakaoTemplateListResponseDto {
+ 'code'?: number;
+ 'message'?: string;
+ 'list'?: Array;
+ 'info'?: TemplateInfo;
+}
+
diff --git a/src/api/openapi/models/matching-request-response.ts b/src/api/openapi/models/matching-request-response.ts
new file mode 100644
index 00000000..ff7ba55e
--- /dev/null
+++ b/src/api/openapi/models/matching-request-response.ts
@@ -0,0 +1,70 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface MatchingRequestResponse {
+ /**
+ * 매칭 요청 ID
+ */
+ 'matchingRequestId'?: number;
+ /**
+ * 요청 회원 ID
+ */
+ 'memberId'?: number;
+ /**
+ * 파트너 회원 ID
+ */
+ 'partnerId'?: number;
+ /**
+ * 매칭 상태
+ */
+ 'status'?: MatchingRequestResponseStatusEnum;
+ /**
+ * 매칭 종류
+ */
+ 'type'?: MatchingRequestResponseTypeEnum;
+ /**
+ * 내용/메모
+ */
+ 'content'?: string;
+ /**
+ * 생성 일시
+ */
+ 'createdAt'?: string;
+ /**
+ * 수정 일시
+ */
+ 'updatedAt'?: string;
+}
+
+export const MatchingRequestResponseStatusEnum = {
+ Pending: 'PENDING',
+ ResAcpt: 'RES_ACPT',
+ ResAuto: 'RES_AUTO',
+ ResRej: 'RES_REJ',
+ Auto: 'AUTO',
+ Done: 'DONE',
+ Cancel: 'CANCEL'
+} as const;
+
+export type MatchingRequestResponseStatusEnum = typeof MatchingRequestResponseStatusEnum[keyof typeof MatchingRequestResponseStatusEnum];
+export const MatchingRequestResponseTypeEnum = {
+ Auto: 'AUTO',
+ Manual: 'MANUAL'
+} as const;
+
+export type MatchingRequestResponseTypeEnum = typeof MatchingRequestResponseTypeEnum[keyof typeof MatchingRequestResponseTypeEnum];
+
+
diff --git a/src/api/openapi/models/member-account-history-response-dto.ts b/src/api/openapi/models/member-account-history-response-dto.ts
new file mode 100644
index 00000000..88da27bd
--- /dev/null
+++ b/src/api/openapi/models/member-account-history-response-dto.ts
@@ -0,0 +1,28 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ChangeHistDto } from './change-hist-dto';
+
+export interface MemberAccountHistoryResponseDto {
+ 'memberId'?: number;
+ 'joinedAt'?: string;
+ 'loginMostRecentlyAt'?: string;
+ 'loginHists'?: Array;
+ 'roleChangeHists'?: Array;
+ 'memberStatusChangeHists'?: Array;
+}
+
diff --git a/src/api/openapi/models/member-notification-response.ts b/src/api/openapi/models/member-notification-response.ts
index e3c7d81b..1206e79e 100644
--- a/src/api/openapi/models/member-notification-response.ts
+++ b/src/api/openapi/models/member-notification-response.ts
@@ -27,6 +27,9 @@ export interface MemberNotificationResponse {
export const MemberNotificationResponseTopicTypeEnum = {
OneOnOneStudy: 'ONE_ON_ONE_STUDY',
GroupStudy: 'GROUP_STUDY',
+ Notice: 'NOTICE',
+ Thread: 'THREAD',
+ Comment: 'COMMENT',
Payment: 'PAYMENT',
Etc: 'ETC'
} as const;
diff --git a/src/api/openapi/models/member-profile-response-dto.ts b/src/api/openapi/models/member-profile-response-dto.ts
index 62535239..51436db9 100644
--- a/src/api/openapi/models/member-profile-response-dto.ts
+++ b/src/api/openapi/models/member-profile-response-dto.ts
@@ -18,7 +18,7 @@
import type { IdNameDto } from './id-name-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
// May contain unused imports in some cases
// @ts-ignore
import type { SocialMediaResponseDto } from './social-media-response-dto';
@@ -38,7 +38,7 @@ export interface MemberProfileResponseDto {
/**
* 프로필 이미지 - 리사이징된 이미지를 포함하고 있음 - 지금은 ORIGINAL 하나밖에 없음
*/
- 'profileImage'?: Image;
+ 'profileImage'?: ImageDto;
/**
* 한마디 소개
*/
diff --git a/src/api/openapi/models/mission-creation-request.ts b/src/api/openapi/models/mission-creation-request.ts
index ba0c7a6a..ec49372f 100644
--- a/src/api/openapi/models/mission-creation-request.ts
+++ b/src/api/openapi/models/mission-creation-request.ts
@@ -22,14 +22,22 @@ export interface MissionCreationRequest {
/**
* 미션 내용
*/
- 'content': string;
+ 'description'?: string;
+ /**
+ * 미션 가이드
+ */
+ 'guide': string;
+ /**
+ * 주차
+ */
+ 'weekNum'?: number;
/**
* 미션 시작 시간
*/
- 'startTime': string;
+ 'startDate': string;
/**
* 미션 종료 시간
*/
- 'endTime': string;
+ 'endDate': string;
}
diff --git a/src/api/openapi/models/get-missions-response-schema.ts b/src/api/openapi/models/mission-list-response-schema.ts
similarity index 93%
rename from src/api/openapi/models/get-missions-response-schema.ts
rename to src/api/openapi/models/mission-list-response-schema.ts
index a291ee32..7560d715 100644
--- a/src/api/openapi/models/get-missions-response-schema.ts
+++ b/src/api/openapi/models/mission-list-response-schema.ts
@@ -17,7 +17,7 @@
// @ts-ignore
import type { PageResponseMissionListResponse } from './page-response-mission-list-response';
-export interface GetMissionsResponseSchema {
+export interface MissionListResponseSchema {
/**
* Status Code
*/
diff --git a/src/api/openapi/models/mission-list-response.ts b/src/api/openapi/models/mission-list-response.ts
index 2e17ad7b..755b99d5 100644
--- a/src/api/openapi/models/mission-list-response.ts
+++ b/src/api/openapi/models/mission-list-response.ts
@@ -15,17 +15,22 @@
export interface MissionListResponse {
- 'id'?: number;
+ 'missionId'?: number;
+ 'weekNum'?: number;
'title'?: string;
- 'startTime'?: string;
- 'endTime'?: string;
+ 'description'?: string;
+ 'startDate'?: string;
+ 'endDate'?: string;
'status'?: MissionListResponseStatusEnum;
+ 'maxEvaluationCount'?: number;
+ 'evaluatedCount'?: number;
}
export const MissionListResponseStatusEnum = {
- Scheduled: 'SCHEDULED',
+ NotStarted: 'NOT_STARTED',
InProgress: 'IN_PROGRESS',
- SubmissionClosed: 'SUBMISSION_CLOSED'
+ Ended: 'ENDED',
+ EvaluationCompleted: 'EVALUATION_COMPLETED'
} as const;
export type MissionListResponseStatusEnum = typeof MissionListResponseStatusEnum[keyof typeof MissionListResponseStatusEnum];
diff --git a/src/api/openapi/models/mission-response-dto.ts b/src/api/openapi/models/mission-response-dto.ts
new file mode 100644
index 00000000..f8062774
--- /dev/null
+++ b/src/api/openapi/models/mission-response-dto.ts
@@ -0,0 +1,43 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { HomeworkDetailResponseDto } from './homework-detail-response-dto';
+
+export interface MissionResponseDto {
+ 'missionId'?: number;
+ 'weekNum'?: number;
+ 'status'?: MissionResponseDtoStatusEnum;
+ 'missionTitle'?: string;
+ 'missionDescription'?: string;
+ 'missionGuide'?: string;
+ 'missionStartDate'?: string;
+ 'missionEndDate'?: string;
+ 'maxHomeworkSubmissionCount'?: number;
+ 'currentHomeworkSubmissionCount'?: number;
+ 'homeworks'?: Array;
+}
+
+export const MissionResponseDtoStatusEnum = {
+ NotStarted: 'NOT_STARTED',
+ InProgress: 'IN_PROGRESS',
+ Ended: 'ENDED',
+ EvaluationCompleted: 'EVALUATION_COMPLETED'
+} as const;
+
+export type MissionResponseDtoStatusEnum = typeof MissionResponseDtoStatusEnum[keyof typeof MissionResponseDtoStatusEnum];
+
+
diff --git a/src/api/openapi/models/mission-response.ts b/src/api/openapi/models/mission-response.ts
new file mode 100644
index 00000000..a7648eb0
--- /dev/null
+++ b/src/api/openapi/models/mission-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { MissionResponseDto } from './mission-response-dto';
+
+export interface MissionResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: MissionResponseDto;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/mission-update-request.ts b/src/api/openapi/models/mission-update-request.ts
index 0a93917d..3c1aed77 100644
--- a/src/api/openapi/models/mission-update-request.ts
+++ b/src/api/openapi/models/mission-update-request.ts
@@ -13,16 +13,31 @@
*/
-// May contain unused imports in some cases
-// @ts-ignore
-import type { MissionTaskDto } from './mission-task-dto';
export interface MissionUpdateRequest {
+ /**
+ * 미션 제목
+ */
'title': string;
- 'content': string;
- 'startTime': string;
- 'endTime'?: string;
- 'tasks': Array;
- 'scoreAllocation'?: number;
+ /**
+ * 미션 내용
+ */
+ 'description'?: string;
+ /**
+ * 미션 가이드
+ */
+ 'guide': string;
+ /**
+ * 주차
+ */
+ 'weekNum'?: number;
+ /**
+ * 미션 시작 시간
+ */
+ 'startDate': string;
+ /**
+ * 미션 종료 시간
+ */
+ 'endDate': string;
}
diff --git a/src/api/openapi/models/my-group-study-application-response.ts b/src/api/openapi/models/my-group-study-application-response.ts
index 696e495d..51b1bf27 100644
--- a/src/api/openapi/models/my-group-study-application-response.ts
+++ b/src/api/openapi/models/my-group-study-application-response.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { PageResponseMyGroupStudyApplyListItem } from './page-response-my-group-study-apply-list-item';
+import type { PageResponseMyGroupStudyApplyListItemDto } from './page-response-my-group-study-apply-list-item-dto';
export interface MyGroupStudyApplicationResponse {
/**
@@ -29,7 +29,7 @@ export interface MyGroupStudyApplicationResponse {
/**
* Content
*/
- 'content'?: PageResponseMyGroupStudyApplyListItem;
+ 'content'?: PageResponseMyGroupStudyApplyListItemDto;
/**
* Message
*/
diff --git a/src/api/openapi/models/my-group-study-apply-list-item.ts b/src/api/openapi/models/my-group-study-apply-list-item-dto.ts
similarity index 62%
rename from src/api/openapi/models/my-group-study-apply-list-item.ts
rename to src/api/openapi/models/my-group-study-apply-list-item-dto.ts
index 83a62b08..163023e0 100644
--- a/src/api/openapi/models/my-group-study-apply-list-item.ts
+++ b/src/api/openapi/models/my-group-study-apply-list-item-dto.ts
@@ -15,30 +15,30 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyApplyResponseContent } from './group-study-apply-response-content';
+import type { GroupStudyApplyResponseDto } from './group-study-apply-response-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyBasicInfoResponse } from './group-study-basic-info-response';
+import type { GroupStudyBasicInfoResponseDto } from './group-study-basic-info-response-dto';
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudySimpleInfoResponse } from './group-study-simple-info-response';
+import type { GroupStudySimpleInfoResponseDto } from './group-study-simple-info-response-dto';
/**
* 내가 신청한 그룹스터디 목록 아이템 (PageResponse에서 사용)
*/
-export interface MyGroupStudyApplyListItem {
+export interface MyGroupStudyApplyListItemDto {
/**
* 그룹스터디 기본 정보
*/
- 'basicInfo'?: GroupStudyBasicInfoResponse;
+ 'basicInfo'?: GroupStudyBasicInfoResponseDto;
/**
* 그룹스터디 간단한 상세 정보
*/
- 'simpleDetailInfo'?: GroupStudySimpleInfoResponse;
+ 'simpleDetailInfo'?: GroupStudySimpleInfoResponseDto;
/**
* 그룹스터디 신청 정보
*/
- 'applyInfo'?: GroupStudyApplyResponseContent;
+ 'applyInfo'?: GroupStudyApplyResponseDto;
/**
* 후기 작성 여부
*/
diff --git a/src/api/openapi/models/oauth2-user-info.ts b/src/api/openapi/models/oauth2-user-info.ts
new file mode 100644
index 00000000..041d25b7
--- /dev/null
+++ b/src/api/openapi/models/oauth2-user-info.ts
@@ -0,0 +1,22 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface OAuth2UserInfo {
+ 'id'?: string;
+ 'name'?: string;
+ 'profileImageUrl'?: string;
+}
+
diff --git a/src/api/openapi/models/optional-homework-submission.ts b/src/api/openapi/models/optional-homework-submission.ts
index 6c8ca303..8f21397c 100644
--- a/src/api/openapi/models/optional-homework-submission.ts
+++ b/src/api/openapi/models/optional-homework-submission.ts
@@ -16,6 +16,5 @@
export interface OptionalHomeworkSubmission {
'link'?: string;
- 'empty'?: boolean;
}
diff --git a/src/api/openapi/models/page-response-group-study-list-item.ts b/src/api/openapi/models/page-response-group-study-list-item-dto.ts
similarity index 74%
rename from src/api/openapi/models/page-response-group-study-list-item.ts
rename to src/api/openapi/models/page-response-group-study-list-item-dto.ts
index abc656fa..a31b52de 100644
--- a/src/api/openapi/models/page-response-group-study-list-item.ts
+++ b/src/api/openapi/models/page-response-group-study-list-item-dto.ts
@@ -15,10 +15,10 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { GroupStudyListItem } from './group-study-list-item';
+import type { GroupStudyListItemDto } from './group-study-list-item-dto';
-export interface PageResponseGroupStudyListItem {
- 'content'?: Array;
+export interface PageResponseGroupStudyListItemDto {
+ 'content'?: Array;
'page'?: number;
'size'?: number;
'totalElements'?: number;
diff --git a/src/api/openapi/models/page-response-my-group-study-apply-list-item.ts b/src/api/openapi/models/page-response-my-group-study-apply-list-item-dto.ts
similarity index 71%
rename from src/api/openapi/models/page-response-my-group-study-apply-list-item.ts
rename to src/api/openapi/models/page-response-my-group-study-apply-list-item-dto.ts
index ebba4169..6011d1b2 100644
--- a/src/api/openapi/models/page-response-my-group-study-apply-list-item.ts
+++ b/src/api/openapi/models/page-response-my-group-study-apply-list-item-dto.ts
@@ -15,10 +15,10 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { MyGroupStudyApplyListItem } from './my-group-study-apply-list-item';
+import type { MyGroupStudyApplyListItemDto } from './my-group-study-apply-list-item-dto';
-export interface PageResponseMyGroupStudyApplyListItem {
- 'content'?: Array;
+export interface PageResponseMyGroupStudyApplyListItemDto {
+ 'content'?: Array;
'page'?: number;
'size'?: number;
'totalElements'?: number;
diff --git a/src/api/openapi/models/participating-study-info.ts b/src/api/openapi/models/participating-study-info.ts
index 75e3168e..4603942e 100644
--- a/src/api/openapi/models/participating-study-info.ts
+++ b/src/api/openapi/models/participating-study-info.ts
@@ -15,7 +15,7 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
export interface ParticipatingStudyInfo {
/**
@@ -25,7 +25,7 @@ export interface ParticipatingStudyInfo {
/**
* 섬네일 이미지
*/
- 'thumbnail'?: Image;
+ 'thumbnail'?: ImageDto;
/**
* 스터디 제목 - 일대일 스터디인 경우 null
*/
diff --git a/src/api/openapi/models/payment-data.ts b/src/api/openapi/models/payment-data.ts
new file mode 100644
index 00000000..881efd59
--- /dev/null
+++ b/src/api/openapi/models/payment-data.ts
@@ -0,0 +1,31 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { CancelData } from './cancel-data';
+
+export interface PaymentData {
+ 'paymentKey'?: string;
+ 'orderId'?: string;
+ 'status'?: string;
+ 'method'?: string;
+ 'totalAmount'?: number;
+ 'balanceAmount'?: number;
+ 'approvedAt'?: string;
+ 'secret'?: string;
+ 'cancels'?: Array;
+}
+
diff --git a/src/api/openapi/models/payment-history-response.ts b/src/api/openapi/models/payment-history-response.ts
index c9122806..ab318435 100644
--- a/src/api/openapi/models/payment-history-response.ts
+++ b/src/api/openapi/models/payment-history-response.ts
@@ -26,6 +26,7 @@ export interface PaymentHistoryResponse {
export const PaymentHistoryResponseTypeEnum = {
PaymentRequested: 'PAYMENT_REQUESTED',
+ PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT',
PaymentSuccess: 'PAYMENT_SUCCESS',
PaymentFailed: 'PAYMENT_FAILED',
PaymentCanceled: 'PAYMENT_CANCELED',
diff --git a/src/api/openapi/models/payment-search-condition.ts b/src/api/openapi/models/payment-search-condition.ts
index 29391408..e517d839 100644
--- a/src/api/openapi/models/payment-search-condition.ts
+++ b/src/api/openapi/models/payment-search-condition.ts
@@ -24,6 +24,7 @@ export interface PaymentSearchCondition {
export const PaymentSearchConditionTypeEnum = {
PaymentRequested: 'PAYMENT_REQUESTED',
+ PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT',
PaymentSuccess: 'PAYMENT_SUCCESS',
PaymentFailed: 'PAYMENT_FAILED',
PaymentCanceled: 'PAYMENT_CANCELED',
diff --git a/src/api/openapi/models/peer-review-create-request.ts b/src/api/openapi/models/peer-review-create-request.ts
new file mode 100644
index 00000000..ba1be11e
--- /dev/null
+++ b/src/api/openapi/models/peer-review-create-request.ts
@@ -0,0 +1,27 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface PeerReviewCreateRequest {
+ /**
+ * Parent Peer Review ID - null if root
+ */
+ 'parent_id'?: number;
+ /**
+ * Peer review comment
+ */
+ 'comment': string;
+}
+
diff --git a/src/api/openapi/models/peer-review-creation-response-schema.ts b/src/api/openapi/models/peer-review-creation-response-schema.ts
new file mode 100644
index 00000000..e8ff72ee
--- /dev/null
+++ b/src/api/openapi/models/peer-review-creation-response-schema.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { PeerReviewCreationResponse } from './peer-review-creation-response';
+
+export interface PeerReviewCreationResponseSchema {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: PeerReviewCreationResponse;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/peer-review-creation-response.ts b/src/api/openapi/models/peer-review-creation-response.ts
new file mode 100644
index 00000000..a89e2373
--- /dev/null
+++ b/src/api/openapi/models/peer-review-creation-response.ts
@@ -0,0 +1,20 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface PeerReviewCreationResponse {
+ 'generatedPeerReviewId'?: number;
+}
+
diff --git a/src/api/openapi/models/peer-review-list-response.ts b/src/api/openapi/models/peer-review-list-response.ts
new file mode 100644
index 00000000..7bba69bd
--- /dev/null
+++ b/src/api/openapi/models/peer-review-list-response.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { PeerReviewResponse } from './peer-review-response';
+
+export interface PeerReviewListResponse {
+ /**
+ * Status Code
+ */
+ 'statusCode': number;
+ /**
+ * Timestamp
+ */
+ 'timestamp': string;
+ /**
+ * Content
+ */
+ 'content'?: Array;
+ /**
+ * Message
+ */
+ 'message'?: string;
+}
+
diff --git a/src/api/openapi/models/peer-review-response.ts b/src/api/openapi/models/peer-review-response.ts
new file mode 100644
index 00000000..4f11b012
--- /dev/null
+++ b/src/api/openapi/models/peer-review-response.ts
@@ -0,0 +1,31 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ImageDto } from './image-dto';
+
+export interface PeerReviewResponse {
+ 'peerReviewId'?: number;
+ 'homeworkId'?: number;
+ 'reviewerId'?: number;
+ 'reviewerNickname'?: string;
+ 'reviewerProfileImage'?: ImageDto;
+ 'comment'?: string;
+ 'createdAt'?: string;
+ 'updatedAt'?: string;
+ 'updated'?: boolean;
+}
+
diff --git a/src/api/openapi/models/peer-review-update-request.ts b/src/api/openapi/models/peer-review-update-request.ts
new file mode 100644
index 00000000..38169ad9
--- /dev/null
+++ b/src/api/openapi/models/peer-review-update-request.ts
@@ -0,0 +1,20 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+export interface PeerReviewUpdateRequest {
+ 'comment': string;
+}
+
diff --git a/src/api/openapi/models/resized-image.ts b/src/api/openapi/models/resized-image-dto.ts
similarity index 94%
rename from src/api/openapi/models/resized-image.ts
rename to src/api/openapi/models/resized-image-dto.ts
index 8975985b..0b9fa24d 100644
--- a/src/api/openapi/models/resized-image.ts
+++ b/src/api/openapi/models/resized-image-dto.ts
@@ -17,7 +17,7 @@
// @ts-ignore
import type { ImageSizeType } from './image-size-type';
-export interface ResizedImage {
+export interface ResizedImageDto {
/**
* 리사이징 이미지 ID
*/
diff --git a/src/api/openapi/models/study-payment-detail-response.ts b/src/api/openapi/models/study-payment-detail-response.ts
index e86d0d17..05247ad4 100644
--- a/src/api/openapi/models/study-payment-detail-response.ts
+++ b/src/api/openapi/models/study-payment-detail-response.ts
@@ -16,6 +16,9 @@
// May contain unused imports in some cases
// @ts-ignore
import type { PaymentHistoryResponse } from './payment-history-response';
+// May contain unused imports in some cases
+// @ts-ignore
+import type { VirtualAccountInfo } from './virtual-account-info';
export interface StudyPaymentDetailResponse {
'paymentId'?: number;
@@ -34,6 +37,7 @@ export interface StudyPaymentDetailResponse {
'tossOrderId'?: string;
'tossPaymentKey'?: string;
'receiptUrl'?: string;
+ 'virtualAccount'?: VirtualAccountInfo;
'createdAt'?: string;
'paidAt'?: string;
'canceledAt'?: string;
@@ -43,6 +47,7 @@ export interface StudyPaymentDetailResponse {
export const StudyPaymentDetailResponseStatusEnum = {
Requested: 'REQUESTED',
Pending: 'PENDING',
+ WaitingForDeposit: 'WAITING_FOR_DEPOSIT',
Success: 'SUCCESS',
Failed: 'FAILED',
Canceled: 'CANCELED'
diff --git a/src/api/openapi/models/study-payment-prepare-response.ts b/src/api/openapi/models/study-payment-prepare-response.ts
index 6ee93947..f221ec5b 100644
--- a/src/api/openapi/models/study-payment-prepare-response.ts
+++ b/src/api/openapi/models/study-payment-prepare-response.ts
@@ -13,14 +13,19 @@
*/
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ImageDto } from './image-dto';
export interface StudyPaymentPrepareResponse {
'paymentId'?: number;
'paymentCode'?: string;
'groupStudyId'?: number;
'groupStudyTitle'?: string;
+ 'groupStudyDescription'?: string;
'memberId'?: number;
'memberName'?: string;
+ 'groupStudyImage'?: ImageDto;
'amount'?: number;
'currency'?: string;
'pgProvider'?: string;
diff --git a/src/api/openapi/models/study-reservation-member.ts b/src/api/openapi/models/study-reservation-member-dto.ts
similarity index 78%
rename from src/api/openapi/models/study-reservation-member.ts
rename to src/api/openapi/models/study-reservation-member-dto.ts
index 386044d6..14a2e701 100644
--- a/src/api/openapi/models/study-reservation-member.ts
+++ b/src/api/openapi/models/study-reservation-member-dto.ts
@@ -15,12 +15,12 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { Image } from './image';
+import type { ImageDto } from './image-dto';
-export interface StudyReservationMember {
+export interface StudyReservationMemberDto {
'memberId'?: number;
'memberNickname'?: string;
- 'profileImage'?: Image;
+ 'profileImage'?: ImageDto;
'simpleIntroduction'?: string;
}
diff --git a/src/api/openapi/models/study-reservation-response-content.ts b/src/api/openapi/models/study-reservation-response-content.ts
index f74bec65..4b2b3b11 100644
--- a/src/api/openapi/models/study-reservation-response-content.ts
+++ b/src/api/openapi/models/study-reservation-response-content.ts
@@ -15,10 +15,10 @@
// May contain unused imports in some cases
// @ts-ignore
-import type { CursorResponseDtoStudyReservationMember } from './cursor-response-dto-study-reservation-member';
+import type { CursorResponseDtoStudyReservationMemberDto } from './cursor-response-dto-study-reservation-member-dto';
export interface StudyReservationResponseContent {
- 'members'?: CursorResponseDtoStudyReservationMember;
+ 'members'?: CursorResponseDtoStudyReservationMemberDto;
'totalMemberCount'?: number;
}
diff --git a/src/api/openapi/models/study-settlement-detail-response.ts b/src/api/openapi/models/study-settlement-detail-response.ts
index efddf93a..7fdf6c7a 100644
--- a/src/api/openapi/models/study-settlement-detail-response.ts
+++ b/src/api/openapi/models/study-settlement-detail-response.ts
@@ -27,6 +27,7 @@ export interface StudySettlementDetailResponse {
'taxRate'?: number;
'settlementAmount'?: number;
'scheduledAt'?: string;
+ 'approvedAt'?: string;
'settledAt'?: string;
'status'?: StudySettlementDetailResponseStatusEnum;
}
diff --git a/src/api/openapi/models/template-dto.ts b/src/api/openapi/models/template-dto.ts
new file mode 100644
index 00000000..71dd52b8
--- /dev/null
+++ b/src/api/openapi/models/template-dto.ts
@@ -0,0 +1,42 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Zeroone API v1
+ * v1
+ *
+ * The version of the OpenAPI document: v1
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import type { ButtonDto } from './button-dto';
+
+export interface TemplateDto {
+ 'senderKey'?: string;
+ 'templtCode'?: string;
+ 'templtName'?: string;
+ 'templtContent'?: string;
+ 'templateType'?: string;
+ 'templateEmType'?: string;
+ 'templtTitle'?: string;
+ 'templtSubtitle'?: string;
+ 'templtImageName'?: string;
+ 'templtImageUrl'?: string;
+ 'status'?: string;
+ 'inspStatus'?: string;
+ 'cdate'?: string;
+ 'block'?: string;
+ 'dormant'?: string;
+ 'securityFlag'?: string;
+ 'templateAdvert'?: string;
+ 'templateExtra'?: string;
+ 'buttons'?: Array;
+ 'comments'?: Array