Skip to content

Latest commit

ย 

History

History
628 lines (464 loc) ยท 14.6 KB

File metadata and controls

628 lines (464 loc) ยท 14.6 KB

์•„์นด๋ฐ๋ฏธ API

์•„์นด๋ฐ๋ฏธ๋Š” Altsis ์‹œ์Šคํ…œ์˜ ์ตœ์ƒ์œ„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ๊ฐ ์•„์นด๋ฐ๋ฏธ๋Š” ๋…๋ฆฝ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์•„์นด๋ฐ๋ฏธ ๋‚ด์— ํ•™๊ต, ์‚ฌ์šฉ์ž, ํ•™๊ธฐ ๋“ฑ์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŠธ ํŒŒ์ผ: backend/src/routes/academies.js ์ปจํŠธ๋กค๋Ÿฌ ํŒŒ์ผ: backend/src/controllers/academies.js ๋ชจ๋ธ ํŒŒ์ผ: backend/src/models/Academy.js


์—”๋“œํฌ์ธํŠธ ์š”์•ฝ

๋ฉ”์„œ๋“œ ๊ฒฝ๋กœ ์„ค๋ช… ๊ถŒํ•œ
POST /api/academies ์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ owner
GET /api/academies ์•„์นด๋ฐ๋ฏธ ๋ชฉ๋ก/์ƒ์„ธ ์กฐํšŒ ์ธ์ฆ ๋ถˆ์š”(๋‹จ์ผ) / owner|admin(๋ชฉ๋ก)
PUT /api/academies/:academyId/activate ์•„์นด๋ฐ๋ฏธ ํ™œ์„ฑํ™” owner
PUT /api/academies/:academyId/inactivate ์•„์นด๋ฐ๋ฏธ ๋น„ํ™œ์„ฑํ™” owner
PUT /api/academies/:academyId/email ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ owner
PUT /api/academies/:academyId/tel ์ „ํ™”๋ฒˆํ˜ธ ๋ณ€๊ฒฝ owner
PUT /api/academies/:academyId/chat ์ฑ„ํŒ… ์„ค์ • owner
PUT /api/academies/:academyId/ai AI ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™” owner
PUT /api/academies/:academyId/ai/apikey AI API ํ‚ค ์„ค์ • owner
GET /api/academies/:academyId/ai/apikey AI API ํ‚ค ์กด์žฌ ํ™•์ธ owner
PUT /api/academies/:academyId/ai/model AI ๋ชจ๋ธ ์„ค์ • owner
POST /api/academies/:academyId/backup ๋ฐฑ์—… ์ƒ์„ฑ owner|admin|manager
GET /api/academies/:academyId/backup ๋ฐฑ์—… ๋ชฉ๋ก/์ƒ์„ธ ์กฐํšŒ owner|admin|manager
PUT /api/academies/:academyId/restore ๋ฐฑ์—… ๋ณต์› owner|admin|manager
DELETE /api/academies/:academyId/backup ๋ฐฑ์—… ์‚ญ์ œ owner|admin|manager
GET /api/academies/:academyId/:docType/:docId? ๋„ํ๋จผํŠธ ์กฐํšŒ owner|admin
DELETE /api/academies/:academyId ์•„์นด๋ฐ๋ฏธ ์‚ญ์ œ owner

์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ

์•„์นด๋ฐ๋ฏธ์™€ ํ•ด๋‹น ์•„์นด๋ฐ๋ฏธ์˜ ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ๋™์‹œ์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ ์‹œ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค({academyId}-db)๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

POST /api/academies

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
academyId string O ์•„์นด๋ฐ๋ฏธ ๊ณ ์œ  ID (์˜๋ฌธ, ์ˆซ์ž, ํ•˜์ดํ”ˆ)
academyName string O ์•„์นด๋ฐ๋ฏธ ์ด๋ฆ„
adminId string O ๊ด€๋ฆฌ์ž ์‚ฌ์šฉ์ž ID
adminName string O ๊ด€๋ฆฌ์ž ์ด๋ฆ„
email string X ์•„์นด๋ฐ๋ฏธ ์ด๋ฉ”์ผ
tel string X ์•„์นด๋ฐ๋ฏธ ์ „ํ™”๋ฒˆํ˜ธ

์š”์ฒญ ์˜ˆ์‹œ

