service-template API (0.1.0)

Download OpenAPI specification:

CLASSUM service-template backend API

Health

HealthController_check

Responses

auth

회원가입 — 개인 테넌트 생성(미인증) + 인증 코드 발송. 토큰은 verify-email 후.

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
password
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

displayName
required
string [ 1 .. 255 ] characters

문자·숫자·공백과 _ - [ ] ( ) { } / * 만 사용할 수 있습니다.

tenantKey
string [ 1 .. 255 ] characters ^[a-z0-9-]+$
tenantName
string [ 1 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "stringst",
  • "displayName": "string",
  • "tenantKey": "string",
  • "tenantName": "string"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "verificationRequired": true,
  • "devCode": "string"
}

이메일 인증 코드 검증 → 로그인(access + Set-Cookie).

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
code
required
string = 6 characters
sessionType
string
Enum: "personal" "public"

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "code": "string",
  • "sessionType": "personal"
}

Response samples

Content type
application/json
{
  • "result": "authenticated",
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "user": {
    },
  • "tenants": [
    ],
  • "hasOwnedTenant": true,
  • "email": "string"
}

이메일 인증 코드 재발송(cooldown).

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "nextResendAvailableAt": "string",
  • "devCode": "string"
}

비밀번호 재설정 코드 요청 (비인증) — 가입 여부를 응답으로 알려주지 않는다

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "nextResendAvailableAt": "string",
  • "devCode": "string"
}

비밀번호 재설정 확정 (비인증) — 그 이메일의 모든 테넌트 계정에 적용 + 전 세션 revoke

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
code
required
string = 6 characters
newPassword
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "code": "string",
  • "newPassword": "stringst"
}

Response samples

Content type
application/json
{
  • "updatedAccounts": -9007199254740991
}

코드 로그인 — 코드 요청 (비인증). 가입 여부를 응답으로 알려주지 않는다

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "nextResendAvailableAt": "string",
  • "devCode": "string"
}

소속 기관 전체 조회 (비인증) — 코드 검증, 비밀번호 무관. 코드는 소비하지 않는다

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
code
required
string = 6 characters

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "tenants": [
    ],
  • "hasOwnedTenant": true
}

코드 로그인 — 확정 (비인증). 응답은 /auth/sign-in 과 동형(access + Set-Cookie)

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
tenantKey
required
string non-empty
code
required
string = 6 characters
sessionType
string
Enum: "personal" "public"

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "tenantKey": "string",
  • "code": "string",
  • "sessionType": "personal"
}

Response samples

Content type
application/json
{
  • "result": "authenticated",
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "user": {
    },
  • "tenants": [
    ],
  • "hasOwnedTenant": true,
  • "email": "string"
}

로그인. result=authenticated(access + Set-Cookie) | select-tenant(테넌트 목록).

Request Body schema: application/json
required
tenantKey
string non-empty
identifier
required
string non-empty
password
required
string non-empty
sessionType
string
Enum: "personal" "public"

Responses

Request samples

Content type
application/json
{
  • "tenantKey": "string",
  • "identifier": "string",
  • "password": "string",
  • "sessionType": "personal"
}

Response samples

Content type
application/json
{
  • "result": "authenticated",
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "user": {
    },
  • "tenants": [
    ],
  • "hasOwnedTenant": true,
  • "email": "string"
}

현재 세션 유형 — confirmed=false 면 프론트가 유형을 묻는다

Responses

Response samples

Content type
application/json
{
  • "sessionType": "personal",
  • "absoluteExpiresAt": "string",
  • "confirmed": true
}

세션 유형 변경 — family 유지 rotate + 절대 만료 재계산 (Set-Cookie 재발급)

Request Body schema: application/json
required
sessionType
required
string
Enum: "personal" "public"

Responses

Request samples

Content type
application/json
{
  • "sessionType": "personal"
}

Response samples

Content type
application/json
{
  • "sessionType": "personal",
  • "absoluteExpiresAt": "string",
  • "confirmed": true
}

Refresh rotation. cookie 로 새 access + 새 refresh.

Responses

Response samples

Content type
application/json
{
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "user": {
    }
}

로그아웃 — refresh family revoke + cookie clear.

Responses

모든 device 로그아웃 — user 의 모든 family revoke.

Responses

기관 대문 가입 — 인증 코드 발송 (비인증). 가입을 받지 않는 기관은 403

path Parameters
tenantKey
required
string
Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "nextResendAvailableAt": "string",
  • "devCode": "string"
}

기관 대문 가입 확정 — 코드 검증 후 계정 생성 + 로그인(access + Set-Cookie)

path Parameters
tenantKey
required
string
Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
code
required
string = 6 characters
password
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

displayName
required
string [ 1 .. 255 ] characters

문자·숫자·공백과 _ - [ ] ( ) { } / * 만 사용할 수 있습니다.

userId
string [ 1 .. 255 ] characters
sessionType
string
Enum: "personal" "public"

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "code": "string",
  • "password": "stringst",
  • "displayName": "string",
  • "userId": "string",
  • "sessionType": "personal"
}

Response samples

Content type
application/json
{
  • "result": "authenticated",
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "user": {
    },
  • "tenants": [
    ],
  • "hasOwnedTenant": true,
  • "email": "string"
}

me

현재 사용자 + role/permissions

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "userId": "string",
  • "tenantKey": "string",
  • "email": "string",
  • "displayName": "string",
  • "role": {
    },
  • "permissions": [
    ],
  • "mustChangePassword": true,
  • "needsAgreementConsent": true
}

계정 탈퇴

Responses

내 로그인 수단 — 비밀번호 여부 + 연결된 계정

Responses

Response samples

Content type
application/json
{
  • "hasPassword": true,
  • "linked": [
    ]
}

비밀번호 변경 + 전 device revoke

Request Body schema: application/json
required
currentPassword
required
string non-empty
newPassword
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

Responses

Request samples

Content type
application/json
{
  • "currentPassword": "string",
  • "newPassword": "stringst"
}

약관 동의 기록 (append-only)

Request Body schema: application/json
required
Array of objects
Default: []
Array of objects
Default: []

Responses

Request samples

Content type
application/json
{
  • "classumAgreements": [ ],
  • "tenantAgreements": [ ]
}

내 동의 현황 — topic 별 최신 1건

Responses

Response samples

Content type
application/json
{
  • "classumAgreements": [
    ],
  • "tenantAgreements": [
    ]
}

재동의 필요 여부 — 어느 약관이 왜(미동의/개정/만료/철회) 필요한지

Responses

Response samples

Content type
application/json
{
  • "needConsent": true,
  • "classumAgreements": [
    ],
  • "tenantAgreements": [
    ]
}

동의 철회 — 선택 약관만(필수는 400)

path Parameters
scope
required
string
topic
required
string

Responses

agreements

약관 목록(비인증) — 플랫폼 + (tenantKey 주면) 기관 자체 약관. 현재 version 포함

query Parameters
tenantKey
string non-empty

Responses

Response samples

Content type
application/json
{
  • "classumAgreements": [
    ],
  • "tenantAgreements": [
    ]
}

identity

외부 계정 연결 시작 — provider 인증 주소 발급

path Parameters
provider
required
string
Request Body schema: application/json
required
returnTo
string <= 2000 characters

Responses

Request samples

Content type
application/json
{
  • "returnTo": "string"
}

Response samples

Content type
application/json
{
  • "url": "string"
}

연결된 계정으로 로그인 시작

path Parameters
provider
required
string
Request Body schema: application/json
required
tenantKey
string <= 255 characters
sessionType
string
Enum: "personal" "public"
returnTo
string <= 2000 characters

Responses

Request samples

Content type
application/json
{
  • "tenantKey": "string",
  • "sessionType": "personal",
  • "returnTo": "string"
}

Response samples

Content type
application/json
{
  • "url": "string"
}

연결된 소속 기관 목록 (선택 대기)

Responses

Response samples

Content type
application/json
{
  • "provider": "google",
  • "tenants": [
    ]
}

소속 기관 선택 → 세션 발급

Request Body schema: application/json
required
tenantKey
required
string <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "tenantKey": "string"
}

외부 계정 연결 해제

path Parameters
provider
required
string

Responses

profiles

내 프로필 목록(선택 화면) — 고유번호 오름차순

Responses

Response samples

Content type
application/json
{
  • "profiles": [
    ]
}

대표 프로필 변경

Request Body schema: application/json
required
profileId
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "profileId": "string"
}

Response samples

Content type
application/json
{
  • "profiles": [
    ]
}

프로필 방문 기록(isNew 해제)

path Parameters
profileId
required
string

Responses

entry-codes

기관 입장 코드 목록

Responses

Response samples

Content type
application/json
{
  • "codes": [
    ]
}

기관 입장 코드 발급

Request Body schema: application/json
required
expiresInDays
integer [ 1 .. 3650 ]

Responses

Request samples

Content type
application/json
{
  • "expiresInDays": 1
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "enabled": true,
  • "expiresAt": "string",
  • "createdAt": "string",
  • "link": "string"
}

기관 입장 코드 활성/비활성

path Parameters
id
required
string
Request Body schema: application/json
required
enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "code": "string",
  • "enabled": true,
  • "expiresAt": "string",
  • "createdAt": "string",
  • "link": "string"
}

기관 입장 코드 삭제

path Parameters
id
required
string

Responses

코드/링크로 기관·공간 해석 (비인증). 만료·비활성·없음 모두 404

Request Body schema: application/json
required
code
required
string [ 4 .. 32 ] characters

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "tenantKey": "string",
  • "spaceId": "string"
}

tenant-invitations

기관 초대 발송 — 건별 처리 후 실패 리포트(전체 롤백 아님)

Request Body schema: application/json
required
emails
required
Array of strings <email> [ 1 .. 500 ] items [ items <email > <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z... ]
roleKey
string non-empty

Responses

Request samples

Content type
application/json
{
  • "emails": [
    ],
  • "roleKey": "string"
}

Response samples

Content type
application/json
{
  • "invited": [
    ],
  • "failed": [
    ]
}

초대 목록 — 기본은 대기 중("초대 대기" 탭)

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
status
string
Enum: "pending" "accepted" "cancelled" "expired"
search
string [ 1 .. 255 ] characters
sortBy
string
Enum: "email" "createdAt"
sortDir
string
Enum: "asc" "desc"

Responses

Response samples

Content type
application/json
{
  • "invitations": [
    ],
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991
}

초대 사전 검사 — 이메일별 초대 가능 여부

Request Body schema: application/json
required
emails
required
Array of strings <email> [ 1 .. 500 ] items [ items <email > <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z... ]

Responses

Request samples

Content type
application/json
{
  • "emails": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ]
}

초대 일괄 재발송 — 건별 결과

Request Body schema: application/json
required
ids
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

Response samples

Content type
application/json
{
  • "succeeded": [
    ],
  • "failed": [
    ]
}

초대 일괄 취소 — 건별 결과

Request Body schema: application/json
required
ids
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

Response samples

Content type
application/json
{
  • "succeeded": [
    ],
  • "failed": [
    ]
}

초대 재발송 — 새 토큰으로 교체(옛 링크 무효)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "role": {
    },
  • "status": "pending",
  • "sentAt": "string",
  • "expiresAt": "string",
  • "acceptedAt": "string",
  • "createdAt": "string"
}

초대 취소 (멱등)

path Parameters
id
required
string

Responses

초대 정보 조회 (비인증) — 수락 화면 렌더용

path Parameters
token
required
string

Responses

Response samples

Content type
application/json
{
  • "tenantKey": "string",
  • "tenantName": "string",
  • "email": "string",
  • "role": {
    },
  • "loginIdentifier": "userId"
}

초대 수락 (비인증) — 사용자가 이름·비밀번호를 정해 합류

path Parameters
token
required
string
Request Body schema: application/json
required
displayName
required
string [ 1 .. 255 ] characters

문자·숫자·공백과 _ - [ ] ( ) { } / * 만 사용할 수 있습니다.

password
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

userId
string [ 1 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "password": "stringst",
  • "userId": "string"
}

Response samples

Content type
application/json
{
  • "tenantKey": "string",
  • "identifier": "string"
}

tenant-login-config

기관 로그인 설정 조회

Responses

Response samples

Content type
application/json
{
  • "logoImageUrl": "string",
  • "logoImageFileId": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundImageFileId": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "externalLinksEnabled": true,
  • "externalLinks": [],
  • "externalFeed": {}
}

기관 로그인 설정 저장(전체 교체)

Request Body schema: application/json
required
required
string or null
string or null
titleKo
required
string <= 255 characters
titleEn
required
string <= 255 characters
required
string or null
string or null
backgroundTitleEnabled
required
boolean
backgroundTitleKo
required
string <= 255 characters
backgroundTitleEn
required
string <= 255 characters
backgroundTitleColor
required
string <= 20 characters
required
object
object
externalLinksEnabled
boolean
Default: true
required
Array of objects <= 4 items
object or null

Responses

Request samples

Content type
application/json
{
  • "logoImageUrl": "string",
  • "logoImageFileId": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundImageFileId": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "externalLinksEnabled": true,
  • "externalLinks": [],
  • "externalFeed": {}
}

Response samples

Content type
application/json
{
  • "logoImageUrl": "string",
  • "logoImageFileId": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundImageFileId": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "externalLinksEnabled": true,
  • "externalLinks": [],
  • "externalFeed": {}
}

기관 로그인 설정 임시 저장본 조회

Responses

Response samples

Content type
application/json
{
  • "draft": {
    }
}

기관 로그인 설정 임시 저장(부분 허용)

Request Body schema: application/json
required
string or null
string or null
titleKo
string <= 255 characters
titleEn
string <= 255 characters
string or null
string or null
backgroundTitleEnabled
boolean
backgroundTitleKo
string <= 255 characters
backgroundTitleEn
string <= 255 characters
backgroundTitleColor
string <= 20 characters
object
object
externalLinksEnabled
boolean
Default: true
Array of objects <= 4 items
object or null

Responses

Request samples

Content type
application/json
{
  • "logoImageUrl": "string",
  • "logoImageFileId": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundImageFileId": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "externalLinksEnabled": true,
  • "externalLinks": [],
  • "externalFeed": {}
}

Response samples

Content type
application/json
{
  • "draft": {
    }
}

임시 저장본을 실제 설정으로 적용

Responses

Response samples

Content type
application/json
{
  • "logoImageUrl": "string",
  • "logoImageFileId": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundImageFileId": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "externalLinksEnabled": true,
  • "externalLinks": [],
  • "externalFeed": {}
}

기관 대문 로그인 설정 조회 (비인증)

path Parameters
tenantKey
required
string

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "logoImageUrl": "string",
  • "titleKo": "string",
  • "titleEn": "string",
  • "backgroundImageUrl": "string",
  • "backgroundTitleEnabled": true,
  • "backgroundTitleKo": "string",
  • "backgroundTitleEn": "string",
  • "backgroundTitleColor": "string",
  • "externalLinks": [],
  • "loginIdentifier": "userId",
  • "allowUserSelfSignUp": true,
  • "methods": {
    },
  • "buttonLabels": {
    },
  • "ssoEnabled": true,
  • "ssoProviders": [
    ],
  • "externalFeed": {
    }
}

기관 대문 외부 공지 피드 (비인증, 실패도 200)

path Parameters
tenantKey
required
string

Responses

Response samples

Content type
application/json
{
  • "configured": true,
  • "titleKo": "string",
  • "titleEn": "string",
  • "items": [
    ],
  • "available": true,
  • "fetchedAt": "string"
}

로그인 전 계정 존재·로그인 수단 조회 (비인증). 429 면 클라는 그냥 다음 단계로 진행

path Parameters
tenantKey
required
string
Request Body schema: application/json
required
identifier
required
string [ 1 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "identifier": "string"
}

Response samples

Content type
application/json
{
  • "exists": true,
  • "methods": [
    ],
  • "allowUserSelfSignUp": true
}

permissions

부여 가능 권한 목록(부여 요약)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

권한 상세(부여된 그룹/멤버)

path Parameters
code
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "code": "member:read",
  • "label": "string",
  • "description": "string",
  • "disabled": true,
  • "allEnabled": true,
  • "groups": [
    ],
  • "members": [
    ],
  • "groupTotal": -9007199254740991,
  • "memberTotal": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991
}

