API Reference
User data registration and management REST API
REST API for registering and managing user information.
Common
Base URL
https://tapapi.coxwave.linkAuthentication
All API requests require the TAP-API-KEY header.
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
| TAP-API-KEY | String | O | Your issued API key |
User Management
Register and manage user information individually or in bulk.
User information is used to provide personalized learning experiences.
Register User
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | String | O | Unique learner identifier |
| age | Number | - | Age (0 < age < 100) |
| gender | String | - | Gender (Male: M, Female: F) |
| job_category | String | - | Job category. See job_category enum |
| years_of_experience | Number | - | Years of experience (0 < years < 100) |
| school_year | Number | - | School year (0 < school_year < 15) |
| department | String | - | Department. See department enum |
| extra_properties | Object | - | Additional properties (free format) |
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 | Success status |
Response Example
{
"result": true
}Delete User
User deletion is processed as a soft delete. Data is retained in the database with the is_deleted flag set.
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_id | String | O | ID of the learner to delete |
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 | Success status |
Response Example
{
"result": true
}Bulk User Registration (CSV)
Request
Request Body (multipart/form-data)
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | File | O | CSV file (UTF-8 encoding, BOM supported) |
CSV Format
| Column | Required | Description |
|---|---|---|
| user_id | O | Unique learner identifier |
| age | - | Age (number) |
| gender | - | Gender |
| job_category | - | Job category code |
| years_of_experience | - | Years of experience (number) |
| school_year | - | School year (number) |
| department | - | Department code |
| extra_properties | - | Additional properties (JSON string) |
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 | Total rows processed |
| inserted_count | Number | O | Newly registered users |
| skipped_count | Number | O | Users skipped due to duplicates |
| failed_count | Number | O | Users failed validation |
Response Example
{
"total_rows": 100,
"inserted_count": 95,
"skipped_count": 3,
"failed_count": 2
}Bulk User Registration (JSON)
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_items | Array of objects | O | Array of learner information. See user_items item |
user_items item
| Parameter | Type | Required | Description |
|---|---|---|---|
| external_user_id | String | O | Unique learner identifier |
| age | Number | - | Age |
| gender | String | - | Gender |
| job_category | String | - | Job category code |
| years_of_experience | Number | - | Years of experience |
| school_year | Number | - | School year |
| department | String | - | Department code |
| extra_properties | Object | - | Additional properties |
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 | Total learners processed |
| inserted_count | Number | O | Newly registered learners |
| skipped_count | Number | O | Learners skipped due to duplicates |
| failed_count | Number | O | Failed registrations (always 0 for JSON) |
Response Example
{
"total_rows": 50,
"inserted_count": 48,
"skipped_count": 2,
"failed_count": 0
}Bulk User Deletion
Request
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| user_ids | String | O | Comma-separated list of learner IDs to delete |
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 | Total learners requested |
| deleted_count | Number | O | Learners deleted |
| not_found_count | Number | O | Learners not found or already deleted |
Response Example
{
"total_count": 3,
"deleted_count": 2,
"not_found_count": 1
}Data Types
job_title (Job Category)
| Code | Description |
|---|---|
| ITDEV | IT Development |
| AIDATA | AI/Data |
| PLANNING | Planning/Business |
| MARKETING | Marketing/PR |
| DESIGN | Design |
| MEDIA | Media/Content |
| SALES | Sales/Customer Management |
| FINANCE | Finance/Accounting |
| LOGISTICS | Distribution/Logistics |
| HR | HR/Management Support |
| ETC | Others (Public sector, Professionals, etc.) |
department (Department)
| Code | Description |
|---|---|
| SOCIAL | Humanities/Social Sciences |
| ECONOMIC | Economics/Business |
| NATURAL_SCIENCE | Natural Sciences |
| ENGINEERING | Engineering |
| MEDICAL | Medical Sciences |
| ARTS | Arts/Physical Education |
Errors
Error Response Format
All errors are returned in the following format:
{
"error_code": "NotExistClientUser",
"message": "Not exist client user",
"status_code": 400
}Error Codes
| HTTP | Error Code | Description | Solution |
|---|---|---|---|
| 400 | NotExistClientUser | Learner not found | Verify user_id |
| 400 | AlreadyExistClientUser | Learner already exists | Check for duplicate user_id |
| 400 | InvalidCSVFormat | Invalid CSV format | Verify CSV format and encoding |
| 401 | - | Authentication failed | Verify API key |
| 422 | - | Request validation failed | Check request data |
| 500 | - | Internal server error | Contact support |