{
  "academyId": "my-academy",
  "academyName": "๋‚˜์˜ ์•„์นด๋ฐ๋ฏธ",
  "adminId": "admin01",
  "adminName": "๊ด€๋ฆฌ์ž",
  "email": "admin@example.com",
  "tel": "02-1234-5678"
}

์‘๋‹ต (200)

{
  "academy": {
    "_id": "507f1f77bcf86cd799439011",
    "academyId": "my-academy",
    "academyName": "๋‚˜์˜ ์•„์นด๋ฐ๋ฏธ",
    "email": "admin@example.com",
    "tel": "02-1234-5678",
    "adminId": "admin01",
    "adminName": "๊ด€๋ฆฌ์ž",
    "isActivated": true,
    "chatEnabled": false,
    "aiEnabled": false,
    "aiModel": "gemini-3.6-flash",
    "createdAt": "2024-01-15T09:00:00.000Z",
    "updatedAt": "2024-01-15T09:00:00.000Z"
  },
  "admin": {
    "userId": "admin01",
    "userName": "๊ด€๋ฆฌ์ž",
    "password": "์ž๋™์ƒ์„ฑ๋œ๋น„๋ฐ€๋ฒˆํ˜ธ"
  }
}

์—๋Ÿฌ ์‘๋‹ต

์ƒํƒœ ์ฝ”๋“œ ๋ฉ”์‹œ์ง€ ์„ค๋ช…
400 FIELD_REQUIRED({ํ•„๋“œ๋ช…}) ํ•„์ˆ˜ ํ•„๋“œ ๋ˆ„๋ฝ
400 FIELD_INVALID({ํ•„๋“œ๋ช…}) ํ•„๋“œ ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์‹คํŒจ
409 FIELD_IN_USE(academyId) ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ ์•„์นด๋ฐ๋ฏธ ID

์•„์นด๋ฐ๋ฏธ ์กฐํšŒ

์•„์นด๋ฐ๋ฏธ๋ฅผ ๋‹จ์ผ ๋˜๋Š” ๋ชฉ๋ก์œผ๋กœ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

GET /api/academies

๊ถŒํ•œ: ๋‹จ์ผ ์กฐํšŒ ์‹œ ์ธ์ฆ ๋ถˆ์š” (๊ฒŒ์ŠคํŠธ ์ ‘๊ทผ ๊ฐ€๋Šฅ), ๋ชฉ๋ก ์กฐํšŒ ์‹œ owner ๋˜๋Š” admin

์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
academyId string X ํŠน์ • ์•„์นด๋ฐ๋ฏธ ID๋กœ ์กฐํšŒ

๋‹จ์ผ ์กฐํšŒ ์‘๋‹ต (200)

{
  "academy": {
    "_id": "507f1f77bcf86cd799439011",
    "academyId": "my-academy",
    "academyName": "๋‚˜์˜ ์•„์นด๋ฐ๋ฏธ",
    "isActivated": true,
    "chatEnabled": false,
    "aiEnabled": false,
    "aiModel": "gemini-3.6-flash"
  }
}

๋ชฉ๋ก ์กฐํšŒ ์‘๋‹ต (200)

{
  "academies": [
    {
      "_id": "507f1f77bcf86cd799439011",
      "academyId": "academy-a",
      "academyName": "์•„์นด๋ฐ๋ฏธ A",
      "isActivated": true
    },
    {
      "_id": "507f1f77bcf86cd799439012",
      "academyId": "academy-b",
      "academyName": "์•„์นด๋ฐ๋ฏธ B",
      "isActivated": false
    }
  ]
}

์—๋Ÿฌ ์‘๋‹ต

์ƒํƒœ ์ฝ”๋“œ ๋ฉ”์‹œ์ง€ ์„ค๋ช…
400 FIELD_REQUIRED(academyID) ๊ฒŒ์ŠคํŠธ ์ ‘๊ทผ ์‹œ academyId ํŒŒ๋ผ๋ฏธํ„ฐ ๋ˆ„๋ฝ
403 PERMISSION_DENIED ๊ถŒํ•œ ๋ถ€์กฑ
404 ACADEMY_NOT_FOUND ์•„์นด๋ฐ๋ฏธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

์•„์นด๋ฐ๋ฏธ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”

์•„์นด๋ฐ๋ฏธ์˜ ํ™œ์„ฑํ™” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”๋œ ์•„์นด๋ฐ๋ฏธ์—๋Š” ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ™œ์„ฑํ™”

PUT /api/academies/:academyId/activate

๊ถŒํ•œ: owner

