Employee Profile Schema
Felder
Employee Profile Schema
Schema for validating employee profile entities (Personalstammdaten)
userId
User UUID (optional link to users collection)
firstName
First name (Vorname) — used when no user is linked
lastName
Last name (Nachname) — used when no user is linked
employeeNumber
Auto-generated employee number (e.g. MA-2026-00001)
email
Work email address. Used as the matching key for telephony integrations (Starface userlist → starfaceAccountId) so employees WITHOUT a linked user account can still be attributed in call analytics. Plain string (no strict format validation) to keep imports forgiving.
orgUnitId
Primary org unit UUID (legacy — use primaryOrgUnitId going forward, ADR 0036b). Write-side it is a mirror of primaryOrgUnitId; changes to either sync the org_units member arrays server-side (ADR 0368).
primaryOrgUnitId
Arbeitsrechtlich maßgebliche Org-Unit (ADR 0036b). Wird vom Working-Time-Resolver für die Hierarchie-Auflösung benutzt. Bei Matrix-Orgs: eindeutig die primäre. Falls nicht gesetzt, fällt der Resolver auf orgUnitId zurück.
managerId
Direct manager user UUID
employmentType
Type of employment (Beschäftigungsart)
FULL_TIMEPART_TIMEMINI_JOBWORKING_STUDENTINTERNFREELANCERemploymentStatus
Current employment status
ACTIVEONBOARDINGON_LEAVEOFFBOARDINGTERMINATEDhireDate
First day of employment (ISO 8601 date: YYYY-MM-DD)
probationEndDate
End of probation period (Probezeit)
terminationDate
Last day of employment
terminationReason
Reason for termination
vacationDaysPerYear
Annual vacation entitlement in days
vacationDaysRemaining
Remaining vacation days for current year
vacationDaysCarryOver
Carried over vacation days from previous year (Resturlaub)
weeklySchedule
Per-weekday work schedule (Arbeitszeitplanung)
day
ISO weekday (1=Mon, 7=Sun)
startTime
Work start time (e.g. "08:00")
endTime
Work end time (e.g. "17:00")
breakMinutes
Break duration in minutes
workingTimeModelId
Reference to working_time_model entity
skills
Structured skill entries with levels
skillId
UUID of the skill definition
level
Proficiency level. INTERESTED is a legacy level-0 interest marker (no proficiency, no XP, never satisfies a scheduling minimum) — deprecated as a level value in favour of the orthogonal `interested` flag below; still read as a fallback. BEGINNER..EXPERT is the legacy 4-tier enum kept in sync with currentLevel. Prefer currentXp/currentLevel for new proficiency logic.
INTERESTEDBEGINNERINTERMEDIATEADVANCEDEXPERTinterested
Orthogonal interest flag (ADR 0223): the employee wants to develop / is interested in this skill, INDEPENDENT of proficiency. Can be true alongside any real level (e.g. EXPERT + interested). Set self-service by the employee on their own profile. Legacy entries with level==="INTERESTED" are treated as interested at read time even when this flag is absent.
interestedAt
When the interest flag was last set to true.
currentXp
Accumulated XP for this skill. Awarded on ticket/task completion or via manual grant. Drives currentLevel.
currentLevel
Numeric level (1–400) across 4 tiers of 100 levels each. Derived from currentXp on XP award, but stored for efficient queries.
verifiedAt
When the skill was last verified
verifiedBy
User UUID of the person who verified the skill
source
How the skill was assigned. PERFORMANCE_REVIEW marks interests carried over from a completed Mitarbeitergespräch.
SELF_ASSESSEDMANAGER_ASSIGNEDCERTIFICATIONAUTO_DETECTEDPERFORMANCE_REVIEWaddedAt
When the skill entry was first added
updatedAt
When the skill entry was last updated (level change, re-verification)
languageSkills
Spoken/written languages with CEFR proficiency level, used for language-aware ticket dispatch
code
ISO 639-1 language code
aaabaeafakamanarasavayazbabebgbhbibmbnbobrbscacechcocrcscucvcydadedvdzeeeleneoeseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhziaidieigiiikioisitiujajvkakgkikjkkklkmknkokrkskukvkwkylalblglilnloltlulvmgmhmimkmlmnmrmsmtmynanbndnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsdsesgsiskslsmsnsosqsrssstsusvswtatetgthtitktltntotrtstttwtyugukuruzvevivowawoxhyiyozazhzulevel
CEFR proficiency level (A1–C2) or NATIVE
A1A2B1B2C1C2NATIVEaddedAt
updatedAt
karma
ADR 0224: running karma total (engagement/fairness score). Server-managed: awarded on verified task completion when tenant.features.karmaEnabled. Audit trail in karma_ledger.
skillUpdateLog
Audit trail of automatic skill-level changes triggered by survey responses or other sources
responseId
survey_response UUID that triggered this update (idempotency key)
source
satisfaction-surveymanualcertificationticket-closetask-donemanual-grantsurveytraining-completednullphone
Personal phone number
dateOfBirth
Date of birth
emergencyContactName
Emergency contact name
emergencyContactPhone
Emergency contact phone number
timeZone
IANA-Zeitzone (z.B. "Europe/Berlin"). Override gegenüber org_unit.timeZone / tenant default. Wird u.a. für Zuschlag-Zeitfenster und DST-Handling genutzt.
holidayRegion
ISO 3166-2 Feiertagsregion (z.B. "DE-NW"). Override gegenüber org_unit.holidayRegion / tenant.settings.defaultHolidayRegion. Relevant für MA im Homeoffice in anderem Bundesland.
mentorUserId
Assigned mentor for trainees / juniors
isMentor
Marked as available mentor in the picker
isSuitableForInterns
Marked as senior who can supervise intern-grade work
defaultSubstituteUserId
Fallback user for sick-leave auto-reassign
isApprentice
Auszubildender: befindet sich in der Ausbildung und hat noch keinen Abschluss. Dient als Gate für den (separat gebauten) Berichtsheft-/Ausbildungsnachweis-Bereich, der nur für Auszubildende sichtbar ist.
isAusbilder
Markiert den Mitarbeiter als Ausbilder (kann Auszubildende ausbilden / ist im Ausbilder-Picker eines Auszubildenden wählbar).
ausbilderEmployeeId
employee_profiles-UUID des diesem Auszubildenden zugewiesenen Ausbilders. Referenziert einen Mitarbeiter (nicht user), damit auch Ausbilder ohne Login zuordenbar sind.
legalEntityId
Rechtliche Einheit (party UUID — typically the operating company, e.g. ITF or Codemeta).
workLocationId
Primary work location (asset/site UUID; references the company address/site).
qualification
Berufs- oder Studienabschluss. `kind: "ausbildung"` referenziert einen Eintrag aus dem BIBB-Verzeichnis (apps/api/src/data/ausbildungsberufe-2026.jsonl); `kind: "hochschule"` erfasst Abschlussgrad + freies Studienfach.
kind
ausbildunghochschuleausbildungName
Berufsbezeichnung aus dem BIBB-Verzeichnis (z. B. "Tierwirt/Tierwirtin")
fachrichtung
Fachrichtung der Ausbildung, falls anwendbar (z. B. "Imkerei")
berufsgattungCode
BIBB-Berufsgattung (5-stellige Nummer)
kategorie
Kategorie aus dem BIBB-Verzeichnis (s. Reference-Data-Endpoint)
ausbildung-bbigausbildung-ausserhalb-bbigausbildung-gesundheit-bundesrechtausbildung-gesundheit-landesrechtausbildung-zustaendige-stelleumschulung-zustaendige-stellehochschulabschluss
Akademischer Abschlussgrad
BACHELORMASTERDIPLOMMAGISTERSTAATSEXAMENPROMOTIONHABILITATIONBERUFSAKADEMIEOTHERfach
Studienfach (Freitext, z. B. "Wirtschaftsinformatik")
safetyRoles
Arbeitsrechtliche Sicherheitsrollen (Ersthelfer, Brandschutzhelfer, Sicherheitsbeauftragter, Datenschutzbeauftragter, ...). Mehrfachzuweisung erlaubt; freie Werte sind zugelassen, damit nicht-katalogisierte Rollen gepflegt werden können.
key
Stabiler Bezeichner (für Standardrollen einer aus SAFETY_ROLE_CATALOG; für Sonstige der frei eingegebene Rollenname).
assignedAt
Datum der Bestellung / Beauftragung
validUntil
Gültig bis — triggert escalation_rule-Reminder vor Ablauf
notes
educationCertificates
Studienbescheinigungen / Ausbildungsnachweise. The actual file lives in the DMS; this is metadata + expiry.
_id
title
issuer
issuedAt
validUntil
Ablaufdatum — when set, an escalation_rule reminder fires before expiry.
documentId
Reference to dms_document holding the certificate file
assignedAssetIds
UUIDs of assets handed out to the employee (laptop, phone, keycard, …). Asset entity carries the canonical assignment record; this is a denormalised quick-access list.
idDocumentVerifications
Append-only Liste der HR-Sichtprüfungen des Ausweisdokuments. Jede Verifikation speichert wer und wann geprüft hat — Dokumentennummer wird DSGVO-konform nicht erfasst.
_id
verifiedAt
Zeitpunkt der Sichtprüfung (server-issued)
verifiedBy
User-UUID der prüfenden HR-Person
verifiedByName
Anzeigename zum Zeitpunkt der Prüfung (Snapshot)
documentType
Dokumenttyp zum Zeitpunkt der Prüfung (PERSONALAUSWEIS, REISEPASS, AUFENTHALTSTITEL, …) — Snapshot, damit Typänderungen die Historie nicht verfälschen.
documentCountry
ISO 3166-1 alpha-2 Ausstellerstaat zum Zeitpunkt der Prüfung — Snapshot.
notes
encryptedFields
Map of field-name → encrypted envelope (AES-256-GCM, employee DEK). See EMPLOYEE_PROFILE_ZK_FIELDS for the registered field set and visibility category.
starfaceAccountId
Starface ACCOUNT_ID this employee maps to (matched by email).
starfaceLoginId
Starface LOGIN_ID (informational).
starfaceInternalNumber
Starface primary internal number (informational).
starfaceExternalNumber
Starface primary external number (informational).
notes
Free-text notes for HR admin
externalReferences
Cross-System-Verknüpfungen (ADR 0147 §3). Pro Fremdsystem ein Eintrag mit stabiler externer Id und den beiden Echo-Hashes. Wird ausschließlich von Sync-Pfaden geschrieben, nie über die generische CRUD-Oberfläche.
system
externalId
externalVersion
externalNumber
syncedAt
lastSyncCorrelationId
lastInboundHash
lastOutboundHash
Keine Felder passen zum Filter.
Standard-Endpoints
Diese Resource folgt dem generischen CRUD-Vertrag der Plattform. Lesen Sie die Konventionen für Pagination, Idempotenz, Optimistic Locking und Audit. Die wichtigsten Endpoints:
GET /api/v1/employee_profiles— Liste, paginiert + filterbarGET /api/v1/employee_profiles/<id>— Einzelne EntityPOST /api/v1/employee_profiles— AnlegenPATCH /api/v1/employee_profiles/<id>— Teil-UpdateDELETE /api/v1/employee_profiles/<id>— Soft-DeleteGET /api/v1/employee_profiles/<id>/timeline— Audit + Aktivitäten