부여 대상 후보(아직 권한이 없는 구성원)

path Parameters
code
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991
}

그룹/멤버에 권한 부여

path Parameters
code
required
string
Request Body schema: application/json
required
subjectType
required
string
Enum: "GROUP" "MEMBER"
subjectId
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "subjectType": "GROUP",
  • "subjectId": "string"
}

Response samples

Content type
application/json
{
  • "code": "member:read",
  • "label": "string",
  • "description": "string",
  • "disabled": true,
  • "allEnabled": true,
  • "groups": [
    ],
  • "members": [
    ],
  • "groupTotal": -9007199254740991,
  • "memberTotal": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991
}

그룹/멤버 권한 해제

path Parameters
code
required
string
Request Body schema: application/json
required
subjectType
required
string
Enum: "GROUP" "MEMBER"
subjectId
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "subjectType": "GROUP",
  • "subjectId": "string"
}

Response samples

Content type
application/json
{
  • "code": "member:read",
  • "label": "string",
  • "description": "string",
  • "disabled": true,
  • "allEnabled": true,
  • "groups": [
    ],
  • "members": [
    ],
  • "groupTotal": -9007199254740991,
  • "memberTotal": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991
}

그룹/멤버에 권한 일괄 부여

path Parameters
code
required
string
Request Body schema: application/json
required
subjectType
required
string
Enum: "GROUP" "MEMBER"
subjectIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "subjectType": "GROUP",
  • "subjectIds": [
    ]
}

Response samples

Content type
application/json
{
  • "granted": -9007199254740991,
  • "skipped": [
    ]
}

그룹/멤버 권한 일괄 해제

path Parameters
code
required
string
Request Body schema: application/json
required
subjectType
required
string
Enum: "GROUP" "MEMBER"
subjectIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "subjectType": "GROUP",
  • "subjectIds": [
    ]
}

Response samples

Content type
application/json
{
  • "revoked": -9007199254740991
}

전체 적용(ALL) 토글

path Parameters
code
required
string
Request Body schema: application/json
required
enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "code": "member:read",
  • "label": "string",
  • "description": "string",
  • "disabled": true,
  • "allEnabled": true,
  • "groups": [
    ],
  • "members": [
    ],
  • "groupTotal": -9007199254740991,
  • "memberTotal": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991
}

premium-code

기관 프리미엄 코드 조회(없으면 발급)

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "enabled": true,
  • "permissionCode": "string",
  • "permissionLabel": "string",
  • "permissionDisabled": true,
  • "updatedAt": "string"
}

프리미엄 코드 활성/비활성

Request Body schema: application/json
required
enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "enabled": true,
  • "permissionCode": "string",
  • "permissionLabel": "string",
  • "permissionDisabled": true,
  • "updatedAt": "string"
}

프리미엄 코드 재발급(옛 코드는 즉시 무효)

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "enabled": true,
  • "permissionCode": "string",
  • "permissionLabel": "string",
  • "permissionDisabled": true,
  • "updatedAt": "string"
}

프리미엄 코드 입력 — 본인에게 권한 부여

Request Body schema: application/json
required
code
required
string [ 4 .. 32 ] characters

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "permissionCode": "string",
  • "permissionLabel": "string"
}

roles

역할 목록 (빌트인+커스텀, 권한 포함)

Responses

Response samples

Content type
application/json
{
  • "roles": [
    ]
}

커스텀 역할 생성

Request Body schema: application/json
required
key
required
string [ 1 .. 50 ] characters ^[a-z0-9-]+$
name
required
string [ 1 .. 255 ] characters
permissions
Array of strings
Default: []
Items Enum: "member:read" "member:invite" "member:manage-role" "member:manage" "member:remove" "role:read" "role:manage" "tenant-settings:manage" "space:create" "library:upload"

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "name": "string",
  • "permissions": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "scope": "tenant",
  • "isBuiltin": true,
  • "permissions": [
    ]
}

부여 가능한 권한 카탈로그

Responses

Response samples

Content type
application/json
{
  • "permissions": [
    ]
}

커스텀 역할 수정

path Parameters
roleId
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
permissions
Array of strings
Items Enum: "member:read" "member:invite" "member:manage-role" "member:manage" "member:remove" "role:read" "role:manage" "tenant-settings:manage" "space:create" "library:upload"

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "permissions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "scope": "tenant",
  • "isBuiltin": true,
  • "permissions": [
    ]
}

커스텀 역할 삭제

path Parameters
roleId
required
string

Responses

sso

SSO 설정 조회(+ SP 파생 정보)

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "idpSsoUrl": "string",
  • "idpEntityUrl": "string",
  • "x509Cert": "string",
  • "attributeMappings": [
    ],
  • "partnerProviders": [
    ],
  • "allowedLoginMethods": "ALL",
  • "spAcsUrl": "string",
  • "spEntityId": "string",
  • "mappingLabels": {
    },
  • "idpConfigured": true,
  • "providers": [
    ]
}

SSO 설정 저장(IdP 정보 + attribute 매핑)

Request Body schema: application/json
required
enabled
boolean
allowedLoginMethods
string
Enum: "ALL" "SSO_ONLY"
string or null
string or null
string or null
Array of objects <= 200 items
Array of objects <= 10 items

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "allowedLoginMethods": "ALL",
  • "idpSsoUrl": "string",
  • "idpEntityUrl": "string",
  • "x509Cert": "string",
  • "attributeMappings": [
    ],
  • "partnerProviders": [
    ]
}

Response samples

Content type
application/json
{
  • "enabled": true,
  • "idpSsoUrl": "string",
  • "idpEntityUrl": "string",
  • "x509Cert": "string",
  • "attributeMappings": [
    ],
  • "partnerProviders": [
    ],
  • "allowedLoginMethods": "ALL",
  • "spAcsUrl": "string",
  • "spEntityId": "string",
  • "mappingLabels": {
    },
  • "idpConfigured": true,
  • "providers": [
    ]
}

banners

배너 목록(status=published|archived, 기본 published)

query Parameters
status
string
Enum: "published" "archived"

Responses

Response samples

Content type
application/json
{
  • "banners": [
    ]
}

배너 올리기

Request Body schema: application/json
required
string or null
string or null
title
required
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "imageFileId": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "publishStartAt": "2019-08-24T14:15:22Z",
  • "publishEndAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "status": "published",
  • "order": -9007199254740991,
  • "publishStartAt": "string",
  • "publishEndAt": "string",
  • "createdAt": "string"
}

배너 순서 재배치

Request Body schema: application/json
required
orderedIds
required
Array of strings <= 500 items

Responses

Request samples

Content type
application/json
{
  • "orderedIds": [
    ]
}

Response samples

Content type
application/json
{
  • "banners": [
    ]
}

배너 상세

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "status": "published",
  • "order": -9007199254740991,
  • "publishStartAt": "string",
  • "publishEndAt": "string",
  • "createdAt": "string"
}

배너 수정

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
string or null
title
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "imageFileId": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "publishStartAt": "2019-08-24T14:15:22Z",
  • "publishEndAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "status": "published",
  • "order": -9007199254740991,
  • "publishStartAt": "string",
  • "publishEndAt": "string",
  • "createdAt": "string"
}

배너 삭제

path Parameters
id
required
string

Responses

보관함으로 이동

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "status": "published",
  • "order": -9007199254740991,
  • "publishStartAt": "string",
  • "publishEndAt": "string",
  • "createdAt": "string"
}

보관함에서 복원(공개)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "imageUrl": "string",
  • "title": "string",
  • "subtitle": "string",
  • "description": "string",
  • "linkUrl": "string",
  • "status": "published",
  • "order": -9007199254740991,
  • "publishStartAt": "string",
  • "publishEndAt": "string",
  • "createdAt": "string"
}

posts

게시글 일괄 업로드(다중 공간)

Request Body schema: application/json
required
spaceIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]
title
required
string [ 1 .. 300 ] characters
content
string <= 200000 characters
Default: ""
type
string
Default: "NOTICE"
Enum: "NOTICE" "GENERAL" "QUESTION"
tags
Array of strings <= 50 items [ items <= 50 characters ]
Default: []
isEmergency
boolean
Default: false
isPinned
boolean
Default: false
allowFileDownload
boolean
Default: true
string or null
fileIds
Array of strings <= 20 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "spaceIds": [
    ],
  • "title": "string",
  • "content": "",
  • "type": "NOTICE",
  • "tags": [ ],
  • "isEmergency": false,
  • "isPinned": false,
  • "allowFileDownload": true,
  • "publishAt": "2019-08-24T14:15:22Z",
  • "fileIds": [ ]
}

Response samples

Content type
application/json
{
  • "created": -9007199254740991,
  • "skipped": [
    ],
  • "posts": [
    ]
}

게시글 목록

query Parameters
search
string [ 1 .. 255 ] characters
spaceId
string
status
string
Enum: "SCHEDULED" "PUBLISHED" "ARCHIVED"
type
string
Enum: "NOTICE" "GENERAL" "QUESTION"
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "posts": [
    ],
  • "total": -9007199254740991,
  • "nextCursor": "string"
}

게시글 만들기(단일 공간)

Request Body schema: application/json
required
spaceId
required
string non-empty
title
required
string [ 1 .. 300 ] characters
content
string <= 200000 characters
Default: ""
type
string
Default: "NOTICE"
Enum: "NOTICE" "GENERAL" "QUESTION"
tags
Array of strings <= 50 items [ items <= 50 characters ]
Default: []
isEmergency
boolean
Default: false
isPinned
boolean
Default: false
allowFileDownload
boolean
Default: true
string or null
fileIds
Array of strings <= 20 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "spaceId": "string",
  • "title": "string",
  • "content": "",
  • "type": "NOTICE",
  • "tags": [ ],
  • "isEmergency": false,
  • "isPinned": false,
  • "allowFileDownload": true,
  • "publishAt": "2019-08-24T14:15:22Z",
  • "fileIds": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "spaceName": "string",
  • "index": -9007199254740991,
  • "title": "string",
  • "content": "string",
  • "type": "NOTICE",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "allowFileDownload": true,
  • "status": "SCHEDULED",
  • "publishAt": "string",
  • "authorName": "string",
  • "attachments": [
    ],
  • "createdAt": "string"
}

게시글 상세

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "spaceName": "string",
  • "index": -9007199254740991,
  • "title": "string",
  • "content": "string",
  • "type": "NOTICE",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "allowFileDownload": true,
  • "status": "SCHEDULED",
  • "publishAt": "string",
  • "authorName": "string",
  • "attachments": [
    ],
  • "createdAt": "string"
}

게시글 수정

path Parameters
id
required
string
Request Body schema: application/json
required
title
string [ 1 .. 300 ] characters
content
string <= 200000 characters
type
string
Enum: "NOTICE" "GENERAL" "QUESTION"
tags
Array of strings <= 50 items [ items <= 50 characters ]
isEmergency
boolean
isPinned
boolean
allowFileDownload
boolean
string or null
status
string
Enum: "SCHEDULED" "PUBLISHED" "ARCHIVED"
fileIds
Array of strings <= 20 items

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "content": "string",
  • "type": "NOTICE",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "allowFileDownload": true,
  • "publishAt": "2019-08-24T14:15:22Z",
  • "status": "SCHEDULED",
  • "fileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "spaceName": "string",
  • "index": -9007199254740991,
  • "title": "string",
  • "content": "string",
  • "type": "NOTICE",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "allowFileDownload": true,
  • "status": "SCHEDULED",
  • "publishAt": "string",
  • "authorName": "string",
  • "attachments": [
    ],
  • "createdAt": "string"
}

게시글 삭제

path Parameters
id
required
string

Responses

contents

콘텐츠 목록(매니저/CMS)

query Parameters
nodeId
string
type
string
Enum: "VIDEO" "URL_VIDEO" "QUIZ" "DOCUMENT" "SURVEY" "LIVE" "ASSIGNMENT" "GROUP_ASSIGNMENT" "GROUP_PEER_ASSESSMENT"
q
string
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "contents": [
    ],
  • "nextCursor": "string"
}

콘텐츠 생성(+선택 배치)

Request Body schema: application/json
required
type
required
string
Enum: "VIDEO" "URL_VIDEO" "QUIZ" "DOCUMENT" "SURVEY" "LIVE" "ASSIGNMENT" "GROUP_ASSIGNMENT" "GROUP_PEER_ASSESSMENT"
title
required
string [ 1 .. 300 ] characters
description
string <= 15000 characters
Default: ""
visibility
string
Default: "PRIVATE"
Enum: "PRIVATE" "SHARED" "PUBLIC"
nodeId
string
fileIds
Array of strings <= 20 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "type": "VIDEO",
  • "title": "string",
  • "description": "",
  • "visibility": "PRIVATE",
  • "nodeId": "string",
  • "fileIds": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "VIDEO",
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "authorProfileId": "string",
  • "authorName": "string",
  • "ready": true,
  • "createdAt": "string",
  • "updatedAt": "string",
  • "canManage": true,
  • "shares": [
    ],
  • "attachments": [
    ]
}

콘텐츠 상세(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "VIDEO",
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "authorProfileId": "string",
  • "authorName": "string",
  • "ready": true,
  • "createdAt": "string",
  • "updatedAt": "string",
  • "canManage": true,
  • "shares": [
    ],
  • "attachments": [
    ]
}

콘텐츠 수정

path Parameters
id
required
string
Request Body schema: application/json
required
title
string [ 1 .. 300 ] characters
description
string <= 15000 characters
visibility
string
Enum: "PRIVATE" "SHARED" "PUBLIC"
fileIds
Array of strings <= 20 items

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "fileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "VIDEO",
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "authorProfileId": "string",
  • "authorName": "string",
  • "ready": true,
  • "createdAt": "string",
  • "updatedAt": "string",
  • "canManage": true,
  • "shares": [
    ],
  • "attachments": [
    ]
}

콘텐츠 삭제

path Parameters
id
required
string

Responses

콘텐츠 공개/공유 설정

path Parameters
id
required
string
Request Body schema: application/json
required
visibility
required
string
Enum: "PRIVATE" "SHARED" "PUBLIC"
Array of objects <= 500 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "visibility": "PRIVATE",
  • "shares": [ ]
}

Response samples

Content type
application/json
{
  • "visibility": "PRIVATE",
  • "shares": [
    ]
}

업로드 파일을 영상에 연결(트랜스코딩 시작)

path Parameters
id
required
string
Request Body schema: application/json
required
fileId
required
string

Responses

Request samples

Content type
application/json
{
  • "fileId": "string"
}

Response samples

Content type
application/json
{
  • "status": "uploading",
  • "durationSec": -9007199254740991,
  • "thumbnailUrl": "string",
  • "hlsUrl": "string",
  • "renditions": [
    ]
}

영상 재생 정보(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "uploading",
  • "durationSec": -9007199254740991,
  • "thumbnailUrl": "string",
  • "hlsUrl": "string",
  • "renditions": [
    ]
}

URL/임베드 영상 연결

path Parameters
id
required
string
Request Body schema: application/json
required
url
required
string <uri> <= 1000 characters

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "provider": "youtube",
  • "url": "string",
  • "videoKey": "string"
}

URL 영상 정보(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "youtube",
  • "url": "string",
  • "videoKey": "string"
}

라이브(외부 회의 링크 + 시작·종료 시각) 연결

path Parameters
id
required
string
Request Body schema: application/json
required
joinUrl
required
string <uri> <= 1000 characters
provider
string
Enum: "zoom" "meet" "teams" "other"

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "provider": "zoom",
  • "joinUrl": "string",
  • "startAt": "string",
  • "endAt": "string",
  • "status": "SCHEDULED"
}

라이브 정보(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "zoom",
  • "joinUrl": "string",
  • "startAt": "string",
  • "endAt": "string",
  • "status": "SCHEDULED"
}

과제 설정 저장(만점·지각·재제출·필수 여부)

path Parameters
id
required
string
Request Body schema: application/json
required
integer or null
allowLateSubmit
boolean
allowResubmit
boolean
bodyRequired
boolean
fileRequired
boolean

Responses

Request samples

Content type
application/json
{
  • "maxScore": 1,
  • "allowLateSubmit": true,
  • "allowResubmit": true,
  • "bodyRequired": true,
  • "fileRequired": true
}

Response samples

