Sign In
λ©€ν‹°ν΄λž˜μŠ€ 관리
κ·ΈλΌμš΄λ“œ μ†Œμ‚¬μ΄μ–΄ν‹° 경제 μ •μ±… 섀계 κ°€μ΄λ“œ
Subscribe

πŸ“¦ κ·ΈλΌμš΄λ“œ μ—­λŸ‰ μΉ΄λ“œ API κ°€μ΄λ“œ

πŸ‘‰πŸ» κ·ΈλΌμš΄λ“œμ—μ„œ ν•™μƒμ—κ²Œ μ—­λŸ‰ μΉ΄λ“œλ₯Ό λΆ€μ—¬ν•˜λŠ” μ—­λŸ‰μΉ΄λ“œ API κΈ°λŠ₯을 μ„€λͺ…ν•©λ‹ˆλ‹€.
μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ꡐ사가 λ“±λ‘ν•œ μ—­λŸ‰ μΉ΄λ“œ(μΉ­μ°¬/λ…Έλ ₯ μΉ΄λ“œ) λͺ©λ‘μ„ μ‘°νšŒν•˜κ³ , ν•΄λ‹Ή μΉ΄λ“œλ₯Ό 톡해 ν•™μƒμ—κ²Œ ν•™κΈ‰ 화폐λ₯Ό λΆ€μ—¬ν•˜λŠ” APIμž…λ‹ˆλ‹€.

κΈ°λ³Έ 정보

β€’
Base URL: https://growndcard.com
β€’
인증: X-API-Key 헀더
β€’
ν•„μš” κΆŒν•œ: awardPoints (API μ„€μ •μ—μ„œ ν•™κΈ‰ 화폐/μ—­λŸ‰μΉ΄λ“œ λΆ€μ—¬ κΆŒν•œ 체크)

1. μ—­λŸ‰ μΉ΄λ“œ λͺ©λ‘ 쑰회

μ—”λ“œν¬μΈνŠΈ

GET /api/v1/classes/{classId}/cards

μš”μ²­ 헀더

헀더
κ°’
ν•„μˆ˜
X-API-Key
λ°œκΈ‰λ°›μ€ API ν‚€
βœ…

성곡 응닡 (200 OK)

{
  "success": true,
  "data": {
    "cards": [
      {
        "templateId": "abc123",
        "type": "reward",
        "points": 5,
        "description": "μˆ˜μ—… 적극 μ°Έμ—¬",
        "categoryId": "cat_collab",
        "categoryName": "ν˜‘μ—…"
      }
    ]
  },
  "message": "μ—­λŸ‰ μΉ΄λ“œ λͺ©λ‘ μ‘°νšŒμ— μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€."
}
ν•„λ“œ
μ„€λͺ…
templateId
μΉ΄λ“œ λΆ€μ—¬ μ‹œ μ‚¬μš©ν•˜λŠ” μΉ΄λ“œ ID
type
reward(μΉ­μ°¬) / penalty(λ…Έλ ₯)
points
μΉ΄λ“œμ— μ„€μ •λœ 점수
description
μΉ΄λ“œ μ„€λͺ…
categoryId / categoryName
μ—°κ²°λœ μ—­λŸ‰ μΉ΄ν…Œκ³ λ¦¬ (μ—†μœΌλ©΄ null)

2. μ—­λŸ‰ μΉ΄λ“œ λΆ€μ—¬

μ—”λ“œν¬μΈνŠΈ

POST /api/v1/classes/{classId}/students/{studentCode}/cards

URL νŒŒλΌλ―Έν„°

νŒŒλΌλ―Έν„°
νƒ€μž…
μ„€λͺ…
classId
string
클래슀 ID
studentCode
number
학생 번호(μΆœμ„λ²ˆν˜Έ)

μš”μ²­ λ³Έλ¬Έ (JSON)

ν•„λ“œ
νƒ€μž…
ν•„μˆ˜
μ„€λͺ…
templateId
string
βœ…
λΆ€μ—¬ν•  μ—­λŸ‰ μΉ΄λ“œ ID (λͺ©λ‘ 쑰회둜 νšλ“)
source
string
❌
좜처 μ‹λ³„μž (κΈ°λ³Έκ°’ "cardTemplate")
metadata
object
❌
μΆ”κ°€ 데이터
μ μˆ˜Β·μ„€λͺ…Β·μΉ΄ν…Œκ³ λ¦¬λŠ” 본문으둜 λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 항상 μΉ΄λ“œ ν…œν”Œλ¦Ώ 값을 μ‚¬μš©ν•©λ‹ˆλ‹€.

μš”μ²­ μ˜ˆμ‹œ

curl -X POST \
  "https://growndcard.com/api/v1/classes/CLASS_ID/students/2/cards" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_live_xxx" \
  -d '{ "templateId": "abc123", "source": "QuizApp" }'

성곡 응닡 (200 OK)

{
  "success": true,
  "data": {
    "recordId": "rec_xyz",
    "studentId": "stu_abc",
    "studentCode": 2,
    "type": "reward",
    "pointsAwarded": 5,
    "bonusApplied": 1,
    "totalPoints": 155,
    "currentLevel": 5,
    "leveledUp": false,
    "createdAt": "2026-06-15T01:23:45.000Z",
    "templateId": "abc123",
    "categoryId": "cat_collab"
  },
  "message": "μ—­λŸ‰ μΉ΄λ“œκ°€ μ„±κ³΅μ μœΌλ‘œ λΆ€μ—¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€."
}

μ—λŸ¬ μ½”λ“œ

μƒνƒœ
μ½”λ“œ
μ„€λͺ…
400
invalid_student_code
학생 번호 λˆ„λ½
400
invalid_template_id
templateId λˆ„λ½ λ˜λŠ” ν˜•μ‹ 였λ₯˜
401
unauthorized
API ν‚€ λˆ„λ½/무효
403
insufficient_permissions
awardPoints κΆŒν•œ μ—†μŒ
403
forbidden
ν•΄λ‹Ή 클래슀 μ ‘κ·Ό κΆŒν•œ μ—†μŒ
404
card_not_found
ν•΄λ‹Ή μ—­λŸ‰ μΉ΄λ“œ μ—†μŒ
404
student_not_found
학생을 찾을 수 μ—†μŒ
429
rate_limit_exceeded
호좜 μ œν•œ 초과
500
invalid_card_template
μΉ΄λ“œ ν…œν”Œλ¦Ώ 데이터 손상(type/points 이상)
500
internal_error
μ„œλ²„ λ‚΄λΆ€ 였λ₯˜

κ΄€λ ¨ λ¬Έμ„œ

API 버전: v1