edutap.ai developers
User Management

API Reference

User data registration and management REST API

REST API for registering and managing user information.

Common

Base URL

https://tapapi.coxwave.link

Authentication

All API requests require the TAP-API-KEY header.

Request Headers

ParameterTypeRequiredDescription
TAP-API-KEYStringOYour 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

POST/api/v1/client-user#
Register a single learner.

Request

Request Body

ParameterTypeRequiredDescription
user_idStringOUnique learner identifier
ageNumber-Age (0 < age < 100)
genderString-Gender (Male: M, Female: F)
job_categoryString-Job category. See job_category enum
years_of_experienceNumber-Years of experience (0 < years < 100)
school_yearNumber-School year (0 < school_year < 15)
departmentString-Department. See department enum
extra_propertiesObject-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

ParameterTypeRequiredDescription
resultBooleanOSuccess status

Response Example

{
  "result": true
}

Delete User

PATCH/api/v1/client-user#
Delete a single learner registration. (Soft Delete)

User deletion is processed as a soft delete. Data is retained in the database with the is_deleted flag set.

Request

Request Body

ParameterTypeRequiredDescription
user_idStringOID 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

ParameterTypeRequiredDescription
resultBooleanOSuccess status

Response Example

{
  "result": true
}

Bulk User Registration (CSV)

POST/api/v1/client-user/bulk/csv#
Batch register multiple learners via CSV file.

Request

Request Body (multipart/form-data)

ParameterTypeRequiredDescription
fileFileOCSV file (UTF-8 encoding, BOM supported)

CSV Format

ColumnRequiredDescription
user_idOUnique 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

ParameterTypeRequiredDescription
total_rowsNumberOTotal rows processed
inserted_countNumberONewly registered users
skipped_countNumberOUsers skipped due to duplicates
failed_countNumberOUsers failed validation

Response Example

{
  "total_rows": 100,
  "inserted_count": 95,
  "skipped_count": 3,
  "failed_count": 2
}

Bulk User Registration (JSON)

PATCH/api/v1/client-user/bulk/json#
Batch register multiple learners via JSON array.

Request

Request Body

ParameterTypeRequiredDescription
user_itemsArray of objectsOArray of learner information. See user_items item
user_items item
ParameterTypeRequiredDescription
external_user_idStringOUnique learner identifier
ageNumber-Age
genderString-Gender
job_categoryString-Job category code
years_of_experienceNumber-Years of experience
school_yearNumber-School year
departmentString-Department code
extra_propertiesObject-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

ParameterTypeRequiredDescription
total_rowsNumberOTotal learners processed
inserted_countNumberONewly registered learners
skipped_countNumberOLearners skipped due to duplicates
failed_countNumberOFailed registrations (always 0 for JSON)

Response Example

{
  "total_rows": 50,
  "inserted_count": 48,
  "skipped_count": 2,
  "failed_count": 0
}

Bulk User Deletion

PATCH/api/v1/client-user/bulk#
Batch delete multiple learners. (Soft Delete)

Request

Request Body

ParameterTypeRequiredDescription
user_idsStringOComma-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

ParameterTypeRequiredDescription
total_countNumberOTotal learners requested
deleted_countNumberOLearners deleted
not_found_countNumberOLearners not found or already deleted

Response Example

{
  "total_count": 3,
  "deleted_count": 2,
  "not_found_count": 1
}

Data Types

job_title (Job Category)

CodeDescription
ITDEVIT Development
AIDATAAI/Data
PLANNINGPlanning/Business
MARKETINGMarketing/PR
DESIGNDesign
MEDIAMedia/Content
SALESSales/Customer Management
FINANCEFinance/Accounting
LOGISTICSDistribution/Logistics
HRHR/Management Support
ETCOthers (Public sector, Professionals, etc.)

department (Department)

CodeDescription
SOCIALHumanities/Social Sciences
ECONOMICEconomics/Business
NATURAL_SCIENCENatural Sciences
ENGINEERINGEngineering
MEDICALMedical Sciences
ARTSArts/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

HTTPError CodeDescriptionSolution
400NotExistClientUserLearner not foundVerify user_id
400AlreadyExistClientUserLearner already existsCheck for duplicate user_id
400InvalidCSVFormatInvalid CSV formatVerify CSV format and encoding
401-Authentication failedVerify API key
422-Request validation failedCheck request data
500-Internal server errorContact support

Next Steps