Content type
application/json
{
  • "maxScore": 1,
  • "allowLateSubmit": true,
  • "allowResubmit": true,
  • "bodyRequired": true,
  • "fileRequired": true
}

과제 설정(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "maxScore": 1,
  • "allowLateSubmit": true,
  • "allowResubmit": true,
  • "bodyRequired": true,
  • "fileRequired": true
}

과제 루브릭 저장(기준·레벨·공개 범위)

path Parameters
id
required
string
Request Body schema: application/json
required
useLevel
required
boolean
visibility
required
string
Enum: "VISIBLE_ALL" "HIDE_ALL_TO_PARTICIPANTS"
required
Array of objects <= 20 items

Responses

Request samples

Content type
application/json
{
  • "useLevel": true,
  • "visibility": "VISIBLE_ALL",
  • "criteria": [
    ]
}

Response samples

Content type
application/json
{
  • "useLevel": true,
  • "visibility": "VISIBLE_ALL",
  • "criteria": [
    ],
  • "totalMaxPoints": -9007199254740991
}

과제 루브릭(매니저 — 공개 범위 무관)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "useLevel": true,
  • "visibility": "VISIBLE_ALL",
  • "criteria": [
    ],
  • "totalMaxPoints": -9007199254740991
}

과제 제출물 목록(사용자별 최신)

path Parameters
id
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
status
string
Enum: "SUBMITTED" "GRADED" "RETURNED"

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "submissions": [
    ],
  • "pendingCount": -9007199254740991
}

과제 제출물 상세(최신 + 이력)

path Parameters
id
required
string
submissionId
required
string

Responses

Response samples

Content type
application/json
{
  • "latest": {
    },
  • "history": [
    ]
}

과제 채점(점수 + 피드백)

path Parameters
id
required
string
submissionId
required
string
Request Body schema: application/json
required
integer or null
string or null
Array of objects <= 20 items

Responses

Request samples

Content type
application/json
{
  • "score": 10000,
  • "feedback": "string",
  • "rubric": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "profileId": "string",
  • "displayName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string",
  • "rubricEvaluation": {
    },
  • "similarity": {
    }
}

과제 반려(재제출 요구)

path Parameters
id
required
string
submissionId
required
string
Request Body schema: application/json
required
feedback
string <= 10000 characters

Responses

Request samples

Content type
application/json
{
  • "feedback": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "profileId": "string",
  • "displayName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string",
  • "rubricEvaluation": {
    },
  • "similarity": {
    }
}

그룹과제 설정(팀활동 연결·점수·제출 규칙)

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
integer or null
allowLateSubmit
boolean
submissionMethod
string
Enum: "ANY_MEMBER" "ALL_MEMBERS"
bodyRequired
boolean
fileRequired
boolean

Responses

Request samples

Content type
application/json
{
  • "spaceGroupSetId": "string",
  • "maxScore": 1,
  • "allowLateSubmit": true,
  • "submissionMethod": "ANY_MEMBER",
  • "bodyRequired": true,
  • "fileRequired": true
}

Response samples

Content type
application/json
{
  • "config": {
    },
  • "spaceGroupSetName": "string",
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED"
}

그룹과제 설정 + 팀활동 연결 유효성

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "config": {
    },
  • "spaceGroupSetName": "string",
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED"
}

그룹과제 제출물 목록(팀별 최신)

path Parameters
id
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
status
string
Enum: "SUBMITTED" "GRADED" "RETURNED"

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "submissions": [
    ],
  • "pendingCount": -9007199254740991,
  • "notSubmittedGroupCount": -9007199254740991
}

그룹과제 제출물 상세(최신 + 이력)

path Parameters
id
required
string
submissionId
required
string

Responses

Response samples

Content type
application/json
{
  • "latest": {
    },
  • "history": [
    ]
}

그룹과제 채점(팀 단위)

path Parameters
id
required
string
submissionId
required
string
Request Body schema: application/json
required
integer or null
string or null
Array of objects <= 20 items

Responses

Request samples

Content type
application/json
{
  • "score": 10000,
  • "feedback": "string",
  • "rubric": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "groupName": "string",
  • "submitterUserId": "string",
  • "submitterName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string"
}

그룹과제 반려(팀 단위)

path Parameters
id
required
string
submissionId
required
string
Request Body schema: application/json
required
feedback
string <= 10000 characters

Responses

Request samples

Content type
application/json
{
  • "feedback": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "groupName": "string",
  • "submitterUserId": "string",
  • "submitterName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string"
}

팀 제출물 구성원 개별 점수

path Parameters
id
required
string
submissionId
required
string

Responses

Response samples

Content type
application/json
{
  • "groupScore": -9007199254740991,
  • "members": [
    ]
}

팀 제출물 구성원 개별 점수 저장

path Parameters
id
required
string
submissionId
required
string
Request Body schema: application/json
required
required
Array of objects <= 100 items

Responses

Request samples

Content type
application/json
{
  • "scores": [
    ]
}

Response samples

Content type
application/json
{
  • "groupScore": -9007199254740991,
  • "members": [
    ]
}

상호평가 설정·문항 저장

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
allowDescriptiveAssessment
boolean
allowSelfAssessment
boolean
submitType
string
Enum: "GROUP_MEMBER" "INTER_GROUP"
Array of objects [ 1 .. 20 ] items

Responses

Request samples

Content type
application/json
{
  • "spaceGroupSetId": "string",
  • "allowDescriptiveAssessment": true,
  • "allowSelfAssessment": true,
  • "submitType": "GROUP_MEMBER",
  • "questions": [
    ]
}

Response samples

Content type
application/json
{
  • "snapshot": {
    },
  • "questions": [
    ],
  • "spaceGroupSetName": "string",
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED",
  • "hasSubmitters": true,
  • "submitCount": -9007199254740991
}

상호평가 설정·문항 + 연결 유효성

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "snapshot": {
    },
  • "questions": [
    ],
  • "spaceGroupSetName": "string",
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED",
  • "hasSubmitters": true,
  • "submitCount": -9007199254740991
}

상호평가 결과(대상별 문항 평균)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "questions": [
    ],
  • "targets": [
    ],
  • "expectedSubmitterCount": -9007199254740991,
  • "submittedSubmitterCount": -9007199254740991
}

과제 표절 검사 사용 설정

path Parameters
id
required
string
Request Body schema: application/json
required
enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "useSimilarityCheck": true,
  • "groupId": "string"
}

제출물 표절 검사 결과(관리자)

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "PENDING",
  • "copyRatio": 0,
  • "gptCopyRatio": 0
}

표절 검사 상세 뷰 URL(관리자)

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "url": "string"
}

문서/파일 연결

path Parameters
id
required
string
Request Body schema: application/json
required
fileId
required
string
pageCount
integer ( 0 .. 9007199254740991 ]

Responses

Request samples

Content type
application/json
{
  • "fileId": "string",
  • "pageCount": 9007199254740991
}

Response samples

Content type
application/json
{
  • "fileId": "string",
  • "mimeType": "string",
  • "pageCount": -9007199254740991,
  • "downloadUrl": "string"
}

문서 정보(매니저)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "fileId": "string",
  • "mimeType": "string",
  • "pageCount": -9007199254740991,
  • "downloadUrl": "string"
}

퀴즈 문항 저작(전체 교체)

path Parameters
id
required
string
Request Body schema: application/json
required
integer or null
Default: null
integer or null
Default: null
integer or null
Default: null
shuffleQuestions
boolean
Default: false
shuffleOptions
boolean
Default: false
resultExposeLevel
string
Default: "ALL"
Enum: "ALL" "SCORE_ONLY" "STATUS_ONLY"
scoreAggregation
string
Default: "HIGHEST"
Enum: "HIGHEST" "LAST" "AVERAGE"
partialCreditMultiple
boolean
Default: false
required
Array of objects [ 0 .. 60 ] items

Responses

Request samples

Content type
application/json
{
  • "passScore": null,
  • "maxAttempts": null,
  • "timeLimitMin": null,
  • "shuffleQuestions": false,
  • "shuffleOptions": false,
  • "resultExposeLevel": "ALL",
  • "scoreAggregation": "HIGHEST",
  • "partialCreditMultiple": false,
  • "questions": [
    ]
}

Response samples

Content type
application/json
{
  • "passScore": -9007199254740991,
  • "maxAttempts": -9007199254740991,
  • "timeLimitMin": -9007199254740991,
  • "shuffleQuestions": true,
  • "shuffleOptions": true,
  • "resultExposeLevel": "ALL",
  • "scoreAggregation": "HIGHEST",
  • "partialCreditMultiple": true,
  • "questions": [
    ]
}

퀴즈 상세(매니저, 정답 포함)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "passScore": -9007199254740991,
  • "maxAttempts": -9007199254740991,
  • "timeLimitMin": -9007199254740991,
  • "shuffleQuestions": true,
  • "shuffleOptions": true,
  • "resultExposeLevel": "ALL",
  • "scoreAggregation": "HIGHEST",
  • "partialCreditMultiple": true,
  • "questions": [
    ]
}

설문 문항 저작(전체 교체)

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
Default: null
isAnonymous
boolean
Default: false
allowResubmit
boolean
Default: false
required
Array of objects [ 0 .. 50 ] items

Responses

Request samples

Content type
application/json
{
  • "description": null,
  • "isAnonymous": false,
  • "allowResubmit": false,
  • "questions": [
    ]
}

Response samples

Content type
application/json
{
  • "description": "string",
  • "isAnonymous": true,
  • "allowResubmit": true,
  • "version": -9007199254740991,
  • "questions": [
    ]
}

설문 상세(매니저, 저작 화면용)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "description": "string",
  • "isAnonymous": true,
  • "allowResubmit": true,
  • "version": -9007199254740991,
  • "questions": [
    ]
}

설문 저작 영향도 사전 판정(저장 시 응답 초기화 여부)

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
Default: null
isAnonymous
boolean
Default: false
allowResubmit
boolean
Default: false
required
Array of objects [ 0 .. 50 ] items

Responses

Request samples

Content type
application/json
{
  • "description": null,
  • "isAnonymous": false,
  • "allowResubmit": false,
  • "questions": [
    ]
}

Response samples

Content type
application/json
{
  • "submitCount": -9007199254740991,
  • "isModified": true,
  • "needReset": true,
  • "reasons": [
    ]
}

설문 통계(매니저, 문항별 분포)

path Parameters
id
required
string
query Parameters
spaceId
string

Responses

Response samples

Content type
application/json
{
  • "isAnonymous": true,
  • "submittedCount": -9007199254740991,
  • "draftCount": -9007199254740991,
  • "notSubmittedCount": -9007199254740991,
  • "submitRate": 0,
  • "questionCount": -9007199254740991,
  • "questions": [
    ]
}

설문 주관식/기타 응답 목록(매니저)

path Parameters
id
required
string
questionId
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "answers": [
    ],
  • "nextCursor": "string"
}

설문 응답자 목록(매니저, 제출/미제출)

path Parameters
id
required
string
query Parameters
spaceId
required
string
status
string
Default: "ALL"
Enum: "ALL" "SUBMITTED" "NOT_SUBMITTED"
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "respondents": [
    ],
  • "nextCursor": "string"
}

설문 응답 결과 xlsx 내보내기(이메일 발송)

path Parameters
id
required
string
Request Body schema: application/json
required
email
required
string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "count": -9007199254740991
}

설문 미완료자 재알림 발송

path Parameters
id
required
string
Request Body schema: application/json
required
spaceId
required
string

Responses

Request samples

Content type
application/json
{
  • "spaceId": "string"
}

Response samples

Content type
application/json
{
  • "notifiedCount": -9007199254740991
}

퀴즈 응시 통계(매니저)

path Parameters
id
required
string
query Parameters
spaceId
string

Responses

Response samples

Content type
application/json
{
  • "submittedCount": -9007199254740991,
  • "gradedCount": -9007199254740991,
  • "pendingManualCount": -9007199254740991,
  • "averageScore": -9007199254740991,
  • "passRate": 0,
  • "notSubmittedCount": -9007199254740991,
  • "questions": [
    ]
}

퀴즈 응시 결과 xlsx 이메일 발송(매니저)

path Parameters
id
required
string
Request Body schema: application/json
required
email
required
string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "count": -9007199254740991
}

퀴즈 제출 응시 목록(매니저 채점)

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "attempts": [
    ],
  • "nextCursor": "string"
}

응시 상세(매니저 채점, 답안·정답·피드백)

path Parameters
id
required
string
attemptId
required
string

Responses

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "profileId": "string",
  • "displayName": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "scoringCompletedAt": "string",
  • "answers": [
    ]
}

서술형 답안 채점 + 피드백(매니저)

path Parameters
id
required
string
attemptId
required
string
answerId
required
string
Request Body schema: application/json
required
pointsAwarded
required
integer [ 0 .. 9007199254740991 ]
feedback
string <= 5000 characters

Responses

Request samples

Content type
application/json
{
  • "pointsAwarded": 9007199254740991,
  • "feedback": "string"
}

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "profileId": "string",
  • "displayName": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "scoringCompletedAt": "string",
  • "answers": [
    ]
}

files

presigned 업로드 URL 발급(pending 파일 생성)

Request Body schema: application/json
required
fileName
required
string [ 1 .. 500 ] characters
contentType
required
string [ 1 .. 200 ] characters
size
integer [ 0 .. 1073741824 ]

Responses

Request samples

Content type
application/json
{
  • "fileName": "string",
  • "contentType": "string",
  • "size": 1073741824
}

Response samples

Content type
application/json
{
  • "fileId": "string",
  • "uploadUrl": "string",
  • "contentType": "string"
}

업로드 확정(스토리지 검증 후 uploaded)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "originalName": "string",
  • "contentType": "string",
  • "size": -9007199254740991,
  • "status": "pending",
  • "downloadUrl": "string",
  • "createdAt": "string"
}

문서 미리보기(변환 PDF) 상태·URL

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "none",
  • "pdfUrl": "string",
  • "pageCount": -9007199254740991,
  • "reason": "string"
}

파일 메타 + presigned 다운로드 URL

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "originalName": "string",
  • "contentType": "string",
  • "size": -9007199254740991,
  • "status": "pending",
  • "downloadUrl": "string",
  • "createdAt": "string"
}

library-content

라이브러리 트리(노드 전체)

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

라이브러리 노드 생성

Request Body schema: application/json
required
string or null
Default: null
title
required
string [ 1 .. 200 ] characters
prevNodeId
string
nextNodeId
string

Responses

Request samples

Content type
application/json
{
  • "parentId": null,
  • "title": "string",
  • "prevNodeId": "string",
  • "nextNodeId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "scope": "LIBRARY",
  • "spaceId": "string",
  • "parentId": "string",
  • "title": "string",
  • "rank": "string",
  • "depth": -9007199254740991,
  • "childCount": -9007199254740991,
  • "contentCount": -9007199254740991
}

라이브러리 직속 자식 노드(lazy)

query Parameters
parentId
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

라이브러리 노드 이름 변경

path Parameters
id
required
string
Request Body schema: application/json
required
title
required
string [ 1 .. 200 ] characters

Responses

Request samples

Content type
application/json
{
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "scope": "LIBRARY",
  • "spaceId": "string",
  • "parentId": "string",
  • "title": "string",
  • "rank": "string",
  • "depth": -9007199254740991,
  • "childCount": -9007199254740991,
  • "contentCount": -9007199254740991
}

라이브러리 노드 삭제(서브트리)

path Parameters
id
required
string

Responses

라이브러리 노드 이동/정렬

path Parameters
id
required
string
Request Body schema: application/json
required
string or null
Default: null
prevNodeId
string
nextNodeId
string

Responses

Request samples

Content type
application/json
{
  • "parentId": null,
  • "prevNodeId": "string",
  • "nextNodeId": "string"
}

라이브러리 노드 배치 목록

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "placements": [
    ],
  • "nextCursor": "string"
}

라이브러리 배치(참조/복제)

Request Body schema: application/json
required
contentId
required
string
nodeId
required
string
mode
string
Default: "REFERENCE"
Enum: "REFERENCE" "COPY"
prevPlacementId
string
nextPlacementId
string
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "contentId": "string",
  • "nodeId": "string",
  • "mode": "REFERENCE",
  • "prevPlacementId": "string",
  • "nextPlacementId": "string",
  • "openAt": "2019-08-24T14:15:22Z",
  • "dueAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "nodeId": "string",
  • "rank": "string",
  • "content": {
    },
  • "isOwnedHere": true,
  • "openAt": "string",
  • "dueAt": "string"
}

