API 레퍼런스
사용자 데이터 등록 및 관리 REST API
사용자 정보를 등록하고 관리하는 REST API입니다.
공통 사항
Base URL
https://tapapi.coxwave.link인증
모든 API 요청에는 TAP-API-KEY 헤더가 필요합니다.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| TAP-API-KEY | String | O | 발급받은 API 키 |
사용자 관리
개별 또는 대량으로 사용자 정보를 등록하고 관리합니다.
사용자 정보는 맞춤형 학습 경험 제공에 활용됩니다.
수강생 등록
단일 수강생을 등록합니다.
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | String | O | 수강생 고유 식별자 |
| age | Number | - | 나이, (0 < age < 100) |
| gender | String | - | 성별 (남: M, 여: F) |
| job_category | String | - | 직무. job_category enum 참조 |
| years_of_experience | Number | - | 경력 연수, (0 < age < 100) |
| school_year | Number | - | 학년, (0 < school_year < 15) |
| department | String | - | 학과/부서. department enum 참조 |
| extra_properties | Object | - | 추가 속성 (자유 형식) |
Request Example
curl -X POST "https://tapapi.coxwave.link/api/v1/client-user" \
-H "Content-Type: application/json" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-d '{
"user_id": "user-001",
"age": 25,
"gender": "M",
"job_category": "ITSW",
"years_of_experience": 3,
"department": "ENGINEERING"
}'Response
| Parameter | Type | Required | Description |
|---|---|---|---|
| result | Boolean | O | 성공 여부 |
Response Example
{
"result": true
}수강생 등록 삭제
단일 수강생 등록을 삭제합니다. (Soft Delete)
수강생 등록 삭제는 소프트 삭제(Soft Delete)로 처리됩니다. 데이터는 DB에 유지되며 is_deleted 플래그가 설정됩니다.
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | String | O | 삭제할 수강생 ID |
Request Example
curl -X PATCH "https://tapapi.coxwave.link/api/v1/client-user" \
-H "Content-Type: application/json" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-d '{
"user_id": "user-001"
}'Response
| Parameter | Type | Required | Description |
|---|---|---|---|
| result | Boolean | O | 성공 여부 |
Response Example
{
"result": true
}대량 수강생 등록 (CSV)
CSV 파일로 다수의 수강생 정보를 일괄 등록합니다.
Request
Request Body (multipart/form-data)
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | File | O | CSV 파일 (UTF-8 인코딩, BOM 지원) |
CSV 형식
| Column | Required | Description |
|---|---|---|
| user_id | O | 수강생 고유 식별자 |
| age | - | 나이 (숫자) |
| gender | - | 성별 |
| job_category | - | 직군 코드 |
| years_of_experience | - | 경력 연수 (숫자) |
| school_year | - | 학년 (숫자) |
| department | - | 학과/부서 코드 |
| extra_properties | - | 추가 속성 (JSON 문자열) |
CSV Example
user_id,age,gender,job_category,years_of_experience,school_year,department,extra_properties
user001,25,M,ITSW,3,,ENGINEERING,
user002,30,F,FINANCE,5,,ECONOMIC,"{""team"":""backend""}"
user003,22,M,,,2,NATURAL_SCIENCE,Request Example
curl -X POST "https://tapapi.coxwave.link/api/v1/client-user/bulk/csv" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-F "file=@users.csv"Response
| Parameter | Type | Required | Description |
|---|---|---|---|
| total_rows | Number | O | 처리된 전체 행 수 |
| inserted_count | Number | O | 신규 등록된 사용자 수 |
| skipped_count | Number | O | 중복으로 건너뛴 사용자 수 |
| failed_count | Number | O | 검증 실패로 등록되지 않은 수 |
Response Example
{
"total_rows": 100,
"inserted_count": 95,
"skipped_count": 3,
"failed_count": 2
}대량 수강생 등록 (JSON)
JSON 배열로 다수의 수강생 정보를 일괄 등록합니다.
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_items | Array of objects | O | 수강생 정보 배열. user_items item 참조 |
user_items item
| Parameter | Type | Required | Description |
|---|---|---|---|
| external_user_id | String | O | 수강생 고유 식별자 |
| age | Number | - | 나이 |
| gender | String | - | 성별 |
| job_category | String | - | 직군 코드 |
| years_of_experience | Number | - | 경력 연수 |
| school_year | Number | - | 학년 |
| department | String | - | 학과/부서 코드 |
| extra_properties | Object | - | 추가 속성 |
Request Example
curl -X PATCH "https://tapapi.coxwave.link/api/v1/client-user/bulk/json" \
-H "Content-Type: application/json" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-d '{
"user_items": [
{
"external_user_id": "user001",
"age": 25,
"gender": "M",
"job_category": "ITSW",
"years_of_experience": 3,
"department": "ENGINEERING"
},
{
"external_user_id": "user002",
"age": 30,
"gender": "F",
"job_category": "FINANCE",
"years_of_experience": 5,
"department": "ECONOMIC"
}
]
}'Response
| Parameter | Type | Required | Description |
|---|---|---|---|
| total_rows | Number | O | 처리된 전체 수강생 수 |
| inserted_count | Number | O | 신규 등록된 수강생 수 |
| skipped_count | Number | O | 중복으로 건너뛴 수강생 수 |
| failed_count | Number | O | 등록 실패 수 (JSON의 경우 항상 0) |
Response Example
{
"total_rows": 50,
"inserted_count": 48,
"skipped_count": 2,
"failed_count": 0
}대량 수강생 등록 삭제
다수의 수강생 정보를 일괄 삭제합니다. (Soft Delete)
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_ids | String | O | 삭제할 수강생 ID 목록 (쉼표로 구분) |
Request Example
curl -X PATCH "https://tapapi.coxwave.link/api/v1/client-user/bulk" \
-H "Content-Type: application/json" \
-H "TAP-API-KEY: {YOUR_API_KEY}" \
-d '{
"user_ids": "user001,user002,user003"
}'Response
| Parameter | Type | Required | Description |
|---|---|---|---|
| total_count | Number | O | 요청된 전체 수강생 수 |
| deleted_count | Number | O | 삭제된 수강생 수 |
| not_found_count | Number | O | 존재하지 않거나 이미 삭제된 수강생 수 |
Response Example
{
"total_count": 3,
"deleted_count": 2,
"not_found_count": 1
}데이터 타입
job_title (직무)
| Code | Description |
|---|---|
| ITDEV | IT 개발 |
| AIDATA | AI/데이터 |
| PLANNING | 기획/비지니스 |
| MARKETING | 마케팅/홍보 |
| DESIGN | 디자인 |
| MEDIA | 미디어/컨텐츠 |
| SALES | 영업/고객관리 |
| FINANCE | 재무/회계 |
| LOGISTICS | 유통/물류 |
| HR | 인사/경영지원 |
| ETC | 기타(공공부문, 전문직 등) |
department (학과/부서)
| Code | Description |
|---|---|
| SOCIAL | 인문/사회과학 |
| ECONOMIC | 경제/경영 |
| NATURAL_SCIENCE | 자연과학 |
| ENGINEERING | 공학계열 |
| MEDICAL | 의학계열 |
| ARTS | 예체능계열 |
에러
에러 응답 형식
모든 에러는 다음 형식으로 반환됩니다:
{
"error_code": "NotExistClientUser",
"message": "Not exist client user",
"status_code": 400
}에러 코드
| HTTP | Error Code | Description | Solution |
|---|---|---|---|
| 400 | NotExistClientUser | 수강생 정보를 찾을 수 없음 | user_id 확인 |
| 400 | AlreadyExistClientUser | 이미 존재하는 수강생 | 중복 user_id 확인 |
| 400 | InvalidCSVFormat | 잘못된 CSV 형식 | CSV 형식 및 인코딩 확인 |
| 401 | - | 인증 실패 | API 키 확인 |
| 422 | - | 요청 데이터 검사 실패 | 요청 데이터 확인 |
| 500 | - | 서버 내부 에러 | 담당자 문의 |
