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라면 셸에 위와 같은 명령어를 쳐주세요. + +스크린샷 2026-01-05 오전 12 47 35 + +이 명령어는 `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; +} + diff --git a/src/api/openapi/models/template-info.ts b/src/api/openapi/models/template-info.ts new file mode 100644 index 00000000..b7bc85d4 --- /dev/null +++ b/src/api/openapi/models/template-info.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. + */ + + + +export interface TemplateInfo { + 'REG'?: number; + 'REQ'?: number; + 'APR'?: number; + 'REJ'?: number; +} + diff --git a/src/api/openapi/models/templates-sync-status-dto.ts b/src/api/openapi/models/templates-sync-status-dto.ts new file mode 100644 index 00000000..06c8d2e0 --- /dev/null +++ b/src/api/openapi/models/templates-sync-status-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. + */ + + +// May contain unused imports in some cases +// @ts-ignore +import type { KakaoTemplateListResponseDto } from './kakao-template-list-response-dto'; + +export interface TemplatesSyncStatusDto { + 'isSynced'?: boolean; + 'syncStatus'?: string; + 'cachedTemplates'?: KakaoTemplateListResponseDto; + 'refreshedTemplates'?: KakaoTemplateListResponseDto; + 'lastSyncTime'?: string; + 'cachedCount'?: number; + 'refreshedCount'?: number; + 'message'?: string; +} + diff --git a/src/api/openapi/models/mission-task-dto.ts b/src/api/openapi/models/temporal-token.ts similarity index 82% rename from src/api/openapi/models/mission-task-dto.ts rename to src/api/openapi/models/temporal-token.ts index e0223f1d..1865b584 100644 --- a/src/api/openapi/models/mission-task-dto.ts +++ b/src/api/openapi/models/temporal-token.ts @@ -14,7 +14,7 @@ -export interface MissionTaskDto { - 'task'?: string; +export interface TemporalToken { + 'accessToken'?: string; } diff --git a/src/api/openapi/models/test-alimtalk-response-schema.ts b/src/api/openapi/models/test-alimtalk-response-schema.ts new file mode 100644 index 00000000..36714422 --- /dev/null +++ b/src/api/openapi/models/test-alimtalk-response-schema.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 { Info } from './info'; + +export interface TestAlimtalkResponseSchema { + 'code'?: number; + 'message'?: string; + 'info'?: Info; +} + diff --git a/src/api/openapi/models/test-alimtalk-send-request-dto.ts b/src/api/openapi/models/test-alimtalk-send-request-dto.ts new file mode 100644 index 00000000..b6b05236 --- /dev/null +++ b/src/api/openapi/models/test-alimtalk-send-request-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. + */ + + + +export interface TestAlimtalkSendRequestDto { + 'phoneNumber'?: string; + 'receiverName'?: string; + 'tplCode'?: string; + 'subject'?: string; + 'message'?: string; + 'fallbackMessage'?: string; +} + diff --git a/src/api/openapi/models/thread-comment-response-content.ts b/src/api/openapi/models/thread-comment-response-content.ts index 1b8a7676..a3956761 100644 --- a/src/api/openapi/models/thread-comment-response-content.ts +++ b/src/api/openapi/models/thread-comment-response-content.ts @@ -15,14 +15,14 @@ // May contain unused imports in some cases // @ts-ignore -import type { Image } from './image'; +import type { ImageDto } from './image-dto'; export interface ThreadCommentResponseContent { 'commentId'?: number; 'threadId'?: number; 'authorId'?: number; 'authorName'?: string; - 'image'?: Image; + 'image'?: ImageDto; 'content'?: string; 'isLeader'?: boolean; 'likesCount'?: number; diff --git a/src/api/openapi/models/thread-summary-response-content.ts b/src/api/openapi/models/thread-summary-response-content.ts index 43b4f4bd..a7f72aac 100644 --- a/src/api/openapi/models/thread-summary-response-content.ts +++ b/src/api/openapi/models/thread-summary-response-content.ts @@ -15,14 +15,14 @@ // May contain unused imports in some cases // @ts-ignore -import type { Image } from './image'; +import type { ImageDto } from './image-dto'; export interface ThreadSummaryResponseContent { 'threadId'?: number; 'groupStudyId'?: number; 'authorId'?: number; 'authorName'?: string; - 'image'?: Image; + 'image'?: ImageDto; 'content'?: string; 'isLeader'?: boolean; 'likesCount'?: number; diff --git a/src/api/openapi/models/toss-webhook-payload.ts b/src/api/openapi/models/toss-webhook-payload.ts new file mode 100644 index 00000000..bd3385c4 --- /dev/null +++ b/src/api/openapi/models/toss-webhook-payload.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. + */ + + +// May contain unused imports in some cases +// @ts-ignore +import type { CancelData } from './cancel-data'; +// May contain unused imports in some cases +// @ts-ignore +import type { PaymentData } from './payment-data'; + +export interface TossWebhookPayload { + 'eventType'?: string; + 'createdAt'?: string; + 'data'?: PaymentData; + 'paymentStatusChanged'?: boolean; + 'latestCancel'?: CancelData; +} + diff --git a/src/api/openapi/models/update-group-study-member-progress-request.ts b/src/api/openapi/models/update-group-study-member-discretion-request.ts similarity index 81% rename from src/api/openapi/models/update-group-study-member-progress-request.ts rename to src/api/openapi/models/update-group-study-member-discretion-request.ts index f67f4dbb..01a9eac8 100644 --- a/src/api/openapi/models/update-group-study-member-progress-request.ts +++ b/src/api/openapi/models/update-group-study-member-discretion-request.ts @@ -14,9 +14,8 @@ -export interface UpdateGroupStudyMemberProgressRequest { +export interface UpdateGroupStudyMemberDiscretionRequest { 'targetMemberId': number; - 'gradeId': number; 'reason'?: string; } diff --git a/src/api/openapi/models/user-transaction-detail-response.ts b/src/api/openapi/models/user-transaction-detail-response.ts index 84c01978..40c4c9dd 100644 --- a/src/api/openapi/models/user-transaction-detail-response.ts +++ b/src/api/openapi/models/user-transaction-detail-response.ts @@ -23,6 +23,7 @@ export interface UserTransactionDetailResponse { export const UserTransactionDetailResponseTransactionTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/user-transaction-list-response.ts b/src/api/openapi/models/user-transaction-list-response.ts index a43f4122..8e320629 100644 --- a/src/api/openapi/models/user-transaction-list-response.ts +++ b/src/api/openapi/models/user-transaction-list-response.ts @@ -32,6 +32,7 @@ export interface UserTransactionListResponse { export const UserTransactionListResponseLatestTransactionTypeEnum = { PaymentRequested: 'PAYMENT_REQUESTED', + PaymentWaitingForDeposit: 'PAYMENT_WAITING_FOR_DEPOSIT', PaymentSuccess: 'PAYMENT_SUCCESS', PaymentFailed: 'PAYMENT_FAILED', PaymentCanceled: 'PAYMENT_CANCELED', diff --git a/src/api/openapi/models/virtual-account-info.ts b/src/api/openapi/models/virtual-account-info.ts new file mode 100644 index 00000000..3ed4e48c --- /dev/null +++ b/src/api/openapi/models/virtual-account-info.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 VirtualAccountInfo { + 'accountNumber'?: string; + 'bankCode'?: string; + 'bankName'?: string; + 'customerName'?: string; + 'dueDate'?: string; + 'expired'?: boolean; +} + diff --git a/src/app/(admin)/admin/detail/[id]/layout.tsx b/src/app/(admin)/admin/detail/[id]/layout.tsx index 66947cef..051c2c73 100644 --- a/src/app/(admin)/admin/detail/[id]/layout.tsx +++ b/src/app/(admin)/admin/detail/[id]/layout.tsx @@ -1,6 +1,6 @@ import { ArrowLeftIcon } from 'lucide-react'; import Link from 'next/link'; -import AdminDetailSideBar from '@/widgets/admin/ui/admin-detail-side-bar'; +import AdminDetailSideBar from '@/components/layout/sidebar/admin-detail-sidebar'; export default async function AdminDetailLayout({ children, diff --git a/src/app/(admin)/admin/sales-management/layout.tsx b/src/app/(admin)/admin/sales-management/layout.tsx new file mode 100644 index 00000000..24729df2 --- /dev/null +++ b/src/app/(admin)/admin/sales-management/layout.tsx @@ -0,0 +1,37 @@ +'use client'; + +import { useRouter, usePathname } from 'next/navigation'; +import React from 'react'; +import Tabs from '@/components/ui/tabs'; + +export default function SalesManagementLayout({ + children, +}: { + children: React.ReactNode; +}) { + const router = useRouter(); + const pathname = usePathname(); + + const tabs = [ + { label: '결제 및 환불', value: 'payment-refund' }, + { label: '정산', value: 'settlement' }, + ]; + + const activeTab = pathname.includes('settlement') + ? 'settlement' + : 'payment-refund'; + + const handleTabChange = (value: string) => { + router.push(`/admin/sales-management/${value}`); + }; + + return ( +
+
매출 관리
+ + + + {children} +
+ ); +} diff --git a/src/app/(admin)/admin/sales-management/payment-refund/page.tsx b/src/app/(admin)/admin/sales-management/payment-refund/page.tsx new file mode 100644 index 00000000..ef860b11 --- /dev/null +++ b/src/app/(admin)/admin/sales-management/payment-refund/page.tsx @@ -0,0 +1,390 @@ +'use client'; + +import { format } from 'date-fns'; +import React, { useState } from 'react'; +import { DateRange } from 'react-day-picker'; +import { + AdminTransactionListResponse, + PaymentSearchConditionTypeEnum, +} from '@/api/openapi'; +import AdminForcedCancellationModal from '@/components/modals/admin-forced-cancellation-modal'; +import AdminRefundApprovalModal from '@/components/modals/admin-refund-approval-modal'; +import Badge from '@/components/ui/badge'; +import Button from '@/components/ui/button'; +import DatePicker from '@/components/ui/date-picker'; +import SingleDropdown from '@/components/ui/dropdown/single'; +import { BaseInput } from '@/components/ui/input'; +import Pagination from '@/components/ui/pagination'; +import { useGetTransactionsForAdmin } from '@/hooks/queries/admin-payment-api'; +import { formatToKST } from '@/utils/time'; + +const PAYMENT_HISTORY_TYPE_MAP: Record< + NonNullable, + { + label: string; + color: 'primary' | 'red' | 'green' | 'blue' | 'orange' | 'gray'; + } +> = { + PAYMENT_REQUESTED: { label: '결제대기', color: 'blue' }, + PAYMENT_WAITING_FOR_DEPOSIT: { label: '입금대기', color: 'blue' }, + PAYMENT_SUCCESS: { label: '결제완료', color: 'green' }, + PAYMENT_FAILED: { label: '결제실패', color: 'red' }, + PAYMENT_CANCELED: { label: '결제취소', color: 'red' }, + REFUND_REQUESTED: { label: '환불요청', color: 'blue' }, + REFUND_APPROVED: { label: '환불승인', color: 'orange' }, + REFUND_COMPLETED: { label: '환불완료', color: 'green' }, + REFUND_REJECTED: { label: '환불반려', color: 'gray' }, + REFUND_CANCELED: { label: '환불취소', color: 'red' }, + REFUND_FAILED: { label: '환불실패', color: 'red' }, +}; + +const STUDY_STATUS_MAP: Record< + NonNullable, + string +> = { + RECRUITING: '진행전', + IN_PROGRESS: '진행중', + COMPLETED: '완료', +}; + +export default function PaymentRefundPage() { + const [keyword, setKeyword] = useState(''); + const [dateRange, setDateRange] = useState({ + from: undefined, + to: undefined, + }); + const [page, setPage] = useState(1); + const [type, setType] = useState( + undefined, + ); + + const typeOptions = [ + { + label: '전체', + value: undefined, + }, + ...Object.keys(PAYMENT_HISTORY_TYPE_MAP).map((key) => ({ + label: + PAYMENT_HISTORY_TYPE_MAP[key as keyof typeof PAYMENT_HISTORY_TYPE_MAP] + .label, + value: key, + })), + ]; + + const isPaymentId = keyword.startsWith('PAY-'); + + const { data: transactionsData } = useGetTransactionsForAdmin({ + type, + startDate: + dateRange?.from && dateRange.from.toISOString() + ? format(formatToKST(dateRange.from.toISOString()), 'yyyy-MM-dd') + : undefined, + endDate: + dateRange?.to && dateRange.to.toISOString() + ? format(formatToKST(dateRange.to.toISOString()), 'yyyy-MM-dd') + : undefined, + studyTitle: !isPaymentId && keyword ? keyword : undefined, + paymentCode: isPaymentId && keyword ? keyword : undefined, + page: page - 1, + size: 20, + }); + + const list = transactionsData?.content || []; + + return ( + <> + {/* 필터 영역 */} +
+
+ {/* 상태 필터 드롭다운 */} +
+ + setType(value as PaymentSearchConditionTypeEnum) + } + placeholder="전체" + size="m" + /> +
+ + setDateRange(range as DateRange)} + /> +
+ + {/* 검색 */} +
+ setKeyword(e.target.value)} + /> +
+
+ + {/* 테이블 */} +
+ + + + + + + + + + + + + {list && list.length > 0 ? ( + list.map((transaction, index) => { + const statusConfig = transaction.paymentHistoryType + ? PAYMENT_HISTORY_TYPE_MAP[transaction.paymentHistoryType] + : null; + + if (!statusConfig) return null; + + return ( + + {/* 거래 ID */} + + + {/* 스터디명 */} + + + {/* 결제자 */} + + + {/* 결제 내역 */} + + + {/* 상태 */} + + + {/* 일시 */} + + + {/* 액션 버튼 */} + + + ); + }) + ) : ( + + + + )} + +
+ 거래 ID + + 스터디명(진행 상태) + + 결제자(ID) + + 결제 내역(결제 수단) + + 상태 + + 일시 + +
+ + {transaction.paymentCode || '-'} + + + + {`${transaction.groupStudyName} (${ + STUDY_STATUS_MAP[transaction.groupStudyStatus] + })`} + + + + {transaction.paymentMemberName || '-'}( + {transaction.paymentMemberId || '-'}) + + + + {transaction.transactionAmount?.toLocaleString() || 0} + 원( + {transaction.paymentMethod || '-'}) + + + + {statusConfig.label} + + + + {formatToKST(transaction.transactionedAt) + ? format( + formatToKST(transaction.transactionedAt)!, + 'yyyy.MM.dd HH:mm', + ) + : '-'} + + + +
+

+ 매출 내역이 없습니다. +

+
+
+ + {/* 페이지네이션 */} +
+ + 총 {transactionsData?.totalElements || 0}건 + + +
+
+ + ); +} + +function SalesActionButtons({ + paymentId, + paymentReceiptUrl, + paymentHistoryType, + groupStudyName, + paymentMemberName, + paymentMemberId, + transactionAmount, +}: Pick< + AdminTransactionListResponse, + | 'paymentId' + | 'paymentReceiptUrl' + | 'paymentHistoryType' + | 'groupStudyName' + | 'paymentMemberName' + | 'paymentMemberId' + | 'transactionAmount' +>) { + switch (paymentHistoryType) { + case 'PAYMENT_SUCCESS': + return ( +
+ + +
+ ); + + case 'REFUND_REQUESTED': + return ( +
+ + +
+ ); + + case 'REFUND_REJECTED': + return ; + + default: + return null; + } +} + +function ReceiptButton({ + paymentReceiptUrl, +}: Pick) { + const handleReceiptView = () => { + if (paymentReceiptUrl) { + window.open(paymentReceiptUrl, '_blank'); + } + }; + + return ( + + ); +} + +function ForcedCancellationButton({ + paymentId, +}: Pick) { + const [open, setOpen] = useState(false); + + return ( + <> + + + + ); +} + +function RefundButton({ + groupStudyName, + paymentMemberName, + paymentMemberId, + transactionAmount, +}: Pick< + AdminTransactionListResponse, + | 'groupStudyName' + | 'paymentMemberName' + | 'paymentMemberId' + | 'transactionAmount' +>) { + const [open, setOpen] = useState(false); + + return ( + <> + + + + ); +} diff --git a/src/app/(admin)/admin/sales-management/settlement/page.tsx b/src/app/(admin)/admin/sales-management/settlement/page.tsx new file mode 100644 index 00000000..fcc1c3c5 --- /dev/null +++ b/src/app/(admin)/admin/sales-management/settlement/page.tsx @@ -0,0 +1,301 @@ +'use client'; + +import { format } from 'date-fns'; +import React, { useState } from 'react'; +import { DateRange } from 'react-day-picker'; +import { + SettlementSearchConditionStatusEnum, + StudySettlementSummaryResponse, +} from '@/api/openapi/models'; +import AdminApproveSettlementModal from '@/components/modals/admin-approve-settlement-modal'; +import AdminCompleteSettlementModal from '@/components/modals/admin-complete-settlement-modal'; +import Badge from '@/components/ui/badge'; +import Button from '@/components/ui/button'; +import DatePicker from '@/components/ui/date-picker'; +import SingleDropdown from '@/components/ui/dropdown/single'; +import { BaseInput } from '@/components/ui/input'; +import Pagination from '@/components/ui/pagination'; +import { useGetSettlementsForAdmin } from '@/hooks/queries/admin-settlement-api'; +import { formatToKST } from '@/utils/time'; + +const SETTLEMENT_STATUS_MAP: Record< + StudySettlementSummaryResponse['status'], + { + label: string; + color: 'primary' | 'red' | 'green' | 'blue' | 'orange' | 'gray'; + } +> = { + PENDING: { label: '정산대기', color: 'blue' }, + APPROVED: { label: '정산승인', color: 'orange' }, + COMPLETED: { label: '정산완료', color: 'green' }, +}; + +export default function SettlementPage() { + const [status, setStatus] = useState< + SettlementSearchConditionStatusEnum | undefined + >(undefined); + const [keyword, setKeyword] = useState(''); + const [dateRange, setDateRange] = useState({ + from: undefined, + to: undefined, + }); + const [page, setPage] = useState(1); + + // API 호출 + const { data } = useGetSettlementsForAdmin({ + startDate: + dateRange?.from && dateRange.from.toISOString() + ? format(formatToKST(dateRange.from.toISOString()), 'yyyy-MM-dd') + : undefined, + endDate: + dateRange?.to && dateRange.to.toISOString() + ? format(formatToKST(dateRange.to.toISOString()), 'yyyy-MM-dd') + : undefined, + studyTitle: keyword || undefined, + settlementCode: keyword || undefined, + status, + page: page - 1, + size: 20, + }); + + const settlements = data?.content ?? []; + + const statusOptions = [ + { value: undefined, label: '전체' }, + ...Object.entries(SETTLEMENT_STATUS_MAP).map(([key, value]) => ({ + value: key, + label: value.label, + })), + ]; + + return ( + <> + {/* 필터 영역 */} +
+
+ {/* 상태 필터 드롭다운 */} +
+ + setStatus( + value as SettlementSearchConditionStatusEnum | undefined, + ) + } + placeholder="전체" + size="m" + /> +
+ + setDateRange(range as DateRange)} + /> +
+ + {/* 검색 */} +
+ setKeyword(e.target.value)} + /> +
+
+ + {/* 테이블 */} +
+ + + + + + + + + + + + + {settlements && settlements.length > 0 ? ( + settlements.map((settlement, index) => ( + + {/* 정산 ID */} + + + {/* 스터디명 */} + + + {/* 개설자 */} + + + {/* 정산 내역 */} + + + {/* 상태 */} + + + {/* 일시 */} + + + {/* 액션 버튼 */} + + + )) + ) : ( + + + + )} + +
+ 정산 ID + + 스터디명(진행 상태) + + 개설자(ID) + + 정산 내역 + + 상태 + + 정산일시 + +
+ + {settlement.settlementCode} + + + + {settlement.groupStudyTitle} + + + + {settlement.leaderName}({settlement.leaderId}) + + + + {settlement.settlementAmount?.toLocaleString()}원 + + + + {SETTLEMENT_STATUS_MAP[settlement.status].label} + + + + {formatToKST(settlement.settledAt) + ? format( + formatToKST(settlement.settledAt)!, + 'yyyy.MM.dd HH:mm', + ) + : '-'} + + + +
+

+ 정산 내역이 없습니다. +

+
+
+ + {/* 페이지네이션 */} +
+ + 총 {data?.totalElements ?? 0}건 + + +
+
+ + ); +} + +function SettlementActionButtons({ + settlementId, + status, +}: Pick) { + switch (status) { + case 'PENDING': + return ; + + case 'APPROVED': + return ; + + default: + return null; + } +} + +function ApproveSettlementButton({ + settlementId, +}: Pick) { + const [open, setOpen] = useState(false); + + return ( + <> + + + + + ); +} + +function CompletedSettlementButton({ + settlementId, +}: Pick) { + const [open, setOpen] = useState(false); + + return ( + <> + + + + + ); +} diff --git a/src/app/(admin)/layout.tsx b/src/app/(admin)/layout.tsx index 8d5409a0..cb417f62 100644 --- a/src/app/(admin)/layout.tsx +++ b/src/app/(admin)/layout.tsx @@ -5,8 +5,8 @@ import { clsx } from 'clsx'; import type { Metadata } from 'next'; import localFont from 'next/font/local'; import PageViewTracker from '@/components/analytics/page-view-tracker'; +import AdminSideBar from '@/components/layout/sidebar/admin-sidebar'; import MainProvider from '@/providers'; -import AdminSideBar from '@/widgets/admin/ui/admin-side-bar'; export const metadata: Metadata = { title: '관리자 - ZERO-ONE', diff --git a/src/app/(landing)/page.tsx b/src/app/(landing)/page.tsx index 98b0e847..8052f4f1 100644 --- a/src/app/(landing)/page.tsx +++ b/src/app/(landing)/page.tsx @@ -220,7 +220,7 @@ export default async function Landing() {

- 당신을 위한 스터디가 준비중입니다! + 당신을 위한 스터디가 준비중입니다. {/* 연락드릴게요! */}

@@ -246,7 +246,7 @@ export default async function Landing() {