라이브러리 배치 이동/정렬

path Parameters
id
required
string
Request Body schema: application/json
required
nodeId
required
string
prevPlacementId
string
nextPlacementId
string

Responses

Request samples

Content type
application/json
{
  • "nodeId": "string",
  • "prevPlacementId": "string",
  • "nextPlacementId": "string"
}

라이브러리 배치 제거

path Parameters
id
required
string

Responses

jobs

직무 목록 — 검색·정렬·페이지네이션

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters
sort
string
Default: "name"
Enum: "name" "createdAt" "memberCount"
order
string
Default: "asc"
Enum: "asc" "desc"

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "jobs": [
    ],
  • "bulkCreateMaxCount": -9007199254740991
}

직무 생성

Request Body schema: application/json
required
name
required
string [ 1 .. 50 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string"
}

직무 일괄 생성 — 중복은 건너뛰고 리포트

Request Body schema: application/json
required
required
Array of objects [ 1 .. 50 ] items

Responses

Request samples

Content type
application/json
{
  • "jobs": [
    ]
}

Response samples

Content type
application/json
{
  • "created": [
    ],
  • "duplicatedNames": [
    ]
}

직무 상세(구성원)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string",
  • "members": [
    ]
}

직무 수정

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 50 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string",
  • "members": [
    ]
}

직무 삭제

path Parameters
id
required
string

Responses

직무에 구성원 추가(일괄)

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string",
  • "members": [
    ]
}

직무에서 구성원 제거

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string",
  • "members": [
    ]
}

members

멤버 계정 직접 발급

Request Body schema: application/json
required
userId
string [ 1 .. 255 ] characters ^[a-zA-Z0-9_-]+$
email
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
displayName
required
string [ 1 .. 255 ] characters

문자·숫자·공백과 _ - [ ] ( ) { } / * 만 사용할 수 있습니다.

roleKey
string non-empty
password
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

Responses

Request samples

Content type
application/json
{
  • "userId": "string",
  • "email": "user@example.com",
  • "displayName": "string",
  • "roleKey": "string",
  • "password": "stringst"
}

Response samples

Content type
application/json
{
  • "member": {
    },
  • "tempPassword": "string"
}

테넌트 멤버 목록 (검색·역할·상태·커스텀 필터 + 정렬 + 커스텀 필드 값)

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters
roleKey
string non-empty
Array of strings or string
status
string
Enum: "active" "inactive"
Array of strings or string
Array of objects or string
userGroupId
string non-empty
excludeUserGroupId
string non-empty
lastLoginFrom
string
lastLoginTo
string
isIssuedAccount
string
Enum: "true" "false"
activeSpaceCountMin
integer [ 0 .. 9007199254740991 ]
activeSpaceCountMax
integer [ 0 .. 9007199254740991 ]
inactiveSpaceCountMin
integer [ 0 .. 9007199254740991 ]
inactiveSpaceCountMax
integer [ 0 .. 9007199254740991 ]
string or string

정렬 키. 기본 컬럼(displayName | userId | email | lastLoginAt | createdAt | isActive | activeSpaceCount | inactiveSpaceCount) 중 하나이거나 커스텀 필드의 id(uuid). 그 외 값은 400 unknown sort field. 커스텀 필드는 key 가 아니라 id 를 보낸다.

sortDir
string
Enum: "asc" "desc"
filterFieldId
string non-empty
filterValue
string [ 1 .. 255 ] characters
include
string
Value: "spaceCounts"

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991
}

멤버 CSV 내보내기 (현재 필터·정렬 반영)

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters
roleKey
string non-empty
Array of strings or string
status
string
Enum: "active" "inactive"
Array of strings or string
Array of objects or string
userGroupId
string non-empty
excludeUserGroupId
string non-empty
lastLoginFrom
string
lastLoginTo
string
isIssuedAccount
string
Enum: "true" "false"
activeSpaceCountMin
integer [ 0 .. 9007199254740991 ]
activeSpaceCountMax
integer [ 0 .. 9007199254740991 ]
inactiveSpaceCountMin
integer [ 0 .. 9007199254740991 ]
inactiveSpaceCountMax
integer [ 0 .. 9007199254740991 ]
string or string

정렬 키. 기본 컬럼(displayName | userId | email | lastLoginAt | createdAt | isActive | activeSpaceCount | inactiveSpaceCount) 중 하나이거나 커스텀 필드의 id(uuid). 그 외 값은 400 unknown sort field. 커스텀 필드는 key 가 아니라 id 를 보낸다.

sortDir
string
Enum: "asc" "desc"
filterFieldId
string non-empty
filterValue
string [ 1 .. 255 ] characters
include
string
Value: "spaceCounts"

Responses

멤버 단건(상세) — role + 커스텀 필드 값

path Parameters
userPkId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "profileId": "string",
  • "userId": "string",
  • "displayName": "string",
  • "email": "string",
  • "role": {
    },
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string",
  • "pictureUrl": "string",
  • "affiliation": "string",
  • "externalMemberCode": "string",
  • "bio": "string",
  • "isIssuedAccount": true,
  • "activeSpaceCount": -9007199254740991,
  • "inactiveSpaceCount": -9007199254740991,
  • "fieldValues": [
    ]
}

멤버 제거

path Parameters
userPkId
required
string

Responses

멤버 프로필 수정(관리자)

path Parameters
userPkId
required
string
Request Body schema: application/json
required
displayName
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "affiliation": "string",
  • "externalMemberCode": "string",
  • "bio": "string",
  • "pictureFileId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "profileId": "string",
  • "userId": "string",
  • "displayName": "string",
  • "email": "string",
  • "role": {
    },
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string",
  • "pictureUrl": "string",
  • "affiliation": "string",
  • "externalMemberCode": "string",
  • "bio": "string",
  • "isIssuedAccount": true,
  • "activeSpaceCount": -9007199254740991,
  • "inactiveSpaceCount": -9007199254740991,
  • "fieldValues": [
    ]
}

구성원의 참여 공간 목록

path Parameters
userPkId
required
string

Responses

Response samples

Content type
application/json
{
  • "spaces": [
    ],
  • "activeCount": -9007199254740991,
  • "inactiveCount": -9007199254740991
}

구성원의 소속 조직 + 직위

path Parameters
userPkId
required
string

Responses

Response samples

Content type
application/json
{
  • "orgs": [
    ],
  • "position": {
    }
}

구성원의 수강 이력(공간별 진도 요약)

path Parameters
userPkId
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "enrollments": [
    ]
}

구성원의 프로필·공간별 수강 이력 상세

path Parameters
userPkId
required
string
profileId
required
string
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "profileId": "string",
  • "profileName": "string",
  • "spaceId": "string",
  • "spaceName": "string",
  • "totalContentCount": -9007199254740991,
  • "completedContentCount": -9007199254740991,
  • "progressPct": -9007199254740991,
  • "contents": [
    ]
}

멤버 role 변경

path Parameters
userPkId
required
string
Request Body schema: application/json
required
roleKey
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "roleKey": "string"
}

멤버 일괄 삭제 — 건별 처리 후 실패 리포트(전체 롤백 아님)

Request Body schema: application/json
required
userPkIds
required
Array of strings [ 1 .. 10 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "userPkIds": [
    ]
}

Response samples

Content type
application/json
{
  • "deleted": [
    ],
  • "failed": [
    ]
}

멤버 비밀번호 일괄 재설정 — 건별 처리 후 실패 리포트(전체 롤백 아님). 응답에 비밀번호 없음

Request Body schema: application/json
required
userPkIds
required
Array of strings [ 1 .. 100 ] items [ items non-empty ]
password
required
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

Responses

Request samples

Content type
application/json
{
  • "userPkIds": [
    ],
  • "password": "stringst"
}

Response samples

Content type
application/json
{
  • "succeeded": [
    ],
  • "failed": [
    ]
}

멤버 비밀번호 재설정(관리자) — 발급 계정만

path Parameters
userPkId
required
string
Request Body schema: application/json
required
password
string [ 8 .. 255 ] characters