๋น„ํ™œ์„ฑํ™”

PUT /api/academies/:academyId/inactivate

๊ถŒํ•œ: owner

๊ฒฝ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์„ค๋ช…
academyId string ์•„์นด๋ฐ๋ฏธ ID

์‘๋‹ต (200)

{
  "academy": {
    "_id": "507f1f77bcf86cd799439011",
    "academyId": "my-academy",
    "isActivated": true
  }
}

์ด๋ฉ”์ผ ๋ณ€๊ฒฝ

PUT /api/academies/:academyId/email

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
email string X ์ƒˆ ์ด๋ฉ”์ผ ์ฃผ์†Œ (๋นˆ ๊ฐ’์ด๋ฉด ์‚ญ์ œ)

์š”์ฒญ ์˜ˆ์‹œ

{
  "email": "new-email@example.com"
}

์‘๋‹ต (200)

{
  "academy": {
    "_id": "...",
    "email": "new-email@example.com"
  }
}

์ „ํ™”๋ฒˆํ˜ธ ๋ณ€๊ฒฝ

PUT /api/academies/:academyId/tel

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tel string X ์ƒˆ ์ „ํ™”๋ฒˆํ˜ธ (๋นˆ ๊ฐ’์ด๋ฉด ์‚ญ์ œ)

์ฑ„ํŒ… ์„ค์ •

์•„์นด๋ฐ๋ฏธ์˜ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” ์ƒํƒœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

PUT /api/academies/:academyId/chat

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
chatEnabled boolean X true(ํ™œ์„ฑํ™”) / false(๋น„ํ™œ์„ฑํ™”). ๋ฏธ์ œ๊ณต ์‹œ ํ† ๊ธ€

์š”์ฒญ ์˜ˆ์‹œ

{
  "chatEnabled": true
}

์‘๋‹ต (200)

{
  "academy": {
    "_id": "...",
    "chatEnabled": true
  }
}

AI ์„ค์ •

AI ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”

PUT /api/academies/:academyId/ai

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
aiEnabled boolean X true(ํ™œ์„ฑํ™”) / false(๋น„ํ™œ์„ฑํ™”). ๋ฏธ์ œ๊ณต ์‹œ ํ† ๊ธ€

AI API ํ‚ค ์„ค์ •

PUT /api/academies/:academyId/ai/apikey

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
apiKey string O AI ์„œ๋น„์Šค API ํ‚ค
aiModel string X AI ๋ชจ๋ธ๋ช…
aiProvider string X AI ์ œ๊ณต์ž (openai / anthropic / gemini)

์‘๋‹ต (200)

{
  "success": true
}

์ฐธ๊ณ : aiApiKey๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด API ์กฐํšŒ ์‘๋‹ต์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (select: false).

AI API ํ‚ค ์กด์žฌ ํ™•์ธ

GET /api/academies/:academyId/ai/apikey

๊ถŒํ•œ: owner

์‘๋‹ต (200)

{
  "hasApiKey": true,
  "apiKeyHint": "AIzaโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขKzuw",
  "aiProvider": "gemini",
  "aiModel": "gemini-3.6-flash"
}

์ฐธ๊ณ : ์ „์ฒด API ํ‚ค๋Š” ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. apiKeyHint๋Š” ์•žยท๋’ค ์ผ๋ถ€๋งŒ ๋‚จ๊ธด ๋งˆ์Šคํ‚น ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

AI ๋ชจ๋ธ ์„ค์ •

PUT /api/academies/:academyId/ai/model

๊ถŒํ•œ: owner

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
aiModel string O ์‚ฌ์šฉํ•  AI ๋ชจ๋ธ๋ช… (์˜ˆ: gemini-3.6-flash)

AI ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„ ์„ค์ •

PUT /api/academies/:academyId/ai/usage-limits

๊ถŒํ•œ: owner, admin, manager (admin/manager๋Š” ๋ณธ์ธ ์•„์นด๋ฐ๋ฏธ๋งŒ)

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
enabled boolean O 1์ธ ์ผ์ผ Alt ํ•œ๋„ ์‚ฌ์šฉ ์—ฌ๋ถ€
dailyUserAlts number ์กฐ๊ฑด๋ถ€ 1์ธ๋‹น ์ผ(UTC) Alt ํ•œ๋„. 1 Alt = 10,000 ํ† ํฐ. enabled=true์ด๋ฉด 0๋ณด๋‹ค ์ปค์•ผ ํ•จ

