Skip to main content

Students

Students are the recipients of certificates. Unlike institutions and courses, students are registered at the tenant level — they are not tied to a specific institution or course when created. A student can be enrolled in multiple courses and receive multiple certificates.

The student object

{
  "uuid": "f6a7b8c9-d0e1-2345-fghi-456789012345",
  "name": "Maria Fernanda Silva",
  "email": "maria@email.com",
  "date_of_birth": "1998-05-20",
  "gender": "female",
  "social_name": null,
  "created_at": "2024-01-20T14:30:00.000000Z"
}
FieldTypeDescription
uuidstringUnique identifier
namestringFull legal name
emailstringEmail address
date_of_birthdateDate of birth (ISO 8601: YYYY-MM-DD)
genderstringGender identity
social_namestring|nullSocial/preferred name (used in certificates if set)

List students

GET /students
# Search by email to avoid duplicate registration
curl "https://api.dokstamp.eu/students?where[email]=maria@email.com" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "X-Tenant: {TENANT}"
Always search by email before creating a new student to prevent duplicates. Use GET /students?where[email]=student@email.com.

Create a student

POST /students
ParameterTypeRequiredDescription
namestringYesFull legal name
emailstringYesEmail address (must be unique within the tenant)
date_of_birthdateYesDate of birth (YYYY-MM-DD)
genderstringNoGender identity
social_namestringNoPreferred/social name
curl -X POST https://api.dokstamp.eu/students \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Tenant: {TENANT}" \
  -d '{
    "name": "Maria Fernanda Silva",
    "email": "maria@email.com",
    "date_of_birth": "1998-05-20",
    "gender": "female"
  }'
Response 201:
{
  "data": {
    "uuid": "f6a7b8c9-d0e1-2345-fghi-456789012345",
    "name": "Maria Fernanda Silva",
    "email": "maria@email.com",
    "date_of_birth": "1998-05-20",
    "gender": "female",
    "social_name": null
  }
}

Get a student

GET /students/{uuid}
Use includes to load related data:
GET /students/{uuid}?includes[enrollments]=1&includes[certificates]=1

Update a student

PATCH /students/{uuid}
Send only the fields to change. Updating a student’s name after a certificate has been issued does not change the name on existing certificates — the credential subject snapshot captured at issuance time is immutable.

Delete a student

DELETE /students/{uuid}
DELETE /students/batch/destroy
Soft delete. Certificates issued to the student remain in the system.