영문 대/소문자·숫자·특수문자 중 2종류 이상을 포함해야 합니다. 허용 문자: 영문, 숫자, `!@#$%^&*()-=_+~|[]{}:;'"<>,.?/

Responses

Request samples

Content type
application/json
{
  • "password": "stringst"
}

Response samples

Content type
application/json
{
  • "tempPassword": "string"
}

member-fields

구성원 정보 필드 목록(기본+커스텀)

Responses

Response samples

Content type
application/json
{
  • "fields": [
    ]
}

커스텀 필드 생성

Request Body schema: application/json
required
key
required
string [ 1 .. 100 ] characters ^[a-z0-9_]+$
label
required
string [ 1 .. 255 ] characters
type
required
string
Enum: "SHORT_TEXT" "LONG_TEXT" "NUMBER" "DATE" "SELECT" "MULTI_SELECT"
options
Array of strings <= 50 items [ items [ 1 .. 100 ] characters ]
required
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "required": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "isDefault": true,
  • "required": true,
  • "order": -9007199254740991,
  • "isActive": true
}

정보 필드 일괄 저장 — 삭제·수정·생성·정렬을 한 트랜잭션으로 (응답=최신 목록)

Request Body schema: application/json
required
deletes
Array of strings <= 200 items
Array of objects <= 200 items
Array of objects <= 200 items
orderedIds
Array of strings <= 200 items

Responses

Request samples

Content type
application/json
{
  • "deletes": [
    ],
  • "updates": [
    ],
  • "creates": [
    ],
  • "orderedIds": [
    ]
}

Response samples

Content type
application/json
{
  • "fields": [
    ]
}

커스텀 필드 수정

path Parameters
id
required
string
Request Body schema: application/json
required
label
string [ 1 .. 255 ] characters
options
Array of strings <= 50 items [ items [ 1 .. 100 ] characters ]
required
boolean
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "options": [
    ],
  • "required": true,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "isDefault": true,
  • "required": true,
  • "order": -9007199254740991,
  • "isActive": true
}

커스텀 필드 삭제(값 cascade)

path Parameters
id
required
string

Responses

커스텀 필드 옵션별 사용 개수

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "usage": {
    }
}

정보 필드 순서 재배치 — 기본 필드(default:*) 포함

Request Body schema: application/json
required
orderedIds
required
Array of strings <= 200 items

Responses

Request samples

Content type
application/json
{
  • "orderedIds": [
    ]
}

Response samples

Content type
application/json
{
  • "fields": [
    ]
}

멤버 커스텀 필드 값 조회

path Parameters
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "values": [
    ],
  • "unfilledRequiredFieldIds": [
    ]
}

멤버 커스텀 필드 값 저장(upsert)

path Parameters
profileId
required
string
Request Body schema: application/json
required
required
Array of objects <= 200 items

Responses

Request samples

Content type
application/json
{
  • "values": [
    ]
}

Response samples

Content type
application/json
{
  • "values": [
    ],
  • "unfilledRequiredFieldIds": [
    ]
}

orgs

조직도(flat) + 미배정 구성원 수

Responses

Response samples

Content type
application/json
{
  • "orgs": [
    ],
  • "unassignedCount": -9007199254740991,
  • "treeUpdatedAt": "string"
}

조직 생성(중첩 가능)

Request Body schema: application/json
required
string or null
name
required
string [ 1 .. 255 ] characters
treeUpdatedAt
string

Responses

Request samples

Content type
application/json
{
  • "parentId": "string",
  • "name": "string",
  • "treeUpdatedAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "parentId": "string",
  • "name": "string",
  • "order": -9007199254740991,
  • "leaderProfileId": "string",
  • "leaderName": "string",
  • "leaderEmail": "string",
  • "memberCount": -9007199254740991,
  • "updatedAt": "string"
}

조직 미배정 구성원 목록

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ]
}

조직 수정(이름/이동/순서/조직장)

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
string or null
order
integer [ -9007199254740991 .. 9007199254740991 ]
string or null
treeUpdatedAt
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "parentId": "string",
  • "order": -9007199254740991,
  • "leaderProfileId": "string",
  • "treeUpdatedAt": "string"
}

조직 삭제 — 하위 조직까지 함께 삭제(레거시 파리티)

path Parameters
id
required
string
query Parameters
treeUpdatedAt
string

Responses

조직 소속 구성원

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

조직에 구성원 배정(일괄)

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

조직 구성원 일괄 제거

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

조직 간 구성원 이동

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]
targetOrgId
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ],
  • "targetOrgId": "string"
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

조직에서 구성원 제거

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

positions

직위 목록 + 활성화 여부

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "positions": [
    ]
}

직위 생성

Request Body schema: application/json
required
name
required
string [ 1 .. 50 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "order": -9007199254740991,
  • "memberCount": -9007199254740991,
  • "updatedAt": "string"
}

직위 미설정 구성원 목록

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ]
}

직위 순서 일괄 변경

Request Body schema: application/json
required
positionIds
required
Array of strings [ 1 .. 20 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "positionIds": [
    ]
}

Response samples

Content type
application/json
{
  • "enabled": true,
  • "positions": [
    ]
}

직위 기능 활성화 토글

Request Body schema: application/json
required
enabled
required
boolean

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "enabled": true,
  • "positions": [
    ]
}

직위 상세

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "order": -9007199254740991,
  • "memberCount": -9007199254740991,
  • "updatedAt": "string"
}

직위 수정(이름/순서)

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 50 ] characters
order
integer [ -9007199254740991 .. 9007199254740991 ]

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "order": -9007199254740991
}

직위 삭제(구성원 직위 해제)

path Parameters
id
required
string

Responses

직위 소속 구성원

path Parameters
id
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ]
}

구성원 직위 지정(일괄, null=해제)

Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 1000 ] items
required
string or null

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ],
  • "positionId": "string"
}

profile-card

프로필 카드 설정 조회

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

프로필 카드 설정 저장(전체 교체)

Request Body schema: application/json
required
required
Array of objects <= 500 items

Responses

Request samples

Content type
application/json
{
  • "entries": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

user-groups

유저 그룹 목록 — 검색·페이지네이션 + 멤버 아바타 + 적용 권한 수

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "groups": [
    ]
}

유저 그룹 생성

Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "createdAt": "string",
  • "memberPictureUrls": [
    ],
  • "permissionCount": -9007199254740991
}

유저 그룹 상세(정보 + 적용 권한)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "createdAt": "string",
  • "memberPictureUrls": [
    ],
  • "permissionCount": -9007199254740991,
  • "permissionCodes": [
    ]
}

유저 그룹 정보 수정

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "createdAt": "string",
  • "memberPictureUrls": [
    ],
  • "permissionCount": -9007199254740991,
  • "permissionCodes": [
    ]
}

유저 그룹 삭제

path Parameters
id
required
string

Responses

그룹 멤버 목록 — 검색·페이지네이션

path Parameters
id
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ]
}

그룹 멤버 추가(일괄)

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
Array of strings [ 1 .. 500 ] items
emails
Array of strings <email> [ 1 .. 500 ] items [ items <email > <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z... ]
externalMemberCodes
Array of strings [ 1 .. 500 ] items [ items [ 1 .. 255 ] characters ]

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ],
  • "emails": [
    ],
  • "externalMemberCodes": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "createdAt": "string",
  • "memberPictureUrls": [
    ],
  • "permissionCount": -9007199254740991,
  • "permissionCodes": [
    ]
}

그룹 멤버 추가 사전 검증(이메일·고유번호)

path Parameters
id
required
string
Request Body schema: application/json
required
emails
Array of strings [ 1 .. 500 ] items [ items <= 255 characters ]
externalMemberCodes
Array of strings [ 1 .. 500 ] items [ items [ 1 .. 255 ] characters ]

Responses

Request samples

Content type
application/json
{
  • "emails": [
    ],
  • "externalMemberCodes": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ]
}

그룹 멤버 제거

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "memberCount": -9007199254740991,
  • "createdAt": "string",
  • "memberPictureUrls": [
    ],
  • "permissionCount": -9007199254740991,
  • "permissionCodes": [
    ]
}

그룹 단위 공간 초대(공간 다중) — 스냅샷, 공간별 결과 리포트

path Parameters
id
required
string
Request Body schema: application/json
required
spaceIds
required
Array of strings [ 1 .. 100 ] items [ items non-empty ]
role
string
Default: "PARTICIPANT"
Enum: "ADMIN" "PARTICIPANT"

Responses

Request samples

Content type
application/json
{
  • "spaceIds": [
    ],
  • "role": "ADMIN"
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "failedSpaceIds": [
    ],
  • "groupMemberCount": -9007199254740991
}

tenant-features

기능 availability (플랜 ∧ 기관 토글 해석 결과)

Responses

Response samples

Content type
application/json
{
  • "features": {
    }
}

tenant-agreements

기관 자체 약관 목록 — 폐지 포함 + 동의 수

Responses

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

기관 자체 약관 생성 (topic 은 이후 변경 불가)

Request Body schema: application/json
required
topic
required
string [ 1 .. 50 ] characters ^[A-Z0-9_]+$
isEssential
boolean
Default: true
isVisible
boolean
Default: true
order
integer [ 0 .. 9999 ]
Default: 0
integer or null
Default: null
object
object

Responses

Request samples

Content type
application/json
{
  • "topic": "string",
  • "isEssential": true,
  • "isVisible": true,
  • "order": 0,
  • "consentTtlDays": null,
  • "title": {
    },
  • "documentUrl": {}
}

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

기관 자체 약관 수정(부분)

path Parameters
topic
required
string
Request Body schema: application/json
required
isEssential
boolean
isVisible
boolean
order
integer [ 0 .. 9999 ]
integer or null
isActive
boolean
object
object

Responses

Request samples

Content type
application/json
{
  • "isEssential": true,
  • "isVisible": true,
  • "order": 9999,
  • "consentTtlDays": 1,
  • "isActive": true,
  • "title": {
    },
  • "documentUrl": {}
}

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

기관 자체 약관 개정(version+1)

path Parameters
topic
required
string
Request Body schema: application/json
required
currentVersion
required
integer [ 1 .. 9007199254740991 ]

Responses

Request samples

Content type
application/json
{
  • "currentVersion": 1
}

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

tenant-settings

자사 테넌트 설정 조회 (로그인)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "description": "string",
  • "contactInfo": "string",
  • "loginIdentifier": "userId",
  • "currentPlan": "FREE",
  • "logoImageUrl": "string",
  • "customFieldMaxCount": -9007199254740991,
  • "currentContractPeriod": {
    },
  • "sessionPolicy": {
    }
}

자사 테넌트 설정 수정

Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
string or null
string or null
object

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "contactInfo": "string",
  • "sessionPolicy": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "description": "string",
  • "contactInfo": "string",
  • "loginIdentifier": "userId",
  • "currentPlan": "FREE",
  • "logoImageUrl": "string",
  • "customFieldMaxCount": -9007199254740991,
  • "currentContractPeriod": {
    },
  • "sessionPolicy": {
    }
}

표절 검사(CopyKiller) 연동 설정 조회

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "bridgeApiUrl": "string",
  • "serverApiUrl": "string"
}

표절 검사(CopyKiller) 연동 설정 수정

Request Body schema: application/json
required
enabled
boolean
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "bridgeApiUrl": "string",
  • "serverApiUrl": "string"
}

Response samples

Content type
application/json
{
  • "enabled": true,
  • "bridgeApiUrl": "string",
  • "serverApiUrl": "string"
}

challenges

챌린지 목록(매니저)

path Parameters
spaceId
required
string
query Parameters
joined
boolean
state
string
Enum: "BEFORE_START" "ONGOING" "FINISHED"

Responses

Response samples

Content type
application/json
{
  • "challenges": [
    ]
}

챌린지 생성

path Parameters
spaceId
required
string
Request Body schema: application/json
required
title
required
string [ 1 .. 30 ] characters
emoji
required
string [ 1 .. 16 ] characters
body
string <= 15000 characters
Default: ""
includeAuthor
boolean
Default: false
required
Array of objects [ 1 .. 100 ] items
fileIds
Array of strings <= 20 items
Default: []
reminderMinutes
Array of integers <= 5 items [ items ( 0 .. 43200 ] ]
Default: []

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "emoji": "string",
  • "body": "",
  • "includeAuthor": false,
  • "tasks": [
    ],
  • "fileIds": [ ],
  • "reminderMinutes": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "title": "string",
  • "emoji": "string",
  • "authorName": "string",
  • "isWrittenByAdmin": true,
  • "startedAt": "string",
  • "endedAt": "string",
  • "state": "BEFORE_START",
  • "memberCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "joined": true,
  • "progress": 0,
  • "totalProgress": 0,
  • "createdAt": "string",
  • "body": "string",
  • "doneTaskCount": -9007199254740991,
  • "tasks": [
    ],
  • "reminderMinutes": [
    ],
  • "attachments": [
    ]
}

챌린지 상세(매니저)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "title": "string",
  • "emoji": "string",
  • "authorName": "string",
  • "isWrittenByAdmin": true,
  • "startedAt": "string",
  • "endedAt": "string",
  • "state": "BEFORE_START",
  • "memberCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "joined": true,
  • "progress": 0,
  • "totalProgress": 0,
  • "createdAt": "string",
  • "body": "string",
  • "doneTaskCount": -9007199254740991,
  • "tasks": [
    ],
  • "reminderMinutes": [
    ],
  • "attachments": [
    ]
}

챌린지 수정

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
title
required
string [ 1 .. 30 ] characters
emoji
required
string [ 1 .. 16 ] characters
body
string <= 15000 characters
Default: ""
includeAuthor
boolean
Default: false
required
Array of objects [ 1 .. 100 ] items
fileIds
Array of strings <= 20 items
Default: []
reminderMinutes
Array of integers <= 5 items [ items ( 0 .. 43200 ] ]
Default: []

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "emoji": "string",
  • "body": "",
  • "includeAuthor": false,
  • "tasks": [
    ],
  • "fileIds": [ ],
  • "reminderMinutes": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "title": "string",
  • "emoji": "string",
  • "authorName": "string",
  • "isWrittenByAdmin": true,
  • "startedAt": "string",
  • "endedAt": "string",
  • "state": "BEFORE_START",
  • "memberCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "joined": true,
  • "progress": 0,
  • "totalProgress": 0,
  • "createdAt": "string",
  • "body": "string",
  • "doneTaskCount": -9007199254740991,
  • "tasks": [
    ],
  • "reminderMinutes": [
    ],
  • "attachments": [
    ]
}

챌린지 삭제

path Parameters
spaceId
required
string
id
required
string

Responses

챌린지 참가자(진행률 포함)

path Parameters
spaceId
required
string
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

챌린지 참가자 추가

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings non-empty

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

챌린지 참가자 제외

path Parameters
spaceId
required
string
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

챌린지 복제

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
title
required
string [ 1 .. 30 ] characters
startedAt
required
string

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "startedAt": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "title": "string",
  • "emoji": "string",
  • "authorName": "string",
  • "isWrittenByAdmin": true,
  • "startedAt": "string",
  • "endedAt": "string",
  • "state": "BEFORE_START",
  • "memberCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "joined": true,
  • "progress": 0,
  • "totalProgress": 0,
  • "createdAt": "string",
  • "body": "string",
  • "doneTaskCount": -9007199254740991,
  • "tasks": [
    ],
  • "reminderMinutes": [
    ],
  • "attachments": [
    ]
}

진행 현황 엑셀 내보내기

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
email
required
string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "count": -9007199254740991
}

참가자 추가 후보 검색

path Parameters
spaceId
required
string
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
keyword
string <= 50 characters

Responses

Response samples

Content type
application/json
{
  • "candidates": [
    ],
  • "nextCursor": "string"
}

참가자 일괄 제거

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items [ items non-empty ]

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

참가자 진행 상세

path Parameters
spaceId
required
string
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "profileId": "string",
  • "displayName": "string",
  • "doneTaskCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "progress": 0,
  • "tasks": [
    ]
}

참가자 완료 상세

path Parameters
spaceId
required
string
id
required
string
taskId
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "taskId": "string",
  • "profileId": "string",
  • "completedAt": "string",
  • "postId": "string"
}

할 일별 참가자 완료 현황

path Parameters
spaceId
required
string
id
required
string
taskId
required
string
query Parameters
status
string
Enum: "ALL" "COMPLETED" "INCOMPLETE"
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "allMemberCount": -9007199254740991,
  • "completedMemberCount": -9007199254740991,
  • "incompleteMemberCount": -9007199254740991,
  • "members": [
    ],
  • "nextCursor": "string"
}

할 일 미완료자 독려 알림

path Parameters
spaceId
required
string
id
required
string
taskId
required
string

Responses

Response samples

Content type
application/json
{
  • "notified": -9007199254740991
}

semesters

학기 목록

Responses

Response samples

Content type
application/json
{
  • "semesters": [
    ]
}

학기 생성

Request Body schema: application/json
required
name
required
string [ 1 .. 100 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "order": -9007199254740991
}

학기 수정

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 100 ] characters
order
integer [ -9007199254740991 .. 9007199254740991 ]

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "order": -9007199254740991
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "order": -9007199254740991
}

학기 삭제

path Parameters
id
required
string

Responses

space-content

공간 콘텐츠 트리(매니저)

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

공간 콘텐츠 노드 생성

path Parameters
spaceId
required
string
Request Body schema: application/json
required
string or null
Default: null
title
required
string [ 1 .. 200 ] characters
prevNodeId
string
nextNodeId
string

Responses

Request samples

Content type
application/json
{
  • "parentId": null,
  • "title": "string",
  • "prevNodeId": "string",
  • "nextNodeId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "scope": "LIBRARY",
  • "spaceId": "string",
  • "parentId": "string",
  • "title": "string",
  • "rank": "string",
  • "depth": -9007199254740991,
  • "childCount": -9007199254740991,
  • "contentCount": -9007199254740991
}

공간 직속 자식 노드(lazy)

path Parameters
spaceId
required
string
query Parameters
parentId
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

공간 콘텐츠 노드 이름 변경

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
title
required
string [ 1 .. 200 ] characters

Responses

Request samples

Content type
application/json
{
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "scope": "LIBRARY",
  • "spaceId": "string",
  • "parentId": "string",
  • "title": "string",
  • "rank": "string",
  • "depth": -9007199254740991,
  • "childCount": -9007199254740991,
  • "contentCount": -9007199254740991
}

공간 콘텐츠 노드 삭제(서브트리)

path Parameters
spaceId
required
string
id
required
string

Responses

공간 콘텐츠 노드 이동/정렬

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
string or null
Default: null
prevNodeId
string
nextNodeId
string

Responses

Request samples

Content type
application/json
{
  • "parentId": null,
  • "prevNodeId": "string",
  • "nextNodeId": "string"
}

공간 노드 배치 목록(매니저)

path Parameters
spaceId
required
string
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "placements": [
    ],
  • "nextCursor": "string"
}

공간 배치(참조/복제)

path Parameters
spaceId
required
string
Request Body schema: application/json
required
contentId
required
string
nodeId
required
string
mode
string
Default: "REFERENCE"
Enum: "REFERENCE" "COPY"
prevPlacementId
string
nextPlacementId
string
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "contentId": "string",
  • "nodeId": "string",
  • "mode": "REFERENCE",
  • "prevPlacementId": "string",
  • "nextPlacementId": "string",
  • "openAt": "2019-08-24T14:15:22Z",
  • "dueAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "nodeId": "string",
  • "rank": "string",
  • "content": {
    },
  • "isOwnedHere": true,
  • "openAt": "string",
  • "dueAt": "string"
}

공간 배치 응시 가능 기간 설정

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "openAt": "2019-08-24T14:15:22Z",
  • "dueAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "nodeId": "string",
  • "rank": "string",
  • "content": {
    },
  • "isOwnedHere": true,
  • "openAt": "string",
  • "dueAt": "string"
}

공간 배치 이동/정렬

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
nodeId
required
string
prevPlacementId
string
nextPlacementId
string

Responses

Request samples

Content type
application/json
{
  • "nodeId": "string",
  • "prevPlacementId": "string",
  • "nextPlacementId": "string"
}

공간 배치 제거

path Parameters
spaceId
required
string
id
required
string

Responses

spaces

공간 입장 코드/링크 목록

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "codes": [
    ]
}

공간 입장 코드/링크 발급

path Parameters
id
required
string
Request Body schema: application/json
required
role
string
Default: "PARTICIPANT"
Enum: "ADMIN" "PARTICIPANT"
string or null
integer or null

Responses

Request samples

Content type
application/json
{
  • "role": "ADMIN",
  • "password": "string",
  • "expiresInDays": 1
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "role": "ADMIN",
  • "code": "string",
  • "link": "string",
  • "enabled": true,
  • "password": "string",
  • "expiresAt": "string",
  • "createdAt": "string"
}

입장 코드 활성/비번 수정

path Parameters
id
required
string
codeId
required
string
Request Body schema: application/json
required
enabled
boolean
string or null

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "role": "ADMIN",
  • "code": "string",
  • "link": "string",
  • "enabled": true,
  • "password": "string",
  • "expiresAt": "string",
  • "createdAt": "string"
}

입장 코드 삭제

path Parameters
id
required
string
codeId
required
string

Responses

공간 차단 목록

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "blocks": [
    ]
}

공간 차단(멤버 내보내고 입장 차단)

path Parameters
id
required
string
Request Body schema: application/json
required
userId
required
string non-empty
string or null

Responses

Request samples

Content type
application/json
{
  • "userId": "string",
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "blocks": [
    ]
}

차단 해제

path Parameters
id
required
string
blockId
required
string

Responses

공간 목록 xlsx 이메일 발송(현재 필터)

query Parameters
search
string [ 1 .. 255 ] characters
isActive
string
Enum: "true" "false"
semester
string non-empty
autoJoin
string
Enum: "true" "false"
exitRestricted
string
Enum: "true" "false"
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
Request Body schema: application/json
required
email
required
string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "count": -9007199254740991
}

공간 목록(필터·검색·카운트)

query Parameters
search
string [ 1 .. 255 ] characters
isActive
string
Enum: "true" "false"
semester
string non-empty
autoJoin
string
Enum: "true" "false"
exitRestricted
string
Enum: "true" "false"
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "spaces": [
    ],
  • "total": -9007199254740991,
  • "nextCursor": "string"
}

공간 만들기

Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null
isPublic
boolean
autoJoin
boolean
exitRestricted
boolean
allowFileDownload
boolean
vodConcurrentLimit
boolean
retainEnrollmentHistory
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailFileId": "string",
  • "semester": "string",
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailUrl": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "adminCount": -9007199254740991,
  • "participantCount": -9007199254740991,
  • "postCount": -9007199254740991,
  • "contentCount": -9007199254740991,
  • "createdAt": "string",
  • "fieldValues": [
    ]
}

공간 상세

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailUrl": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "adminCount": -9007199254740991,
  • "participantCount": -9007199254740991,
  • "postCount": -9007199254740991,
  • "contentCount": -9007199254740991,
  • "createdAt": "string",
  • "fieldValues": [
    ]
}

공간 수정/설정(비활성화 시 자동입장·나가기제한 강제 OFF)

path Parameters
id
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null
isActive
boolean
isPublic
boolean
startMenu
string
Enum: "announcement" "content" "community" "team" "challenge" "grade"
enabledMenus
Array of strings <= 10 items
Items Enum: "announcement" "content" "community" "team" "challenge" "grade"
messageEnabled
boolean
groupActive
boolean
autoJoin
boolean
exitRestricted
boolean
allowFileDownload
boolean
vodConcurrentLimit
boolean
retainEnrollmentHistory
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailFileId": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailUrl": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "adminCount": -9007199254740991,
  • "participantCount": -9007199254740991,
  • "postCount": -9007199254740991,
  • "contentCount": -9007199254740991,
  • "createdAt": "string",
  • "fieldValues": [
    ]
}

공간 삭제(soft + 멤버 LEFT)

path Parameters
id
required
string

Responses

공간 복제(설정 복사)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailUrl": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "adminCount": -9007199254740991,
  • "participantCount": -9007199254740991,
  • "postCount": -9007199254740991,
  • "contentCount": -9007199254740991,
  • "createdAt": "string",
  • "fieldValues": [
    ]
}

공간 멤버(관리자/참여자)

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

공간 멤버 추가(role 지정) — 차단·기존 멤버는 건별 리포트로 돌려준다

path Parameters
id
required
string
Request Body schema: application/json
required
profileIds
required
Array of strings [ 1 .. 500 ] items
role
string
Default: "PARTICIPANT"
Enum: "ADMIN" "PARTICIPANT"

Responses

Request samples

Content type
application/json
{
  • "profileIds": [
    ],
  • "role": "ADMIN"
}

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string",
  • "added": [
    ],
  • "failed": [
    ]
}

공간 멤버 제거(프로필 단위)

path Parameters
id
required
string
profileId
required
string

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

space-defaults

공간 기본 설정 조회

Responses

Response samples

Content type
application/json
{
  • "semesterEnabled": true,
  • "semesterWithYear": true,
  • "tags": [
    ],
  • "roles": [
    ],
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "shortcuts": []
}

공간 기본 설정 저장

Request Body schema: application/json
required
semesterEnabled
boolean
semesterWithYear
boolean
tags
Array of strings <= 100 items [ items <= 50 characters ]
roles
Array of strings <= 100 items [ items <= 50 characters ]
startMenu
string
Enum: "announcement" "content" "community" "team" "challenge" "grade"
enabledMenus
Array of strings <= 10 items
Items Enum: "announcement" "content" "community" "team" "challenge" "grade"
Array of objects <= 20 items

Responses

Request samples

Content type
application/json
{
  • "semesterEnabled": true,
  • "semesterWithYear": true,
  • "tags": [
    ],
  • "roles": [
    ],
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "shortcuts": []
}

Response samples

Content type
application/json
{
  • "semesterEnabled": true,
  • "semesterWithYear": true,
  • "tags": [
    ],
  • "roles": [
    ],
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "shortcuts": []
}

space-fields

공간 정보 필드 목록

Responses

Response samples

Content type
application/json
{
  • "fields": [
    ]
}

공간 정보 필드 생성

Request Body schema: application/json
required
key
required
string [ 1 .. 100 ] characters ^[a-z0-9_]+$
label
required
string [ 1 .. 255 ] characters
type
required
string
Enum: "SHORT_TEXT" "LONG_TEXT" "NUMBER" "DATE" "SELECT"
options
Array of strings <= 50 items [ items [ 1 .. 100 ] characters ]
required
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "required": false
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "isDefault": true,
  • "required": true,
  • "order": -9007199254740991,
  • "isActive": true
}

공간 정보 필드 수정

path Parameters
id
required
string
Request Body schema: application/json
required
label
string [ 1 .. 255 ] characters
options
Array of strings <= 50 items [ items [ 1 .. 100 ] characters ]
required
boolean
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "options": [
    ],
  • "required": true,
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "label": "string",
  • "type": "SHORT_TEXT",
  • "options": [
    ],
  • "isDefault": true,
  • "required": true,
  • "order": -9007199254740991,
  • "isActive": true
}

공간 정보 필드 삭제

path Parameters
id
required
string

Responses

공간 정보 필드 순서 재배치

Request Body schema: application/json
required
orderedIds
required
Array of strings <= 200 items

Responses

Request samples

Content type
application/json
{
  • "orderedIds": [
    ]
}

Response samples

Content type
application/json
{
  • "fields": [
    ]
}

공간 정보 필드 값 조회

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "values": [
    ],
  • "unfilledRequiredFieldIds": [
    ]
}

공간 정보 필드 값 저장

path Parameters
spaceId
required
string
Request Body schema: application/json
required
required
Array of objects <= 200 items

Responses

Request samples

Content type
application/json
{
  • "values": [
    ]
}

Response samples

Content type
application/json
{
  • "values": [
    ],
  • "unfilledRequiredFieldIds": [
    ]
}

space-group

팀활동 목록

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "sets": [
    ]
}

팀활동 생성

path Parameters
spaceId
required
string
Request Body schema: application/json
required
name
required
string [ 1 .. 20 ] characters
isPublic
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "isPublic": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "isPublic": true,
  • "groupCount": -9007199254740991,
  • "memberCount": -9007199254740991,
  • "createdAt": "string"
}

팀활동 수정(이름·공개 여부)

path Parameters
spaceId
required
string
setId
required
string
Request Body schema: application/json
required
name
string [ 1 .. 20 ] characters
isPublic
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "isPublic": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "isPublic": true,
  • "groupCount": -9007199254740991,
  • "memberCount": -9007199254740991,
  • "createdAt": "string"
}

팀활동 삭제

path Parameters
spaceId
required
string
setId
required
string

Responses

팀 성적 설정(평가 항목·비중)

path Parameters
spaceId
required
string
setId
required
string

Responses

Response samples

Content type
application/json
{
  • "scoreRateType": "KEEP_SCORE_WEIGHT",
  • "items": [
    ],
  • "totalScoreRate": 0,
  • "totalMaxScaledScore": 0,
  • "validation": {
    },
  • "lastScoringFinishedAt": "string"
}

팀 성적 설정 저장(환산 방식·비중)

path Parameters
spaceId
required
string
setId
required
string
Request Body schema: application/json
required
scoreRateType
required
string
Enum: "KEEP_SCORE_WEIGHT" "USER_INPUT"
Array of objects

Responses

Request samples

Content type
application/json
{
  • "scoreRateType": "KEEP_SCORE_WEIGHT",
  • "itemScoreRates": [
    ]
}

Response samples

Content type
application/json
{
  • "scoreRateType": "KEEP_SCORE_WEIGHT",
  • "items": [
    ],
  • "totalScoreRate": 0,
  • "totalMaxScaledScore": 0,
  • "validation": {
    },
  • "lastScoringFinishedAt": "string"
}

팀 성적 계산(구성원 환산 총점 저장)

path Parameters
spaceId
required
string
setId
required
string

Responses

Response samples

Content type
application/json
{
  • "memberCount": -9007199254740991,
  • "lastScoringFinishedAt": "string"
}

팀 성적 구성원별 결과

path Parameters
spaceId
required
string
setId
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ],
  • "lastScoringFinishedAt": "string"
}

팀 목록(+멤버)

path Parameters
spaceId
required
string
setId
required
string

Responses

Response samples

Content type
application/json
{
  • "groups": [
    ]
}

팀 생성

path Parameters
spaceId
required
string
setId
required
string
Request Body schema: application/json
required
name
required
string [ 1 .. 20 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "imageFileId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "setId": "string",
  • "name": "string",
  • "imageUrl": "string",
  • "memberCount": -9007199254740991,
  • "members": [
    ],
  • "createdAt": "string"
}

팀 미배정 참여자 목록

path Parameters
spaceId
required
string
setId
required
string
query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991,
  • "members": [
    ]
}

팀 수정(이름·대표 이미지)

path Parameters
spaceId
required
string
setId
required
string
groupId
required
string
Request Body schema: application/json
required
name
string [ 1 .. 20 ] characters
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "imageFileId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "setId": "string",
  • "name": "string",
  • "imageUrl": "string",
  • "memberCount": -9007199254740991,
  • "members": [
    ],
  • "createdAt": "string"
}

팀 삭제

path Parameters
spaceId
required
string
setId
required
string
groupId
required
string

Responses

팀원 배정(전체 교체, 리더 지정 포함)

path Parameters
spaceId
required
string
setId
required
string
groupId
required
string
Request Body schema: application/json
required
required
Array of objects <= 30 items

Responses

Request samples

Content type
application/json
{
  • "members": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "setId": "string",
  • "name": "string",
  • "imageUrl": "string",
  • "memberCount": -9007199254740991,
  • "members": [
    ],
  • "createdAt": "string"
}

space-policy

기관 공간 정책 조회

Responses

Response samples

Content type
application/json
{
  • "defaultAutoJoin": true,
  • "defaultExitRestricted": true,
  • "defaultAllowFileDownload": true,
  • "defaultVodConcurrentLimit": true,
  • "enforceFileDownloadDisabled": true,
  • "enforceVodConcurrentLimit": true
}

기관 공간 정책 저장

Request Body schema: application/json
required
defaultAutoJoin
boolean
defaultExitRestricted
boolean
defaultAllowFileDownload
boolean
defaultVodConcurrentLimit
boolean
enforceFileDownloadDisabled
boolean
enforceVodConcurrentLimit
boolean

Responses

Request samples

Content type
application/json
{
  • "defaultAutoJoin": true,
  • "defaultExitRestricted": true,
  • "defaultAllowFileDownload": true,
  • "defaultVodConcurrentLimit": true,
  • "enforceFileDownloadDisabled": true,
  • "enforceVodConcurrentLimit": true
}

Response samples

Content type
application/json
{
  • "defaultAutoJoin": true,
  • "defaultExitRestricted": true,
  • "defaultAllowFileDownload": true,
  • "defaultVodConcurrentLimit": true,
  • "enforceFileDownloadDisabled": true,
  • "enforceVodConcurrentLimit": true
}

tenant-summary

테넌트 요약 (멤버 수/역할 분포/플랜)

Responses

Response samples

Content type
application/json
{
  • "memberCount": -9007199254740991,
  • "roleCounts": [
    ],
  • "currentPlan": "FREE"
}

client-spaces

내 공간 목록(참여 중, active/inactive 분리)

query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "active": [
    ],
  • "inactive": [
    ],
  • "nextCursor": "string"
}

내 팀 목록(공개된 팀활동만)

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

공간 탐색(공개 활성 공간 + 참여 여부)

query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "spaces": [
    ],
  • "nextCursor": "string"
}

공간 만들기(만든 사람이 소유자 관리자)

Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters
string or null
string or null
string or null
string or null
isPublic
boolean
autoJoin
boolean
exitRestricted
boolean
allowFileDownload
boolean
vodConcurrentLimit
boolean
retainEnrollmentHistory
boolean

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailFileId": "string",
  • "semester": "string",
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "representativeName": "string",
  • "description": "string",
  • "thumbnailUrl": "string",
  • "semester": "string",
  • "isActive": true,
  • "isPublic": true,
  • "autoJoin": true,
  • "exitRestricted": true,
  • "allowFileDownload": true,
  • "vodConcurrentLimit": true,
  • "retainEnrollmentHistory": true,
  • "startMenu": "announcement",
  • "enabledMenus": [
    ],
  • "messageEnabled": true,
  • "groupActive": true,
  • "adminCount": -9007199254740991,
  • "participantCount": -9007199254740991,
  • "postCount": -9007199254740991,
  • "contentCount": -9007199254740991,
  • "createdAt": "string",
  • "fieldValues": [
    ]
}

공간 입장(코드/링크 + 2단계 비번)

Request Body schema: application/json
required
code
required
string [ 1 .. 64 ] characters
password
string <= 100 characters

Responses

Request samples

Content type
application/json
{
  • "code": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "spaceId": "string",
  • "name": "string",
  • "role": "ADMIN"
}

공간 나가기(본인)

path Parameters
id
required
string

Responses

공간 구성원 목록(참여 멤버)

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "members": [
    ],
  • "nextCursor": "string"
}

client-community

공간 통계(게시글/반응/댓글/질문해결/태그)

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalPosts": -9007199254740991,
  • "totalComments": -9007199254740991,
  • "totalReactions": -9007199254740991,
  • "question": {
    },
  • "pinned": {
    },
  • "typeCounts": {
    },
  • "tagCounts": [
    ],
  • "topQuestions": [
    ],
  • "dailySeries": [
    ]
}

커뮤니티 피드(필터/태그/검색)

path Parameters
spaceId
required
string
query Parameters
filter
string
Enum: "all" "pinned" "question" "feedback" "mine" "reacted" "popular" "unresolved" "unread" "bookmarked"
tag
string non-empty
search
string [ 1 .. 255 ] characters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "posts": [
    ],
  • "total": -9007199254740991,
  • "nextCursor": "string"
}

게시글 작성(질문/피드백/일반)

path Parameters
spaceId
required
string
Request Body schema: application/json
required
type
string
Default: "QUESTION"
Enum: "NOTICE" "GENERAL" "QUESTION" "FEEDBACK"
title
string <= 300 characters
Default: ""
content
required
string [ 1 .. 200000 ] characters
tags
Array of strings <= 20 items [ items <= 50 characters ]
Default: []
isAnonymous
boolean
Default: false
fileIds
Array of strings <= 20 items
Default: []
challengeTaskId
string
allowFileDownload
boolean
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "NOTICE",
  • "title": "",
  • "content": "string",
  • "tags": [ ],
  • "isAnonymous": false,
  • "fileIds": [ ],
  • "challengeTaskId": "string",
  • "allowFileDownload": true,
  • "publishAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "NOTICE",
  • "title": "string",
  • "content": "string",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "isResolved": true,
  • "isAnonymous": true,
  • "authorName": "string",
  • "authorRole": "string",
  • "commentCount": -9007199254740991,
  • "reactionCounts": {
    },
  • "myReactions": [
    ],
  • "isRead": true,
  • "isBookmarked": true,
  • "attachments": [
    ],
  • "createdAt": "string"
}

반응 토글(저도궁금/짝짝/좋아요/관심)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
type
required
string
Enum: "CURIOUS" "CLAP" "LIKE" "INTERESTED"

Responses

Request samples

Content type
application/json
{
  • "type": "CURIOUS"
}

게시글 댓글 목록

path Parameters
spaceId
required
string
postId
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "comments": [
    ],
  • "nextCursor": "string"
}

댓글 작성(대댓글 parentId)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
content
required
string [ 1 .. 20000 ] characters
string or null
isAnonymous
boolean
Default: false
fileIds
Array of strings <= 20 items
Default: []
challengeTaskId
string

Responses

Request samples

Content type
application/json
{
  • "content": "string",
  • "parentId": "string",
  • "isAnonymous": false,
  • "fileIds": [ ],
  • "challengeTaskId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "parentId": "string",
  • "content": "string",
  • "isAnonymous": true,
  • "authorName": "string",
  • "attachments": [
    ],
  • "createdAt": "string"
}

댓글 삭제(작성자/관리자)

path Parameters
spaceId
required
string
postId
required
string
commentId
required
string

Responses

질문 해결/미해결 전환

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
resolved
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "resolved": true
}

게시글 읽음 처리

path Parameters
spaceId
required
string
postId
required
string

Responses

게시글 북마크 추가 (멱등)

path Parameters
spaceId
required
string
postId
required
string

Responses

게시글 북마크 해제 (멱등)

path Parameters
spaceId
required
string
postId
required
string

Responses

예약 발행 시각 변경(작성자, 발행 전만)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
required
string or null

Responses

Request samples

Content type
application/json
{
  • "publishAt": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "NOTICE",
  • "title": "string",
  • "content": "string",
  • "tags": [
    ],
  • "isEmergency": true,
  • "isPinned": true,
  • "isResolved": true,
  • "isAnonymous": true,
  • "authorName": "string",
  • "authorRole": "string",
  • "commentCount": -9007199254740991,
  • "reactionCounts": {
    },
  • "myReactions": [
    ],
  • "isRead": true,
  • "isBookmarked": true,
  • "attachments": [
    ],
  • "createdAt": "string"
}

AI 답변(도트솔브)

path Parameters
spaceId
required
string
postId
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "pending",
  • "answer": "string",
  • "sources": [
    ],
  • "model": "string",
  • "generatedAt": "string",
  • "isStale": true,
  • "myFeedback": {
    },
  • "feedbackCounts": {
    },
  • "quota": {
    }
}

AI 답변 삭제 (공간 관리자)

path Parameters
spaceId
required
string
postId
required
string

Responses

유사 질문 추천 피드백

path Parameters
spaceId
required
string
postId
required
string
linkedPostId
required
string
Request Body schema: application/json
required
type
required
string
Enum: "POSITIVE" "NEGATIVE"
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "POSITIVE",
  • "review": "string"
}

AI 답변 피드백

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
type
required
string
Enum: "POSITIVE" "NEGATIVE"
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "POSITIVE",
  • "review": "string"
}

게시글 삭제(작성자/관리자)

path Parameters
spaceId
required
string
postId
required
string

Responses

피드백 개요(내 역할/내 방/방 수)

path Parameters
spaceId
required
string
postId
required
string

Responses

Response samples

Content type
application/json
{
  • "postId": "string",
  • "permission": "AUTHOR",
  • "viewerRole": "participant",
  • "myRoomId": "string",
  • "roomCount": -9007199254740991,
  • "isAnonymous": true,
  • "isAnonymityLocked": true,
  • "myRoomUnreadCount": -9007199254740991
}

피드백 대화방 목록 (관리자)

path Parameters
spaceId
required
string
postId
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "rooms": [
    ],
  • "nextCursor": "string"
}

피드백 대화방 확보(없으면 생성)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
initiatorProfileId
string non-empty

Responses

Request samples

Content type
application/json
{
  • "initiatorProfileId": "string"
}

Response samples

Content type
application/json
{
  • "postId": "string",
  • "permission": "AUTHOR",
  • "viewerRole": "participant",
  • "myRoomId": "string",
  • "roomCount": -9007199254740991,
  • "isAnonymous": true,
  • "isAnonymityLocked": true,
  • "myRoomUnreadCount": -9007199254740991
}

피드백 설정(permission) (관리자)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
permission
string
Default: "SPACE_ADMIN"
Enum: "AUTHOR" "SPACE_ADMIN"
isAnonymous
boolean

Responses

Request samples

Content type
application/json
{
  • "permission": "AUTHOR",
  • "isAnonymous": true
}

Response samples

Content type
application/json
{
  • "postId": "string",
  • "permission": "AUTHOR",
  • "viewerRole": "participant",
  • "myRoomId": "string",
  • "roomCount": -9007199254740991,
  • "isAnonymous": true,
  • "isAnonymityLocked": true,
  • "myRoomUnreadCount": -9007199254740991
}

피드백 대화 목록

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "chats": [
    ],
  • "nextCursor": "string"
}

피드백 대화 작성(방 없으면 생성)

path Parameters
spaceId
required
string
postId
required
string
Request Body schema: application/json
required
content
required
string <= 20000 characters
string or null
isAnonymous
boolean
initiatorProfileId
string
roomId
string
fileIds
Array of strings <= 20 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "content": "string",
  • "parentId": "string",
  • "isAnonymous": true,
  • "initiatorProfileId": "string",
  • "roomId": "string",
  • "fileIds": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "roomId": "string",
  • "parentId": "string",
  • "content": "string",
  • "isAnonymous": true,
  • "isEdited": true,
  • "authorName": "string",
  • "isFromInitiator": true,
  • "isDeleted": true,
  • "attachments": [
    ],
  • "createdAt": "string"
}

피드백 대화 수정(작성자)

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string
chatId
required
string
Request Body schema: application/json
required
content
required
string [ 1 .. 20000 ] characters

Responses

Request samples

Content type
application/json
{
  • "content": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "roomId": "string",
  • "parentId": "string",
  • "content": "string",
  • "isAnonymous": true,
  • "isEdited": true,
  • "authorName": "string",
  • "isFromInitiator": true,
  • "isDeleted": true,
  • "attachments": [
    ],
  • "createdAt": "string"
}

피드백 대화 삭제

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string
chatId
required
string

Responses

피드백 대화 수정 이력

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string
chatId
required
string

Responses

Response samples

Content type
application/json
[ ]

피드백 대화방 첨부 목록

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string

Responses

Response samples

Content type
application/json
{
  • "attachments": [
    ]
}

피드백 대화방 읽음 표시

path Parameters
spaceId
required
string
postId
required
string
roomId
required
string

Responses

Response samples

Content type
application/json
{
  • "roomId": "string",
  • "hasUnread": true,
  • "lastReadAt": "string"
}

client-home

홈 요약(프로필/참여 공간/공개 배너)

Responses

Response samples

Content type
application/json
{
  • "profile": {
    },
  • "spaceCount": -9007199254740991,
  • "spaces": [
    ],
  • "banners": [
    ]
}

client-mypage

마이페이지(프로필 + 활동 통계 + 받은 반응)

Responses

Response samples

Content type
application/json
{
  • "displayName": "string",
  • "email": "string",
  • "pictureUrl": "string",
  • "language": "ko",
  • "translationLanguage": "ko",
  • "tenantName": "string",
  • "roleName": "string",
  • "stats": {
    },
  • "receivedReactions": {
    }
}

프로필 편집(이름·아바타·언어·번역 언어)

Request Body schema: application/json
required
displayName
string [ 1 .. 255 ] characters
string or null
language
string
Enum: "ko" "en" "ja" "zh-Hans" "zh-Hant"
string or null

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "pictureFileId": "string",
  • "language": "ko",
  • "translationLanguage": "ko"
}

Response samples

Content type
application/json
{
  • "displayName": "string",
  • "email": "string",
  • "pictureUrl": "string",
  • "language": "ko",
  • "translationLanguage": "ko",
  • "tenantName": "string",
  • "roleName": "string",
  • "stats": {
    },
  • "receivedReactions": {
    }
}

개인 알림 설정 조회 — 모든 타입×플랫폼(미설정은 on)

Responses

Response samples

Content type
application/json
{
  • "settings": [
    ]
}

개인 알림 설정 저장 — 보낸 항목만 갱신(전체 교체 아님)

Request Body schema: application/json
required
required
Array of objects [ 1 .. 200 ] items

Responses

Request samples

Content type
application/json
{
  • "settings": [
    ]
}

Response samples

Content type
application/json
{
  • "settings": [
    ]
}

client-push-tokens

내 푸시 토큰 목록(기기 확인용)

Responses

Response samples

Content type
application/json
{
  • "tokens": [
    ]
}

푸시 토큰 등록 (멱등, 소유자 이전)

Request Body schema: application/json
required
token
required
string [ 1 .. 512 ] characters
platform
required
string
Enum: "WEB" "IOS" "ANDROID"

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "platform": "WEB"
}

푸시 토큰 해지 (멱등)

path Parameters
token
required
string

Responses

client-notifications

알림 목록(+미읽음수)

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "unreadCount": -9007199254740991
}

미읽음 알림 수

Responses

Response samples

Content type
application/json
{
  • "unreadCount": -9007199254740991
}

전체 읽음 처리

Responses

알림 읽음 처리

path Parameters
id
required
string

Responses

client-challenges

챌린지 목록(클라)

path Parameters
spaceId
required
string
query Parameters
joined
boolean
state
string
Enum: "BEFORE_START" "ONGOING" "FINISHED"

Responses

Response samples

Content type
application/json
{
  • "challenges": [
    ]
}

내 할 일 통합 조회(클라)

path Parameters
spaceId
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30
taskTypes
string
keyword
string <= 50 characters
incompleteOnly
boolean

Responses

Response samples

Content type
application/json
{
  • "tasks": [
    ],
  • "nextCursor": "string"
}

콘텐츠 연결 할 일(클라)

path Parameters
spaceId
required
string
query Parameters
contentId
required
string non-empty

Responses

Response samples

Content type
application/json
{
  • "tasks": [
    ]
}

완료한 챌린지 목록(클라)

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "challenges": [
    ]
}

내 완료 상세(클라)

path Parameters
spaceId
required
string
id
required
string
taskId
required
string

Responses

Response samples

Content type
application/json
{
  • "taskId": "string",
  • "profileId": "string",
  • "completedAt": "string",
  • "postId": "string"
}

챌린지 상세(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "spaceId": "string",
  • "title": "string",
  • "emoji": "string",
  • "authorName": "string",
  • "isWrittenByAdmin": true,
  • "startedAt": "string",
  • "endedAt": "string",
  • "state": "BEFORE_START",
  • "memberCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991,
  • "joined": true,
  • "progress": 0,
  • "totalProgress": 0,
  • "createdAt": "string",
  • "body": "string",
  • "doneTaskCount": -9007199254740991,
  • "tasks": [
    ],
  • "reminderMinutes": [
    ],
  • "attachments": [
    ]
}

챌린지 참가

path Parameters
spaceId
required
string
id
required
string

Responses

챌린지 나가기(시작 전)

path Parameters
spaceId
required
string
id
required
string

Responses

체크형 할 일 완료/취소

path Parameters
spaceId
required
string
id
required
string
taskId
required
string
Request Body schema: application/json
required
done
boolean
Default: true

Responses

Request samples

Content type
application/json
{
  • "done": true
}

Response samples

Content type
application/json
{
  • "progress": 0,
  • "doneTaskCount": -9007199254740991,
  • "totalTaskCount": -9007199254740991
}

client-content

공간 콘텐츠 트리(클라)

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

공간 직속 자식 노드(클라, lazy)

path Parameters
spaceId
required
string
query Parameters
parentId
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

공간 노드 배치 목록(클라)

path Parameters
spaceId
required
string
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "placements": [
    ],
  • "nextCursor": "string"
}

콘텐츠 상세(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "VIDEO",
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "authorProfileId": "string",
  • "authorName": "string",
  • "ready": true,
  • "createdAt": "string",
  • "updatedAt": "string",
  • "canManage": true,
  • "shares": [
    ],
  • "attachments": [
    ]
}

영상 재생 정보(클라, 재생토큰 포함)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "uploading",
  • "durationSec": -9007199254740991,
  • "thumbnailUrl": "string",
  • "hlsUrl": "string",
  • "renditions": [
    ]
}

URL 영상 정보(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "youtube",
  • "url": "string",
  • "videoKey": "string"
}

라이브 정보(클라, 진행 상태 포함)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "zoom",
  • "joinUrl": "string",
  • "startAt": "string",
  • "endAt": "string",
  • "status": "SCHEDULED"
}

라이브 입장(진행 중이면 진도 완료)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "zoom",
  • "joinUrl": "string",
  • "startAt": "string",
  • "endAt": "string",
  • "status": "SCHEDULED"
}

과제 정보 + 내 제출(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "config": {
    },
  • "rubric": {
    },
  • "availability": "OPEN",
  • "dueAt": "string",
  • "mySubmission": {
    },
  • "canSubmit": true
}

과제 제출(본문 + 첨부)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
body
string <= 15000 characters
fileIds
Array of strings <= 10 items

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "fileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "profileId": "string",
  • "displayName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string",
  • "rubricEvaluation": {
    },
  • "similarity": {
    }
}

그룹과제 정보 + 우리 팀 제출(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "config": {
    },
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED",
  • "availability": "OPEN",
  • "dueAt": "string",
  • "myGroup": {
    },
  • "groupSubmission": {
    },
  • "canSubmit": true
}

그룹과제 제출(팀 단위)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
spaceGroupId
required
string non-empty
body
string <= 15000 characters
fileIds
Array of strings <= 10 items

Responses

Request samples

Content type
application/json
{
  • "spaceGroupId": "string",
  • "body": "string",
  • "fileIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "groupId": "string",
  • "groupName": "string",
  • "submitterUserId": "string",
  • "submitterName": "string",
  • "revision": -9007199254740991,
  • "body": "string",
  • "attachments": [
    ],
  • "status": "SUBMITTED",
  • "submittedAt": "string",
  • "dueAtAtSubmit": "string",
  • "isLate": true,
  • "score": -9007199254740991,
  • "feedback": "string",
  • "gradedAt": "string",
  • "returnedAt": "string"
}

내 제출물 표절 검사 결과(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "PENDING",
  • "copyRatio": 0,
  • "gptCopyRatio": 0
}

내 표절 검사 상세 뷰 URL(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "url": "string"
}

상호평가 문항·대상·내 제출(클라)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "snapshot": {
    },
  • "questions": [
    ],
  • "isLinkValid": true,
  • "linkInvalidReason": "NOT_LINKED",
  • "myGroup": {
    },
  • "targets": [
    ],
  • "mySubmissions": [
    ],
  • "canSubmit": true
}

상호평가 제출(대상 전체, 재제출은 갱신)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
snapshotId
required
string non-empty
spaceGroupId
required
string non-empty
required
Array of objects non-empty

Responses

Request samples

Content type
application/json
{
  • "snapshotId": "string",
  • "spaceGroupId": "string",
  • "submits": [
    ]
}

Response samples

Content type
application/json
{
  • "snapshotId": "string",
  • "submissions": [
    ]
}

상호평가 자동 임시저장(부분 저장)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
snapshotId
required
string non-empty
spaceGroupId
required
string non-empty
requestedAt
required
string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[...
required
Array of objects <= 500 items
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "snapshotId": "string",
  • "spaceGroupId": "string",
  • "requestedAt": "2019-08-24T14:15:22Z",
  • "targets": [
    ],
  • "lastSeenTargetId": "string",
  • "lastSeenQuestionId": "string"
}

Response samples

Content type
application/json
{
  • "snapshotId": "string",
  • "spaceGroupId": "string",
  • "targets": [
    ],
  • "lastSeenTargetId": "string",
  • "lastSeenQuestionId": "string",
  • "isManualSubmitted": true,
  • "requestedAt": "string"
}

상호평가 임시저장 불러오기

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "draft": {
    }
}

콘텐츠 댓글 목록(클라)

path Parameters
spaceId
required
string
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "comments": [
    ],
  • "nextCursor": "string"
}

콘텐츠 댓글 작성(클라)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
content
required
string [ 1 .. 20000 ] characters
string or null
isAnonymous
boolean
Default: false
fileIds
Array of strings <= 20 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "content": "string",
  • "parentId": "string",
  • "isAnonymous": false,
  • "fileIds": [ ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "parentId": "string",
  • "content": "string",
  • "isAnonymous": true,
  • "authorName": "string",
  • "attachments": [
    ],
  • "createdAt": "string"
}

콘텐츠 댓글 삭제(클라)

path Parameters
spaceId
required
string
id
required
string
commentId
required
string

Responses

문서 정보(클라, presigned)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "fileId": "string",
  • "mimeType": "string",
  • "pageCount": -9007199254740991,
  • "downloadUrl": "string"
}

퀴즈 응시용(클라, 정답 제외)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "passScore": -9007199254740991,
  • "maxAttempts": -9007199254740991,
  • "timeLimitMin": -9007199254740991,
  • "shuffleQuestions": true,
  • "shuffleOptions": true,
  • "resultExposeLevel": "ALL",
  • "attemptCount": -9007199254740991,
  • "availability": "OPEN",
  • "attemptId": "string",
  • "startedAt": "string",
  • "deadline": "string",
  • "questions": [
    ]
}

퀴즈 제출 + 자동 채점

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
required
Array of objects
isAutoSubmitted
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "answers": [
    ],
  • "isAutoSubmitted": false
}

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "answers": [
    ]
}

퀴즈 진행 임시저장(진행 중 응시)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "answers": [
    ]
}

Response samples

Content type
application/json
{
  • "autosavedAt": "string"
}

내 최근 퀴즈 결과

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "answers": [
    ]
}

설문 응답용(클라, 문항 + 내 응답 상태)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "description": "string",
  • "isAnonymous": true,
  • "allowResubmit": true,
  • "version": -9007199254740991,
  • "availability": "OPEN",
  • "dueAt": "string",
  • "questions": [
    ],
  • "myResponse": {
    }
}

설문 제출(필수 문항 검증 + 버전 확인)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
version
required
integer [ -9007199254740991 .. 9007199254740991 ]
required
Array of objects <= 50 items

Responses

Request samples

Content type
application/json
{
  • "version": -9007199254740991,
  • "answers": [
    ]
}

Response samples

Content type
application/json
{
  • "submittedAt": "string",
  • "autosavedAt": "string",
  • "answers": [
    ],
  • "canResubmit": true
}

설문 작성 중 자동저장(부분 답안)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
version
required
integer [ -9007199254740991 .. 9007199254740991 ]
required
Array of objects <= 50 items

Responses

Request samples

Content type
application/json
{
  • "version": -9007199254740991,
  • "answers": [
    ]
}

Response samples

Content type
application/json
{
  • "autosavedAt": "string"
}

내 설문 응답(제출본 또는 작성 중)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "submittedAt": "string",
  • "autosavedAt": "string",
  • "answers": [
    ],
  • "canResubmit": true
}

영상 시청 구간 보고(진도)

path Parameters
spaceId
required
string
id
required
string
Request Body schema: application/json
required
required
Array of items <= 1000 items
positionSec
integer [ 0 .. 9007199254740991 ]
playbackToken
string

Responses

Request samples

Content type
application/json
{
  • "ranges": [
    ],
  • "positionSec": 9007199254740991,
  • "playbackToken": "string"
}

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

열람 완료(문서/URL)

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

내 콘텐츠 진도

path Parameters
spaceId
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

공간 내 내 진도 요약

path Parameters
spaceId
required
string

Responses

Response samples

Content type
application/json
{
  • "totalCount": -9007199254740991,
  • "completedCount": -9007199254740991,
  • "items": [
    ]
}

라이브러리 콘텐츠 트리(클라)

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

라이브러리 직속 자식 노드(클라, lazy)

query Parameters
parentId
string

Responses

Response samples

Content type
application/json
{
  • "nodes": [
    ]
}

라이브러리 노드 배치 목록(클라)

path Parameters
id
required
string
query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "placements": [
    ],
  • "nextCursor": "string"
}

라이브러리 콘텐츠 상세(클라)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "type": "VIDEO",
  • "title": "string",
  • "description": "string",
  • "visibility": "PRIVATE",
  • "authorProfileId": "string",
  • "authorName": "string",
  • "ready": true,
  • "createdAt": "string",
  • "updatedAt": "string",
  • "canManage": true,
  • "shares": [
    ],
  • "attachments": [
    ]
}

라이브러리 영상 재생 정보(클라, 재생토큰 포함)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "uploading",
  • "durationSec": -9007199254740991,
  • "thumbnailUrl": "string",
  • "hlsUrl": "string",
  • "renditions": [
    ]
}

라이브러리 URL 영상 정보(클라)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "provider": "youtube",
  • "url": "string",
  • "videoKey": "string"
}

라이브러리 문서 정보(클라, presigned)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "fileId": "string",
  • "mimeType": "string",
  • "pageCount": -9007199254740991,
  • "downloadUrl": "string"
}

라이브러리 퀴즈 응시용(클라, 정답 제외)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "passScore": -9007199254740991,
  • "maxAttempts": -9007199254740991,
  • "timeLimitMin": -9007199254740991,
  • "shuffleQuestions": true,
  • "shuffleOptions": true,
  • "resultExposeLevel": "ALL",
  • "attemptCount": -9007199254740991,
  • "availability": "OPEN",
  • "attemptId": "string",
  • "startedAt": "string",
  • "deadline": "string",
  • "questions": [
    ]
}

라이브러리 퀴즈 제출 + 자동 채점

path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of objects
isAutoSubmitted
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "answers": [
    ],
  • "isAutoSubmitted": false
}

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "answers": [
    ]
}

라이브러리 퀴즈 진행 임시저장(진행 중 응시)

path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "answers": [
    ]
}

Response samples

Content type
application/json
{
  • "autosavedAt": "string"
}

라이브러리 내 최근 퀴즈 결과

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "attemptId": "string",
  • "score": -9007199254740991,
  • "passed": true,
  • "submittedAt": "string",
  • "answers": [
    ]
}

라이브러리 영상 시청 구간 보고(진도)

path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of items <= 1000 items
positionSec
integer [ 0 .. 9007199254740991 ]
playbackToken
string

Responses

Request samples

Content type
application/json
{
  • "ranges": [
    ],
  • "positionSec": 9007199254740991,
  • "playbackToken": "string"
}

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

라이브러리 열람 완료(문서/URL)

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

라이브러리 내 콘텐츠 진도

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "contentId": "string",
  • "status": "in_progress",
  • "progressPct": -9007199254740991,
  • "completedAt": "string",
  • "watchedSec": -9007199254740991,
  • "maxPositionSec": -9007199254740991
}

backoffice-auth

백오피스 직원 로그인

Request Body schema: application/json
required
email
required
string <email> ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
password
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "staff": {
    }
}

백오피스 refresh rotation

Responses

Response samples

Content type
application/json
{
  • "accessToken": "string",
  • "accessTokenExpiresAt": "string",
  • "staff": {
    }
}

백오피스 로그아웃

Responses

현재 직원 + role/permissions

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "displayName": "string",
  • "role": {
    },
  • "permissions": [
    ]
}

backoffice-tenants

테넌트 생성 (+ 첫 admin)

Request Body schema: application/json
required
key
required
string [ 1 .. 255 ] characters ^[a-z0-9-]+$
name
required
string [ 1 .. 255 ] characters
loginIdentifier
string
Default: "userId"
Enum: "userId" "email"
required
object

Responses

Request samples

Content type
application/json
{
  • "key": "string",
  • "name": "string",
  • "loginIdentifier": "userId",
  • "admin": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "loginIdentifier": "userId",
  • "memberCount": 0,
  • "isInternalTest": true,
  • "currentPlan": "FREE",
  • "currentContractPeriod": {
    },
  • "memberLimit": -9007199254740991,
  • "videoHoursLimit": -9007199254740991,
  • "csManager": {
    },
  • "salesManager": {
    },
  • "isFavorite": true,
  • "createdAt": "string"
}

테넌트 목록 (offset + 필터/검색)

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
favoriteOnly
string
plan
string
Enum: "FREE" "PREMIUM" "ULTIMATE"
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "tenants": [
    ],
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991
}

테넌트 수정 (이름/로그인 식별자)

path Parameters
tenantId
required
string
Request Body schema: application/json
required
name
string [ 1 .. 255 ] characters
loginIdentifier
string
Enum: "userId" "email"
category
string
Enum: "ACADEMY" "COMPANY" "INSTITUTION" "SCHOOL" "UNIVERSITY" "HIGH_SCHOOL" "MIDDLE_SCHOOL" "ELEMENTARY_SCHOOL" "PERSONAL" "OTHER"
language
string
Enum: "ko" "en" "ja" "zh-Hans" "zh-Hant"
timezone
string [ 1 .. 64 ] characters
isInternalTest
boolean
signupEnabled
boolean
inviteEnabled
boolean
dotLinkEnabled
boolean
dotSolveEnabled
boolean
string or null
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "loginIdentifier": "userId",
  • "category": "ACADEMY",
  • "language": "ko",
  • "timezone": "string",
  • "isInternalTest": true,
  • "signupEnabled": true,
  • "inviteEnabled": true,
  • "dotLinkEnabled": true,
  • "dotSolveEnabled": true,
  • "csManagerId": "string",
  • "salesManagerId": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "loginIdentifier": "userId",
  • "memberCount": 0,
  • "isInternalTest": true,
  • "currentPlan": "FREE",
  • "currentContractPeriod": {
    },
  • "memberLimit": -9007199254740991,
  • "videoHoursLimit": -9007199254740991,
  • "csManager": {
    },
  • "salesManager": {
    },
  • "isFavorite": true,
  • "createdAt": "string"
}

기관 상세 (편집 폼용 전체 필드)

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "key": "string",
  • "name": "string",
  • "kind": "org",
  • "loginIdentifier": "userId",
  • "category": "ACADEMY",
  • "language": "ko",
  • "timezone": "string",
  • "isInternalTest": true,
  • "signupEnabled": true,
  • "inviteEnabled": true,
  • "dotLinkEnabled": true,
  • "dotSolveEnabled": true,
  • "description": "string",
  • "csManager": {
    },
  • "salesManager": {
    },
  • "memberCount": 0,
  • "currentPlan": "FREE",
  • "createdAt": "string"
}

테넌트 목록 (cursor + 필터/검색)

query Parameters
cursor
string
limit
integer [ 1 .. 100 ]
Default: 20
favoriteOnly
string
plan
string
Enum: "FREE" "PREMIUM" "ULTIMATE"
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "hasMore": true
}

테넌트 도트 사용 한도 + 현재 기간 사용량

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "solveLimit": 0,
  • "periodStart": "string",
  • "periodEnd": "string",
  • "used": 0,
  • "costUsd": 0
}

테넌트 도트 사용 한도 설정

path Parameters
tenantId
required
string
Request Body schema: application/json
required
required
integer or null
periodStart
required
string
periodEnd
required
string

Responses

Request samples

Content type
application/json
{
  • "solveLimit": 9007199254740991,
  • "periodStart": "string",
  • "periodEnd": "string"
}

Response samples

Content type
application/json
{
  • "solveLimit": 0,
  • "periodStart": "string",
  • "periodEnd": "string",
  • "used": 0,
  • "costUsd": 0
}

테넌트 도트 사용 한도 해제(무제한)

path Parameters
tenantId
required
string

Responses

테넌트 도트 사용량·품질 통계

path Parameters
tenantId
required
string
query Parameters
from
string

기본: to − 30일

to
string

기본: 현재

Responses

Response samples

Content type
application/json
{
  • "from": "string",
  • "to": "string",
  • "solveGenerated": 0,
  • "costUsd": 0,
  • "solveByStatus": {
    },
  • "linkByStatus": {
    },
  • "solveFeedback": {
    },
  • "linkFeedback": {
    }
}

테넌트 도트 피드백 목록(기본 부정)

path Parameters
tenantId
required
string
query Parameters
type
string
Enum: "POSITIVE" "NEGATIVE"

기본: NEGATIVE

skip
string

기본 0

limit
string

기본 20, 최대 100

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

실패한 도트 작업 재예약

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "solveEnqueued": 0,
  • "linkEnqueued": 0,
  • "solveRemaining": 0,
  • "linkRemaining": 0
}

테넌트 즐겨찾기 설정 (멱등)

path Parameters
tenantId
required
string

Responses

테넌트 즐겨찾기 해제 (멱등)

path Parameters
tenantId
required
string

Responses

backoffice/tenant-features

기관 기능 토글 + 플랜 + 해석 결과

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "toggles": {
    },
  • "currentPlan": "FREE",
  • "features": {
    }
}

기관 기능 토글 수정(부분)

path Parameters
tenantId
required
string
Request Body schema: application/json
required
home
boolean
library
boolean
orgChart
boolean
jobRole
boolean
instituteSpace
boolean

Responses

Request samples

Content type
application/json
{
  • "home": true,
  • "library": true,
  • "orgChart": true,
  • "jobRole": true,
  • "instituteSpace": true
}

Response samples

Content type
application/json
{
  • "toggles": {
    },
  • "currentPlan": "FREE",
  • "features": {
    }
}

backoffice/platform-agreements

플랫폼 약관 목록 — 폐지된 것 포함 + topic 별 동의 수

Responses

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

플랫폼 약관 수정(부분)

path Parameters
topic
required
string
Request Body schema: application/json
required
isEssential
boolean
isVisible
boolean
order
integer [ 0 .. 9999 ]
integer or null
isActive
boolean
object
object

Responses

Request samples

Content type
application/json
{
  • "isEssential": true,
  • "isVisible": true,
  • "order": 9999,
  • "consentTtlDays": 1,
  • "isActive": true,
  • "title": {
    },
  • "documentUrl": {}
}

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

플랫폼 약관 개정(version+1) — 전원 재동의 대상이 된다

path Parameters
topic
required
string
Request Body schema: application/json
required
currentVersion
required
integer [ 1 .. 9007199254740991 ]

Responses

Request samples

Content type
application/json
{
  • "currentVersion": 1
}

Response samples

Content type
application/json
{
  • "terms": [
    ]
}

backoffice/platform-settings

문서 변환 provider 조회

Responses

Response samples

Content type
application/json
{
  • "provider": "local",
  • "epapyrusConfigured": true,
  • "updatedAt": "string"
}

문서 변환 provider 변경

Request Body schema: application/json
required
provider
required
string
Enum: "local" "epapyrus"

Responses

Request samples

Content type
application/json
{
  • "provider": "local"
}

Response samples

Content type
application/json
{
  • "provider": "local",
  • "epapyrusConfigured": true,
  • "updatedAt": "string"
}

backoffice-contracts

계약 생성

path Parameters
tenantId
required
string
Request Body schema: application/json
required
type
string
Default: "CONTRACT"
Enum: "TRIAL" "CONTRACT"
plan
string
Default: "FREE"
Enum: "FREE" "PREMIUM" "ULTIMATE"
status
string
Default: "SIGNED"
Enum: "DRAFT" "SIGNED" "EXPIRED" "CANCELED"
startedAt
required
string^\d{4}-\d{2}-\d{2}$
expiredAt
required
string^\d{4}-\d{2}-\d{2}$
amount
integer [ 0 .. 9007199254740991 ]
Default: 0
integer or null
integer or null
memo
string <= 1000 characters

Responses

Request samples

Content type
application/json
{
  • "type": "TRIAL",
  • "plan": "FREE",
  • "status": "DRAFT",
  • "startedAt": "string",
  • "expiredAt": "string",
  • "amount": 0,
  • "memberLimit": 9007199254740991,
  • "videoHoursLimit": 9007199254740991,
  • "memo": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenantId": "string",
  • "type": "TRIAL",
  • "plan": "FREE",
  • "status": "DRAFT",
  • "startedAt": "string",
  • "expiredAt": "string",
  • "amount": -9007199254740991,
  • "memberLimit": -9007199254740991,
  • "videoHoursLimit": -9007199254740991,
  • "memo": "string",
  • "createdAt": "string"
}

계약 목록 (active first → expiredAt desc)

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "contracts": [
    ]
}

계약 부분 수정

path Parameters
tenantId
required
string
contractId
required
string
Request Body schema: application/json
required
type
string
Enum: "TRIAL" "CONTRACT"
plan
string
Enum: "FREE" "PREMIUM" "ULTIMATE"
status
string
Enum: "DRAFT" "SIGNED" "EXPIRED" "CANCELED"
startedAt
string^\d{4}-\d{2}-\d{2}$
expiredAt
string^\d{4}-\d{2}-\d{2}$
amount
integer [ 0 .. 9007199254740991 ]
integer or null
integer or null
string or null

Responses

Request samples

Content type
application/json
{
  • "type": "TRIAL",
  • "plan": "FREE",
  • "status": "DRAFT",
  • "startedAt": "string",
  • "expiredAt": "string",
  • "amount": 9007199254740991,
  • "memberLimit": 9007199254740991,
  • "videoHoursLimit": 9007199254740991,
  • "memo": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenantId": "string",
  • "type": "TRIAL",
  • "plan": "FREE",
  • "status": "DRAFT",
  • "startedAt": "string",
  • "expiredAt": "string",
  • "amount": -9007199254740991,
  • "memberLimit": -9007199254740991,
  • "videoHoursLimit": -9007199254740991,
  • "memo": "string",
  • "createdAt": "string"
}

계약 soft-delete

path Parameters
tenantId
required
string
contractId
required
string

Responses

현재 유효 계약 상태

path Parameters
tenantId
required
string

Responses

Response samples

Content type
application/json
{
  • "current": {
    }
}

backoffice-staff

직원(담당자) 목록

Responses

Response samples

Content type
application/json
{
  • "staff": [
    ]
}

직원 생성 (플랫폼 role 배정)

Request Body schema: application/json
required
email
required
string <email> <= 255 characters ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z...
displayName
required
string [ 1 .. 255 ] characters
password
required
string [ 8 .. 255 ] characters
roleKey
required
string [ 1 .. 50 ] characters

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "displayName": "string",
  • "password": "stringst",
  • "roleKey": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "displayName": "string",
  • "role": {
    },
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string"
}

직원 수정 (표시명/역할/활성)

path Parameters
staffId
required
string
Request Body schema: application/json
required
displayName
string [ 1 .. 255 ] characters
roleKey
string [ 1 .. 50 ] characters
isActive
boolean

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "roleKey": "string",
  • "isActive": true
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "displayName": "string",
  • "role": {
    },
  • "isActive": true,
  • "lastLoginAt": "string",
  • "createdAt": "string"
}

backoffice-users

전역 유저 목록 (모든 테넌트, offset + 검색)

query Parameters
page
integer [ 1 .. 9007199254740991 ]
Default: 1
pageSize
integer [ 1 .. 100 ]
Default: 20
search
string [ 1 .. 255 ] characters

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "total": -9007199254740991,
  • "page": -9007199254740991,
  • "pageSize": -9007199254740991,
  • "totalPages": -9007199254740991
}

전역 유저 상세 (+ 같은 이메일 다른 테넌트)

path Parameters
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "user": {
    },
  • "otherTenants": [
    ]
}

유저 강제 탈퇴 (soft delete + 마스킹)

path Parameters
userId
required
string

Responses

Jobs

echo 잡 enqueue (큐 파이프라인 데모)

Request Body schema: application/json
required
message
required
string [ 1 .. 1000 ] characters

Responses

Request samples

Content type
application/json
{
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "jobId": "string",
  • "queue": "string"
}