๋ฐฑ์—… ๊ด€๋ฆฌ

๋ฐฑ์—… ์ƒ์„ฑ

์ง€์ •ํ•œ ๋ชจ๋ธ์˜ ๋„ํ๋จผํŠธ๋ฅผ ์ „์ฒด ์กฐํšŒํ•˜์—ฌ S3์— JSON ํŒŒ์ผ๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

POST /api/academies/:academyId/backup

๊ถŒํ•œ: owner, admin ๋˜๋Š” manager

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
models object[] O ๋ฐฑ์—…ํ•  ๋ชจ๋ธ ๋ชฉ๋ก
models[].title string O ๋ชจ๋ธ๋ช… (users, schools, seasons, registrations, syllabuses, enrollments, forms, notifications, archives, chatRooms, chatMessages)

์š”์ฒญ ์˜ˆ์‹œ

{
  "models": [
    { "title": "users" },
    { "title": "schools" },
    { "title": "seasons" },
    { "title": "registrations" }
  ]
}

์‘๋‹ต (200)

{
  "logs": [
    "โ”Œ [Backup] my-academy/backup/2024-01-15_09:00:00.000",
    "โ”œ requested by admin01(my-academy)",
    "โ”‚โ”Œ backup users...",
    "โ”‚โ”œ reading users... 150",
    "โ”‚โ”œ writing users...",
    "โ”‚โ”” backup users is done(1234ms)",
    "โ”” [Backup] my-academy/backup/2024-01-15_09:00:00.000 is done(5678ms)"
  ]
}

๋ฐฑ์—… ๋ชฉ๋ก ์กฐํšŒ

GET /api/academies/:academyId/backup

๊ถŒํ•œ: owner, admin ๋˜๋Š” manager

์‘๋‹ต (200)

{
  "backupList": [
    {
      "title": "2024-01-15_09:00:00.000",
      "key": "my-academy/backup/2024-01-15_09:00:00.000/"
    },
    {
      "title": "2024-01-14_18:30:00.000",
      "key": "my-academy/backup/2024-01-14_18:30:00.000/"
    }
  ]
}

๋ฐฑ์—… ์ƒ์„ธ ์กฐํšŒ

GET /api/academies/:academyId/backup?title={๋ฐฑ์—…์ œ๋ชฉ}

๊ถŒํ•œ: owner, admin ๋˜๋Š” manager

์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
title string O ๋ฐฑ์—… ์ œ๋ชฉ (ํƒ€์ž„์Šคํƒฌํ”„)

์‘๋‹ต (200)

{
  "backup": [
    {
      "title": "users.json",
      "size": 102400,
      "key": "my-academy/backup/2024-01-15_09:00:00.000/users.json",
      "lastModified": "2024-01-15T09:00:05.000Z"
    },
    {
      "title": "schools.json",
      "size": 8192,
      "key": "my-academy/backup/2024-01-15_09:00:00.000/schools.json",
      "lastModified": "2024-01-15T09:00:03.000Z"
    }
  ]
}

๋ฐฑ์—… ๋ณต์›

ํŠน์ • ๋ชจ๋ธ์˜ ๋„ํ๋จผํŠธ๋ฅผ ์ „๋ถ€ ๊ต์ฒดํ•˜์—ฌ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

PUT /api/academies/:academyId/restore

๊ถŒํ•œ: owner, admin ๋˜๋Š” manager

์ฃผ์˜: ๋ณต์› ์‹œ ํ•ด๋‹น ๋ชจ๋ธ์˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋œ ํ›„ ๋ฐฑ์—… ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ณธ๋ฌธ

ํ•„๋“œ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
model string O ๋ณต์›ํ•  ๋ชจ๋ธ๋ช…
documents object[] O ๋ณต์›ํ•  ๋„ํ๋จผํŠธ ๋ฐฐ์—ด

๋ฐฑ์—… ์‚ญ์ œ

DELETE /api/academies/:academyId/backup?title={๋ฐฑ์—…์ œ๋ชฉ}

๊ถŒํ•œ: owner, admin ๋˜๋Š” manager

์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
title string O ์‚ญ์ œํ•  ๋ฐฑ์—… ์ œ๋ชฉ

๋„ํ๋จผํŠธ ์กฐํšŒ

์•„์นด๋ฐ๋ฏธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์ž„์˜ ์ปฌ๋ ‰์…˜์„ ์ง์ ‘ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋ฐ ๋””๋ฒ„๊น… ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

GET /api/academies/:academyId/:docType/:docId?

๊ถŒํ•œ: owner ๋˜๋Š” admin

๊ฒฝ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
academyId string O ์•„์นด๋ฐ๋ฏธ ID
docType string O ์ปฌ๋ ‰์…˜ ํƒ€์ž… (users, schools, seasons ๋“ฑ)
docId string X ๋„ํ๋จผํŠธ ObjectId (๋ฏธ์ œ๊ณต ์‹œ ๋ชฉ๋ก ์กฐํšŒ)

๋ชฉ๋ก ์กฐํšŒ ์‘๋‹ต (200)

{
  "documents": [
    { "_id": "...", "userId": "user01", "userName": "ํ™๊ธธ๋™" },
    { "_id": "...", "userId": "user02", "userName": "๊น€์ฒ ์ˆ˜" }
  ]
}

๋‹จ์ผ ์กฐํšŒ ์‘๋‹ต (200)

{
  "document": {
    "_id": "...",
    "userId": "user01",
    "userName": "ํ™๊ธธ๋™"
  }
}

์•„์นด๋ฐ๋ฏธ ์‚ญ์ œ

์•„์นด๋ฐ๋ฏธ ๋ฌธ์„œ์™€ ํ•ด๋‹น ์•„์นด๋ฐ๋ฏธ์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

DELETE /api/academies/:academyId

๊ถŒํ•œ: owner

์ฃผ์˜: ์ด ์ž‘์—…์€ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„์นด๋ฐ๋ฏธ์— ์†ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ(์‚ฌ์šฉ์ž, ํ•™๊ต, ํ•™๊ธฐ, ์ˆ˜์—… ๋“ฑ)๊ฐ€ ์˜๊ตฌ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ

ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ์„ค๋ช…
academyId string ์‚ญ์ œํ•  ์•„์นด๋ฐ๋ฏธ ID

์‘๋‹ต (200)

{}

์—๋Ÿฌ ์‘๋‹ต

์ƒํƒœ ์ฝ”๋“œ ๋ฉ”์‹œ์ง€ ์„ค๋ช…
404 ACADEMY_NOT_FOUND ์•„์นด๋ฐ๋ฏธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

ํ”„๋ก ํŠธ์—”๋“œ API ํ•จ์ˆ˜ (useAPIv2)

ํ•จ์ˆ˜๋ช… ๋ฉ”์„œ๋“œ ๊ฒฝ๋กœ ์„ค๋ช…
CAcademy POST /api/academies ์•„์นด๋ฐ๋ฏธ ์ƒ์„ฑ
RAcademies GET /api/academies ์•„์นด๋ฐ๋ฏธ ๋ชฉ๋ก ์กฐํšŒ
RAcademy GET /api/academies?academyId=... ์•„์นด๋ฐ๋ฏธ ๋‹จ์ผ ์กฐํšŒ
UActivateAcademy PUT /api/academies/:academyId/activate ํ™œ์„ฑํ™”
UInactivateAcademy PUT /api/academies/:academyId/inactivate ๋น„ํ™œ์„ฑํ™”
UAcademyEmail PUT /api/academies/:academyId/email ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ
UAcademyTel PUT /api/academies/:academyId/tel ์ „ํ™”๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
UAcademyChatEnabled PUT /api/academies/:academyId/chat ์ฑ„ํŒ… ์„ค์ •
UAcademyAiEnabled PUT /api/academies/:academyId/ai AI ํ™œ์„ฑํ™” ์„ค์ •
UAcademyAiApiKey PUT /api/academies/:academyId/ai/apikey AI API ํ‚ค ์„ค์ •
RAcademyAiApiKey GET /api/academies/:academyId/ai/apikey AI API ํ‚ค ํ™•์ธ
CAcademyBackup POST /api/academies/:academyId/backup ๋ฐฑ์—… ์ƒ์„ฑ
RAcademyBackup GET /api/academies/:academyId/backup ๋ฐฑ์—… ์กฐํšŒ
URestoreAcademy PUT /api/academies/:academyId/restore ๋ฐฑ์—… ๋ณต์›
DAcademyBackup DELETE /api/academies/:academyId/backup ๋ฐฑ์—… ์‚ญ์ œ
DAcademy DELETE /api/academies/:academyId ์•„์นด๋ฐ๋ฏธ ์‚ญ์ œ