Skip to content

Bu səhifə avtomatik tərcümə olunub. Səhv görsəniz, info@tamga.network ünvanına yazın.

SPEC-SCHEMA-0002SpesifikasiyaQüvvədədirversiya 1.0.016 oktyabr 2026

Bu spesifikasiya Tamga-dakı iki təhsil sənədini — tələbə sənədini və diplomu — sahə-sahə müəyyən edir; universitetlər, tələbə məlumat sistemi (OBS) inteqrasiyası aparan komandalar və bu sənədləri yoxlayan tərtibatçılar üçündür.

Nə vaxt oxunmalıdır

Qısaca

Tələbə sənədi "bu şəxs hazırda bu universitetdə qeydiyyatdadır" deyir; diplom isə "bu şəxs bu proqramı bitirib" deyir. Hər sahə üçün şəxsin onu göstərib-göstərməməyi seçə bilib-bilməyəcəyi müəyyəndir: məsələn, diplom qiyməti defolt olaraq gizlidir və yalnız şəxs istədikdə açılır. Şəxsiyyət nömrəsi sənədə daxil edilmir; sənəd şəxsin telefonundakı açara bağlanır. Diplom Aİ-nin təhsil məlumat modeli olan ELM ilə uyğunlaşdırılır; beləliklə, Avropadakı sistemlərə ötürülə bilər.


Əhatə dairəsi ​

Bu spesifikasiya iki sənəd tipini müəyyən edir:

vctMəqsəd
urn:tamga:edu:StudentCredential:1Tələbəlik statusu
urn:tamga:edu:DiplomaCredential:1Məzuniyyət

Əhatədən kənar (qəsdən): transkript, kursun tamamlanması, mikro-credential, tezliklə-məzun, intizam sənədi. Bunlar pilotdan sonraya saxlanıldı; hər yeni tip universitetin tələbə məlumat sistemindən (OBS) əlavə məlumat çəkmək deməkdir və pilotun ən həssas nöqtəsi inteqrasiya səthidir.

Reyestr mexanizmi SPEC-SCHEMA-0001-də, sxemlərin əsaslandığı beynəlxalq modellər RS-SCHEMA-0001-dədir.


1. Ümumi əsas ​

Hər iki tip core/TamgaBaseCredential/1.0.0-dan törəyir (SPEC-SCHEMA-0001 §4). Kök tipdən gələn iss, vct, vct#integrity, iat, cnf claim-ləri burada təkrarlanmır.

1.1 Ümumi təhsil sahələri ​

Hər iki tipdə mövcud olan sahələr:

ClaimTipsdELM qarşılığı
family_namestringalwaysPerson.familyName
given_namestringalwaysPerson.givenName
birth_dateDateOnlyalwaysPerson.dateOfBirth
awarding_body_nameLangStringallowedOrganisation.legalName
awarding_body_idstringallowedOrganisation.identifier
awarding_body_countrystring (ISO 3166-1 alpha-2)allowedOrganisation.location.country

awarding_body_id qurumun milli qeydiyyat nömrəsidir (Türkiyədə YÖK qurum kodu). iss ilə qarışdırılmamalıdır: iss kriptoqrafik sənədi verən qurumun (issuer)Rəqəmsal sənədləri imzalayan və verən qurum: universitet, peşə təşkilatı, dövlət qurumu və ya şirkət. identifikatorudur, awarding_body_id isə inzibati qurum identifikatorudur. Bunlar eyni qurum olmaya bilər — bir universitet adına mərkəzləşdirilmiş sənəd verən xidmət imzalaya bilər.

1.2 Şəxsiyyət nömrəsi ilə bağlı qərar ​

TCKN və ya ona ekvivalent milli şəxsiyyət nömrəsi bu sxemlərdə yer almır.

1.2.1 cnf nəyi sübut edir, nəyi sübut etmir ​

Bu fərq asanlıqla yanlış başa düşülə bilər və sxemin əsaslandırması ona söykəndiyi üçün burada aydın yazılmalıdır.

cnf claim-i və key binding (SPEC-CRED-0001 §3) bunu sübut edir:

Sənədi təqdim edən tərəf sənəd verilərkən bu sənədə bağlanmış şəxsi açarı idarə edir.

Yəni "sənədi alan sənəd sahibi (holder)Rəqəmsal sənədi öz rəqəmsal cüzdanında saxlayan və onu kimə göstərəcəyinə qərar verən şəxs. ilə sənədi təqdim edən sənəd sahibi eynidir". Sübut etmədiyi isə:

Qarşınızdakı insan sənəddə adı keçən şəxsdir.

cnf bir insana deyil, bir cihaz açarına bağlayır. Ayşə telefonunu və PIN-ini başqasına verərsə, həmin şəxs etibarlı imzalı və etibarlı key-binding-li diplom təqdim edir; yoxlama zəncirinin heç bir addımı xəta vermir.

1.2.2 Şəxsiyyət uyğunlaşdırmasını nə həll edir ​

Düzgün həll birləşmiş təqdimatdır: eyni OpenID4VP (OpenID for Verifiable Presentations)Yoxlayan tərəfin rəqəmsal cüzdandan rəqəmsal sənəd tələb etmək və təqdimetməni almaq üçün istifadə etdiyi protokol. sorğusunda diplom və dövlət şəxsiyyət sənədi (credential)Sənədi verən qurum tərəfindən imzalanan və şəxsin rəqəmsal cüzdanında saxlanan rəqəmsal sənəd; şəxs yalnız soruşulan sahələri göstərir. (PID (Person Identification Data)Dövlətin ən yüksək təminat səviyyəsində verdiyi əsas şəxsiyyət məlumatları. Tamga bu rolu öz üzərinə götürmür; onun şəxsiyyət sənədi PID deyil.) birlikdə təqdim olunur, hər ikisi eyni cnf açarına bağlıdır. Beləliklə, yoxlayan tərəf (verifier)Təqdim edilən rəqəmsal sənədi yoxlayan tərəf: imza, etibar siyahısındakı sənədi verən qurum, status və siyasət. Yoxlayan tərəf olaraq da adlandırılır. iki sənədin eyni rəqəmsal cüzdana aid olduğunu bilir və şəxsiyyəti PID daşıyır. EUDI ekosisteminin yanaşması budur (RS-EIDAS-0001).

İlk mərhələdə PID yoxdur. Dövlət iştirakı olmadan bu mexanizm işləmir.

1.2.3 İlk mərhələnin məhdudiyyəti (açıq şəkildə qeydə alınıb) ​

Pilotda faktiki olaraq baş verən budur: yoxlayan tərəf sənəddəki family_name, given_name və birth_date sahələrini namizədin ayrıca təqdim etdiyi şəxsiyyət sənədi ilə müqayisə edir.

Bu, kriptoqrafik deyil, prosedur xarakterli uyğunlaşdırmadır və zəifdir. Lakin bu gün kağız diplomla edilənin eynisidir — yəni Tamga bu məsələdə gerilik gətirmir, sadəcə gözlənilən təkmilləşməni dövlət mərhələsinə təxirə salır.

Bu məhdudiyyət pilot iştirakçılarına (universitet və yoxlayan tərəf) açıq şəkildə bildirilməlidir. → PM-GTM-0001 iş bəndi.

1.2.4 Şəxsiyyət nömrəsinin əlavə edilməməsinin əsaslandırması ​

Yuxarıdakılardan çıxan nəticə: şəxsiyyət nömrəsini əlavə etmək bu problemi həll etməzdi. Saxta təqdimat edən şəxsin əlində sənəd sahibinin şəxsiyyət nömrəsi də olardı; prosedur uyğunlaşdırması eyni qalardı.

Bunun əksinə, şəxsiyyət nömrəsini əlavə etməyin qəti bir dəyəri var: şəbəkə üzrə daimi və unikal korrelyasiya açarı yaradır. Müxtəlif sənəd verənlərdən alınmış sənədlər, müxtəlif yoxlayan tərəflərə edilmiş təqdimatlar eyni nömrə üzərindən birləşdirilə bilən hala gəlir.

Sıfır fayda, qəti dəyər → sahə sxemdə yoxdur.

Ehtiyac duyulan istisna ssenarilər (rəsmi ekvivalentlik prosedurları, dövlət qulluğuna qəbul) üçün ayrıca NATIONAL sxem yazılır — tr/edu/... — və orada sahə sd: always olur.


2. TamgaStudentCredential ​

İnkişaf mərhələsi (ADR-0029): isteğe bağlı credit_points (proqramın iş yükü, AKTS) və enrollment_date (qeydiyyat tarixi) — Aİ DC4EU qeydiyyat sənədində (EUHEPOE) məcburi sahələr; tamga.elm_mapping hər claim-in ELM qarşılığını verir. DiplomaCredential da ELM qarşılıqlarını daşıyır (EUHED).

2.1 Dizayn qərarları ​

MövzuQərarƏsaslandırma
MüddətƏn çox 90 gün (exp məcburi) — sabit deyil, yuxarı həddirTələbəlik statusu dəyişkəndir
Ləğv siyahısıİstifadə edilmirADR-0008 Alt. C — qısa müddət ləğvi əvəz edir
Sənədi verən qurumun assurance səviyyəsiMinimum I2PM-ASSUR-0001
TəzəlikYoxlayan tərəfin siyasəti müəyyən edir — §2.1.2Risk səviyyəsi yoxlayan tərəfə görə dəyişir
YeniləməTələbə istədikdə; batch iləAvtomatik yeniləmə yoxdur (izləmə səthi)

Ləğv siyahısı niyə yoxdur: 90 günlük sənəddə ləğv (revocation)Müddəti bitmədən əvvəl rəqəmsal sənədin geri çəkilməsi; sənədi verən qurum bunu yoxlayan tərəflərin yoxladığı status siyahısında qeyd edir. mexanizmini işlətmək qazandırdığından çox xərc gətirir. Bunun əksinə, hər tələbə üçün ləğv siyahısı (status list)Sıxılmış, imzalanmış siyahı, burada hər rəqəmsal sənədin etibarlı, dayandırılmış və ya ləğv edilmiş olduğunu bildirən bir mövqeyi var. indeksi saxlamaq sənədi verən quruma daimi əməliyyat yükü və korrelyasiya səthi əlavə edir.

2.1.1 Köhnəlmiş sənəd boşluğu (qəbul edilmiş və idarə olunan risk) ​

Qısa müddətin ləğvi əvəz etməsi bədəlsiz deyil. Tələbə sənədi aldıqdan bir gün sonra qeydiyyatını ləğv etdirərsə, əlində daha 89 gün etibarlı "aktiv tələbəyəm" sənədi qalır. Yoxlama zəncirinin heç bir addımı bunu aşkar etmir.

Təsiri istifadə ssenarisinə görə dəyişir:

SsenariKöhnəlmiş sənəd riski
Tələbə endirimi (kino, nəqliyyat, proqram lisenziyası)Aşağı — maliyyə itkisi məhduddur
Kitabxana/kampus girişiAşağı — fiziki nəzarət var
İmtahan müraciəti, təqaüdOrta
Tələbə vizası, yaşayış icazəsiYüksək

Bu sxem NETWORK qatındadır və uzunömürlüdür; bu gün kino endirimi üçün istifadə edilən tip sabah yaşayış icazəsi üçün istifadə oluna bilər. Həll ləğv siyahısı əlavə etmək deyil, təzəliyi yoxlayan tərəfə keçirməkdir.

2.1.2 Yoxlayan tərəfin təzəlik siyasəti (mexanizm) ​

default_ttl_days: 90 yuxarı həddir. Sənədi verən qurum daha qısa exp verə bilər və yüksək riskli ssenarilərdə verməlidir.

Yoxlayan tərəfdə mexanizm belədir: təqdimat sorğusunda maksimum iat yaşı göstərilir.

"Son 7 gün ərzində verilmiş StudentCredential istəyirəm."

Rəqəmsal cüzdanda bu şərtə cavab verən sənəd yoxdursa, istifadəçini sənədi verən qurumdan yeni sənəd almağa yönləndirir. Ləğv infrastrukturu tələb olunmur; təzəlik tələbi riski üzərinə götürən tərəfdə müəyyən edilir.

Tövsiyə olunan hədlər (SPEC-PROTO-0002-də normativləşəcək):

RiskMaksimum iat yaşı
Aşağı (endirim)90 gün
Orta (təqaüd, imtahan)14 gün
Yüksək (rəsmi əməliyyat)24 saat – 7 gün

2.1.3 Toplu sənəd verilməsi (məxfilik balansı) ​

§2.1.2-nin bədəli tez-tez yeniləmədir. Rəqəmsal cüzdan hər təzəlik ehtiyacında sənədi verən quruma müraciət edərsə, universitet "bu şəxs sənədindən nə qədər tez-tez istifadə edir" siqnalını mütəmadi olaraq alır — səssiz izləmə kanalı.

Həll toplu sənəd verilməsidir (batch issuance)Eyni rəqəmsal sənədin bir neçə birdəfəlik istifadə üçün olan nüsxəsinin eyni vaxtda verilməsi, beləliklə hər yoxlayan tərəf fərqli nüsxə görür (əlaqələndirilməzlik).: rəqəmsal cüzdan bir sənəd alma sessiyasında bir neçə (tövsiyə: 10–12) sənəd alır, hər təqdimatda onlardan fərqli birini istifadə edir. Universitet yalnız toplu alım anını görür, ayrı-ayrı istifadələri görmür.

Batch issuance OpenID4VCI (OpenID for Verifiable Credential Issuance)Sənədi verən qurumun rəqəmsal sənədi rəqəmsal cüzdana çatdırmaq üçün istifadə etdiyi protokol.-nin dəstəklədiyi xüsusiyyətdir; protokol təfərrüatları SPEC-PROTO-0001-də müəyyən ediləcək.

Avtomatik yeniləmə yenə də yoxdur. Batch alımı istifadəçi əməliyyatı ilə başlayır; rəqəmsal cüzdan arxa planda özbaşına yeniləmə etmir.

2.2 Sahələr cədvəli ​

ClaimTipMəcburisdİzah
student_statusenum✓allowedACTIVE | ON_LEAVE — §2.2.1
enrollment_yearinteger✓allowedQəbul ili
study_levelinteger (EQF)✓allowed5–8
programme_titleLangString✓allowedProqramın adı
isced_f_codestring✓allowedISCED-F 2013, 2–4 rəqəm — §6.4
faculty_nameLangString—allowedFakültə
expected_graduation_yearinteger—allowedTəxmini
credit_pointsnumber—allowedProqramın iş yükü (AKTS, 0–1000); Aİ qeydiyyat sənədi (EUHEPOE)
enrollment_datedate—allowedQeydiyyat tarixi (YYYY-MM-DD); Aİ qeydiyyat sənədi (EUHEPOE). enrollment_year məcburi olaraq qalır
is_enrolledboolean✓allowedTörəmə — §2.3

2.2.1 student_status niyə GRADUATED ehtiva etmir ​

student_status enum-unda GRADUATED yoxdur; dəyərlər yalnız bunlardır: ACTIVE | ON_LEAVE.

Əsaslandırma: məzun olmanı sübut edən rəqəmsal sənəd TamgaDiplomaCredential-dır. Eyni faktı iki tipdə təqdim etmək PM-SCHEMA-0001 Zəiflik 2-nin (məna parçalanması) sxem daxilindəki formasıdır — yoxlayan tərəf "hansına baxım" sualı ilə qalır.

Bundan əlavə, struktur baxımından da uyğunsuz olardı: GRADUATED statusunda olan şəxs 90 gün sonra rəqəmsal sənədi yeniləyə bilməz, çünki artıq həmin qurumun tələbəsi deyil. Yəni qısa ömürlü tip daimi faktı daşıyardı.

Məzunun "bu qurumda oxumuşam" sübutuna ehtiyacı varsa (diplom almadan ayrılmış ola bilər), bu ayrıca tipdir — AttendanceCredential, pilot əhatəsindən kənardadır.

2.3 Törəmə sahə — is_enrolled ​

RS-SCHEMA-0001 §4-dəki age_over_NN şablonunun tətbiqi.

is_enrolled = (student_status == "ACTIVE")

Niyə ayrıca claim: Tələbə endirimi tələb edən kinoteatr universiteti, ixtisası və qəbul ilini bilmək məcburiyyətində deyil. Yeganə ehtiyacı "hazırda tələbədirmi" məlumatıdır. Ayrıca boolean claim olduğu üçün tələbə yalnız onu açıqlaya bilər; digər sahələr disclosureSD-JWT-də təsadüfi duz ilə paketlənmiş bir sahə dəyəri; sənəd sahibi yalnız yoxlayan tərəfin tələb etdiyi paylaşımları təqdim edir. kimi heç təqdim edilmir.

Bu, selective disclosureRəqəmsal sənəddən yalnız yoxlayan tərəfin soruşduğu sahələrin göstərilməsi, başqa heç nəyin göstərilməməsi.-ın ən konkret qazancıdır və pilotu izah edərkən ən asan göstərilən şeydir.

2.4 JSON Schema ​

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.tamga.network/v1/edu/StudentCredential/1.0.0/schema.json",
  "title": "TamgaStudentCredential",
  "type": "object",
  "required": [
    "iss", "vct", "vct#integrity", "iat", "exp", "cnf",
    "family_name", "given_name", "birth_date",
    "awarding_body_name", "awarding_body_id", "awarding_body_country",
    "student_status", "enrollment_year", "study_level",
    "programme_title", "isced_f_code", "is_enrolled"
  ],
  "properties": {
    "iss":   { "type": "string", "format": "uri" },
    "vct":   { "const": "urn:tamga:edu:StudentCredential:1" },
    "vct#integrity": { "type": "string", "pattern": "^sha256-" },
    "iat":   { "type": "integer" },
    "exp":   { "type": "integer" },
    "cnf":   { "type": "object" },
    "category": { "enum": ["urn:tamga:eaa:pub", "urn:tamga:eaa:qualified"] },

    "family_name": { "type": "string", "minLength": 1, "maxLength": 200 },
    "given_name":  { "type": "string", "minLength": 1, "maxLength": 200 },
    "birth_date":  { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/DateOnly" },

    "awarding_body_name":    { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "awarding_body_id":      { "type": "string", "minLength": 1, "maxLength": 64 },
    "awarding_body_country": { "type": "string", "pattern": "^[A-Z]{2}$" },

    "student_status": { "enum": ["ACTIVE", "ON_LEAVE"] },
    "enrollment_year": { "type": "integer", "minimum": 1900, "maximum": 2200 },
    "study_level": { "type": "integer", "minimum": 5, "maximum": 8 },
    "programme_title": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "isced_f_code": { "type": "string", "pattern": "^[0-9]{2,4}$" },
    "faculty_name": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "expected_graduation_year": { "type": "integer", "minimum": 1900, "maximum": 2200 },
    "credit_points": { "type": "number", "minimum": 0, "maximum": 1000 },
    "enrollment_date": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/DateOnly" },

    "is_enrolled": { "type": "boolean" }
  },
  "additionalProperties": false
}

additionalProperties: false şüurlu seçimdir. Sənədi verən qurumun sxemdə olmayan sahə əlavə etməsinin qarşısı alınır; ehtiyac olarsa MINOR versiya buraxılır. Sərbəst buraxmaq PM-SCHEMA-0001 Zəiflik 2-ni (məna parçalanması) arxa qapıdan geri gətirər.

2.5 Nümunə məzmun (açıqlamadan əvvəl) ​

json
{
  "iss": "https://issuer.tamga.network/example-university",
  "vct": "urn:tamga:edu:StudentCredential:1",
  "vct#integrity": "sha256-9Kf2rT8xQm1vB4nL7wZpYc3JdHs0EaXu6GiOoN5RbMk=",
  "iat": 1789000000,
  "exp": 1796776000,
  "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "...", "y": "..." } },

  "family_name": "Yılmaz",
  "given_name": "Ayşe",
  "birth_date": "2003-04-17",

  "awarding_body_name": {
    "tr-TR": "Örnek Üniversitesi",
    "en-US": "Example University"
  },
  "awarding_body_id": "TR-YOK-038",
  "awarding_body_country": "TR",

  "student_status": "ACTIVE",
  "enrollment_year": 2022,
  "study_level": 6,
  "programme_title": {
    "tr-TR": "Bilgisayar Mühendisliği",
    "en-US": "Computer Engineering"
  },
  "isced_f_code": "0613",
  "faculty_name": { "tr-TR": "Mühendislik ve Doğa Bilimleri Fakültesi" },
  "expected_graduation_year": 2026,
  "credit_points": 240,
  "enrollment_date": "2022-09-19",

  "is_enrolled": true
}

Kinoteatr ssenarisində tələbənin təqdim etdiyi yeganə disclosure is_enrolled-dır. Qalan bütün sahələr _sd massivində hash kimi qalır; kinoteatr family_name-ni belə görmür.


3. TamgaDiplomaCredential ​

3.1 Dizayn qərarları ​

MövzuQərarƏsaslandırma
ÖmürMüddətsiz (exp yoxdur)Diplom daimidir
Ləğv siyahısıİstifadə olunurADR-0008 — ləğv real ehtiyacdır
Sənədi verən qurumun assurance səviyyəsiMinimum I2PM-ASSUR-0001
Sənəd sahibinin assurance səviyyəsiSənəd verilərkən minimum T2 tövsiyə olunurSPEC-CRED-0001 §3

exp niyə yoxdur: Diplomun istifadə müddəti yoxdur. Onun yenilənməsi tələb olunmur və yeniləmə məcburiyyəti qoymaq məzunu ömürlük universitetdən asılı vəziyyətə salar.

Ləğv siyahısı niyə var: Diplomun ləğvi nadir, lakin real haldır — plagiatın aşkarlanması, saxta sənədlə qəbul, intizam qərarı. Tələbə sənədindən fərqi odur ki, qısa ömür ləğvi əvəz edə bilmir.

İnkişaf mərhələsi (ADR-0029, ADR-0048 K2): paketlərin 0.6.0 versiyasında diplomun Type Metadata-sına tamga.suspension_allowed: true əlavə edildi; metadata və buna görə də vct#integrity xülasəsi dəyişdi. 0.6.0-dan əvvəl verilmiş (sınaq) diplomlar yeni xülasəyə uyğun gəlmir, yoxlamada rədd edilir və yenidən verilməlidir: qurum diplomu yenidən verir, məzun onu rəqəmsal cüzdanına yenidən əlavə edir. Keçid kodu yazılmır (ADR-0029); beta-dan sonra dərc edilmiş sxem dəyişmir, yeni versiya buraxılır.

3.2 Sahələr cədvəli ​

ClaimTipMəcburisdELM qarşılığı
qualification_titleLangString✓allowedQualification.title
eqf_levelinteger✓allowedQualification.EQFLevel
nqf_levelstring—allowedQualification.NQFLevel (TYÇ)
isced_f_codestring✓allowedQualification.ISCEDFCode
awarding_dateDateOnly✓allowedAwardingProcess.awardingDate
awarding_body_nameLangString✓allowedOrganisation.legalName
mode_of_studyenum—allowedLearningAchievement.mode
credit_pointsnumber—allowedLearningAchievement.creditReceived (ECTS)
gradestring—alwaysAssessment.grade
grading_schemeLangString—allowedAssessment.gradingScheme
thesis_titleLangString—alwaysLearningAchievement.title
is_graduateboolean✓allowedtörəmə
graduated_beforeinteger—allowedtörəmə
statusobject✓never— (ADR-0008)

3.3 Qiymət (grade) niyə sd: always ​

Bu, sxemin ən vacib dizayn qərarıdır.

İşəgötürən "məzundurmu" sualını verir; "hansı balla məzun olub" sualını verməyə əksər hallarda haqqı yoxdur və praktikada buna ehtiyacı da yoxdur. Qiyməti sd: always etmək sənədi verən qurumun onu məcburi olaraq selective disclosure ilə gizlədilə bilən etməsini təmin edir — yəni məzun diplomu qiymətini göstərmədən təqdim edə bilər.

Kağız diplomda bu mümkün deyil: sənədi təqdim edirsiniz, üzərindəki hər şey görünür. Tamga-nın konkret üstünlüyü budur və sxem səviyyəsində məcburi edilməsə, reallaşmır.

Eyni məntiq thesis_title üçün də keçərlidir: dissertasiya mövzusu şəxsin maraq dairəsi və bəzən siyasi/dini baxışları haqqında məlumat daşıya bilər.

3.4 Törəmə sahələr ​

is_graduate — həmişə true. Diplomun mövcudluğu məzun olmanı nəzərdə tutur; lakin ayrıca claim olması məzunun yalnız bunu açıqlaya bilməsini təmin edir. İşəgötürən "diplomu varmı" yoxlamasında is_graduate + awarding_body_name görür; proqram, qiymət, tarix heç açılmır.

graduated_before — il dəyəri. awarding_date-in ilindən törədilir. "2020-dən əvvəl məzun olub" kimi staj şərtlərini dəqiq məzun olma tarixini açıqlamadan sübut edir. age_over_NN şablonunun birbaşa tətbiqi.

Sənədi verən qurum bu sahəni həmişə doldurur; hansı hədlərdə yaradılacağı tamga.derived_claims daxilində müəyyən edilib.

3.5 JSON Schema ​

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.tamga.network/v1/edu/DiplomaCredential/1.0.0/schema.json",
  "title": "TamgaDiplomaCredential",
  "type": "object",
  "required": [
    "iss", "vct", "iat", "cnf", "status",
    "family_name", "given_name", "birth_date",
    "awarding_body_name", "awarding_body_id", "awarding_body_country",
    "qualification_title", "eqf_level", "isced_f_code", "awarding_date",
    "is_graduate"
  ],
  "properties": {
    "iss": { "type": "string", "format": "uri" },
    "vct": { "const": "urn:tamga:edu:DiplomaCredential:1" },
    "iat": { "type": "integer" },
    "cnf": { "type": "object" },
    "status": {
      "type": "object",
      "required": ["status_list"],
      "properties": {
        "status_list": {
          "type": "object",
          "required": ["idx", "uri"],
          "properties": {
            "idx": { "type": "integer", "minimum": 0 },
            "uri": { "type": "string", "format": "uri" }
          }
        }
      }
    },

    "family_name": { "type": "string", "minLength": 1, "maxLength": 200 },
    "given_name":  { "type": "string", "minLength": 1, "maxLength": 200 },
    "birth_date":  { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/DateOnly" },

    "awarding_body_name":    { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "awarding_body_id":      { "type": "string", "minLength": 1, "maxLength": 64 },
    "awarding_body_country": { "type": "string", "pattern": "^[A-Z]{2}$" },

    "qualification_title": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "eqf_level":  { "type": "integer", "minimum": 5, "maximum": 8 },
    "nqf_level":  { "type": "string", "maxLength": 16 },
    "isced_f_code": { "type": "string", "pattern": "^[0-9]{2,4}$" },
    "awarding_date": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/DateOnly" },

    "mode_of_study": { "enum": ["FULL_TIME", "PART_TIME", "DISTANCE", "BLENDED"] },
    "credit_points": { "type": "number", "minimum": 0, "maximum": 1000 },
    "grade": { "type": "string", "maxLength": 32 },
    "grading_scheme": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },
    "thesis_title": { "$ref": "../../../core/TamgaBaseCredential/1.0.0/schema.json#/$defs/LangString" },

    "is_graduate": { "const": true },
    "graduated_before": { "type": "integer", "minimum": 1900, "maximum": 2200 }
  },
  "additionalProperties": false
}

3.6 Nümunə məzmun (açıqlamadan əvvəl) ​

json
{
  "iss": "https://issuer.tamga.network/example-university",
  "vct": "urn:tamga:edu:DiplomaCredential:1",
  "vct#integrity": "sha256-3Qm2pV7yLx0KcW9tRfBnEsA4ZhUgJd1MoI6TvXbCqNw=",
  "iat": 1789000000,
  "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "...", "y": "..." } },
  "status": {
    "status_list": {
      "idx": 48213,
      "uri": "https://status.tamga.network/7f3a9c21"
    }
  },

  "family_name": "Yılmaz",
  "given_name": "Ayşe",
  "birth_date": "2003-04-17",

  "awarding_body_name": {
    "tr-TR": "Örnek Üniversitesi",
    "en-US": "Example University"
  },
  "awarding_body_id": "TR-YOK-038",
  "awarding_body_country": "TR",

  "qualification_title": {
    "tr-TR": "Bilgisayar Mühendisliği Lisans Diploması",
    "en-US": "Bachelor of Science in Computer Engineering"
  },
  "eqf_level": 6,
  "nqf_level": "TYC-6",
  "isced_f_code": "0613",
  "awarding_date": "2026-06-30",

  "mode_of_study": "FULL_TIME",
  "credit_points": 240,
  "grade": "3.42",
  "grading_scheme": { "tr-TR": "4'lük sistem" },
  "thesis_title": { "tr-TR": "Federated Learning ile Gizlilik Korumalı Model Eğitimi" },

  "is_graduate": true,
  "graduated_before": 2027
}

3.7 İşəgötürən ssenarisi — nə açılır, nə açılmır ​

Ayşə işəgötürənə müraciət edir. İşəgötürən bakalavr diplomu axtarır.

SahəAçılırmıSəbəb
is_graduate✓Sualın özü
qualification_title✓Hansı ixtisas
eqf_level✓Səviyyə — maşın tərəfindən oxunan
isced_f_code✓Sahə kodu — beynəlxalq səviyyədə tanınır
awarding_body_name✓Hansı qurum
awarding_date✓Stajın hesablanması
family_name, given_name✓Müraciət onsuz da ad ilə edilir
birth_date✗Yaş ayrı-seçkiliyi riski
grade✗İşəgötürənin ehtiyacı yoxdur
thesis_title✗Baxışları/maraq dairəsini sızdırır
credit_points, mode_of_study✗Əlaqəsizdir

Təqdim edilən SD-JWT-də yalnız ilk yeddi sahə disclosure kimi yer alır. Qalanlar _sd daxilində hash kimi qalır və işəgötürən onların mövcudluğunu belə ayırd edə bilmir — disclosure sayı sabit olmadığı üçün hansı sahələrin gizlədildiyi də bəlli olmur.

Yoxlayan tərəfin bu sahələri tələb etmək səlahiyyəti əlavə olaraq RelyingPartyRegistry scope-u ilə məhdudlaşdırılır (SPEC-BC-0001 §4).


4. ELM Uyğunlaşdırma Cədvəli (Normativ) ​

RS-SCHEMA-0001 §9-a əsasən məcburidir. Bu cədvəl olmadan sxem "standarta uyğun görünən, amma uyğun olmayan" sxemdir.

4.1 DiplomaCredential ↔ ELM v3 ​

Tamga claimELM v3 yoluOBv3 qarşılığı
family_namecredentialSubject.familyNamecredentialSubject.identifier
given_namecredentialSubject.givenName—
birth_datecredentialSubject.dateOfBirth—
qualification_titlehasClaim.specifiedBy.titleachievement.name
eqf_levelhasClaim.specifiedBy.EQFLevelachievement.alignment[].targetCode
nqf_levelhasClaim.specifiedBy.NQFLevel—
isced_f_codehasClaim.specifiedBy.ISCEDFCodeachievement.alignment[].targetCode
awarding_datehasClaim.awardedBy.awardingDateissuanceDate
awarding_body_namehasClaim.awardedBy.awardingBody.legalNameissuer.name
awarding_body_idhasClaim.awardedBy.awardingBody.identifierissuer.id
credit_pointshasClaim.creditReceived.pointachievement.creditsAvailable
mode_of_studyhasClaim.mode—
gradehasClaim.provenBy.graderesult[].value
grading_schemehasClaim.provenBy.gradingSchemeresultDescription
thesis_titlehasClaim.titleachievement.description
is_graduate(törəmə — ELM qarşılığı yoxdur)—
graduated_before(törəmə — ELM qarşılığı yoxdur)—

4.2 Düzləşdirmə qaydasının yoxlanması ​

RS-SCHEMA-0001 §9-dakı "iki səviyyədən dərinə getmə" qaydası bu sxemdə ödənilir: ELM-də dörd səviyyə dərinlikdə olan hasClaim.awardedBy.awardingBody.legalName Tamga-da tək səviyyəli awarding_body_name claim-idir.

4.3 İxrac ​

mapping.json faylı (SPEC-SCHEMA-0001 §1.3) bu cədvəli maşın tərəfindən oxunan formada daşıyır. Tamga diplomunun EDC-yə (Europass) ixracı bu faylla həyata keçirilir.

İtki xəbərdarlığı: Törəmə claim-lərin (is_graduate, graduated_before) ELM qarşılığı yoxdur; ixrac zamanı düşürlər. Bu, xəta deyil, gözlənilən davranışdır — törəmə claim-lər Tamga-nın məxfilik qatına aiddir.


5. Tip təsvirləri (Type Metadata) ​

5.1 StudentCredential ​

json
{
  "vct": "urn:tamga:edu:StudentCredential:1",
  "name": "Tamga Student Credential",
  "description": "Proves student status at a higher-education institution.",
  "extends": "urn:tamga:core:TamgaBaseCredential:1",
  "extends#integrity": "sha256-Yr9kL2mQ...",
  "schema_uri": "https://schemas.tamga.network/v1/edu/StudentCredential/1.0.0/schema.json",
  "schema_uri#integrity": "sha256-Bn7xW4pT...",
  "display": [
    { "lang": "tr-TR", "name": "Öğrenci Belgesi", "description": "Öğrencilik durumu" },
    { "lang": "en-US", "name": "Student Certificate", "description": "Proof of enrolment" }
  ],
  "claims": [
    { "path": ["birth_date"],    "sd": "always" },
    { "path": ["family_name"],   "sd": "always" },
    { "path": ["given_name"],    "sd": "always" },
    { "path": ["is_enrolled"],   "sd": "allowed",
      "display": [{ "lang": "tr-TR", "label": "Aktif öğrenci" }] },
    { "path": ["programme_title"], "sd": "allowed",
      "display": [{ "lang": "tr-TR", "label": "Program" }] }
  ],
  "tamga": {
    "tier": "NETWORK",
    "issuer_categories": ["EDUCATION"],
    "default_ttl_days": 90,
    "uses_status_list": false,
    "min_issuer_assurance": "I2",
    "derived_claims": ["is_enrolled"],
    "elm_profile": "ELM-3.3/LearningAchievement",
    "status": "ACTIVE"
  }
}

5.2 DiplomaCredential ​

json
{
  "vct": "urn:tamga:edu:DiplomaCredential:1",
  "name": "Tamga Diploma Credential",
  "description": "A graduation credential issued by a higher-education institution.",
  "extends": "urn:tamga:core:TamgaBaseCredential:1",
  "extends#integrity": "sha256-Yr9kL2mQ...",
  "schema_uri": "https://schemas.tamga.network/v1/edu/DiplomaCredential/1.0.0/schema.json",
  "schema_uri#integrity": "sha256-3Qm2pV7y...",
  "display": [
    { "lang": "tr-TR", "name": "Diploma", "description": "Yükseköğretim mezuniyet belgesi" },
    { "lang": "en-US", "name": "Diploma", "description": "Higher education degree" }
  ],
  "claims": [
    { "path": ["birth_date"],   "sd": "always" },
    { "path": ["grade"],        "sd": "always",
      "display": [{ "lang": "tr-TR", "label": "Not ortalaması" }] },
    { "path": ["thesis_title"], "sd": "always" },
    { "path": ["is_graduate"],  "sd": "allowed",
      "display": [{ "lang": "tr-TR", "label": "Mezun" }] },
    { "path": ["eqf_level"],    "sd": "allowed",
      "display": [{ "lang": "tr-TR", "label": "Yeterlilik seviyesi (EQF)" }] },
    { "path": ["status"],       "sd": "never" }
  ],
  "tamga": {
    "tier": "NETWORK",
    "issuer_categories": ["EDUCATION"],
    "default_ttl_days": null,
    "uses_status_list": true,
    "min_issuer_assurance": "I2",
    "derived_claims": ["is_graduate", "graduated_before"],
    "elm_profile": "ELM-3.3/Qualification",
    "status": "ACTIVE"
  }
}

6. OBS İnteqrasiya Uyğunlaşdırması ​

Pilotun ən həssas nöqtəsi universitetin tələbə məlumat sistemindən məlumat çəkməkdir. Bu bölmə sənədi verən xidmətin (ARCH-0003) ehtiyac duyduğu minimal sahələr toplusunu müəyyən edir.

6.1 StudentCredential üçün tələb olunan OBS sahələri ​

Tamga claimTipik OBS sahəsiQeyd
family_name, given_nameTələbənin adı/soyadı—
birth_dateDoğum tarixi—
student_statusQeydiyyat statusuOBS enum-u ACTIVE/ON_LEAVE-ə uyğunlaşdırılmalıdır
enrollment_yearQəbul iliTələbə nömrəsindən törədilə bilər
study_levelProqram növü → EQF§6.3 uyğunlaşdırma
programme_titleProqramın adıİngiliscə adı da tələb olunur
isced_f_code—OBS-də yoxdur; milli YÖK cədvəlindən törədilir — §6.4
faculty_nameFakültə—

6.2 DiplomaCredential üçün əlavə sahələr ​

qualification_title, awarding_date (məzun olma qərarının tarixi), credit_points (ümumi AKTS), grade (məzun olma üzrə orta bal), grading_scheme, thesis_title (varsa).

6.3 Proqram növü → EQF uyğunlaşdırması (Türkiyə) ​

ProqramEQFTYÇ
Subbakalavr (ön lisans)5TYC-5
Bakalavr6TYC-6
Magistr7TYC-7
Doktorantura8TYC-8

6.4 ISCED-F kodu — milli təsnifatın götürülməsi ​

ISCED-F kodu universitetlərin OBS-lərində sahə kimi adətən olmur. Lakin bu, kodun yaradıla bilməyəcəyi demək deyil — çünki uyğunlaşdırma işi Türkiyədə milli səviyyədə artıq görülüb.

6.4.1 Mövcud milli mənbə ​

YÖK 2020-ci ildə ali təhsil sistemindəki oxşar məzmunlu və ya oxşar adlı bütün aktiv, passiv və bağlanmış subbakalavr və bakalavr proqramlarını ISCED-F 2013 təsnifatını əsas götürərək elmi meyarlar üzrə vahid ad altında birləşdirib. Prosesdə 55 universitetdən 120 akademikin iştirak etdiyi 17 işçi komissiya fəaliyyət göstərib, proqramların sayı təxminən 2 230-dan 679-a enib. YÖK-ün beynəlxalq bölməsi bundan əlavə bakalavr proqramlarının ISCED-F 2013 təsnifatını əks etdirən sənəd dərc edib.

Nəticə: iş bəndi "hər universitet öz cədvəlini hazırlayır" deyil, **"milli cədvəl bir dəfə idxal edilir və yoxlanılır"**dır. 200 universitet eyni işi 200 dəfə görmür.

6.4.2 Tətbiq ​

Uyğunlaşdırma cədvəli @tamga-network/schemas paketində versiyalaşdırılmış şəbəkə aktivi kimi saxlanılır (ARCH-0005):

tr/isced-f-2013-programs.json   # YÖK programme name → ISCED-F code

Sənədi verən xidmət OBS-dən gələn proqram adını bu cədvəllə uyğunlaşdırır. Cədvəldə olmayan proqram üçün sənədin verilməsi dayanır və məsələ operatora ötürülür — xidmət səssizcə boş və ya təxmini kod yaratmır.

Qurum səviyyəsində istisna (cədvəldə olmayan yeni proqram) overrides faylı ilə müəyyən edilir və o da versiyalaşdırılır.

6.4.3 Əsl risk: yanlış kod ​

Təhlükəli olan kodun olmaması deyil, yanlış koddur. Diplom imzalanmış, dəyişməz və qırx il qüvvədə qalan sənəddir. Yanlış ISCED-F kodunu düzəltməyin yeganə yolu sənədi ləğv edib yenidən verməkdir; kağız diplomdakı kimi düzəliş mümkün deyil.

Riskin azaldılması:

  1. Cədvəl şəbəkə aktividir, hər universitet üçün ayrıca improvizasiya deyil (§6.4.2).
  2. İkimərhələli təsdiq: cədvəli ilk rəqəmsal sənəd verilməzdən əvvəl universitetin tələbə işləri şöbəsi və bir Tamga rəyçisi təsdiq edir.
  3. Pilləli kod icazəsi (§6.4.4) — əmin olunmayan yerdə daha ümumi kod.
  4. Seçmə yoxlama: ilk 100 rəqəmsal sənəddə kodun düzgünlüyü əl ilə seçmə qaydada yoxlanılır.

6.4.4 Kod pilləsi — niyə 2–4 rəqəm ​

ISCED-F 2013 üç pillədən ibarətdir: 2 rəqəm geniş sahə (10 ədəd), 3 rəqəm dar sahə (29 ədəd), 4 rəqəm təfərrüatlı sahə (80 ədəd).

Şablon ^[0-9]{2,4}$-dir; ən təfərrüatlı pillə (^[0-9]{4}$) məcburi deyil.

Əsaslandırma: təfərrüatlı pillədə səhv ehtimalı nəzərəçarpacaq dərəcədə yüksəkdir və §6.4.3 müddəasına görə səhvin bədəli daimidir. Universitet əmin olmadığı proqram üçün 3 rəqəmli dar sahə kodu verə bilər; Qazaxıstandakı işəgötürən yenə də istifadəyə yararlı siqnal alır ("mühəndislik və mühəndislik peşələri" səviyyəsində). Əmin olunan proqramlarda 4 rəqəm istifadə olunur.

Dəqiqlik itkisi var; lakin bu, yanlış kod riskindən ucuzdur.

Sahəni tamamilə ixtiyari etmək rədd edilmişdir — ISCED-F beynəlxalq tanınmanın daşıyıcısıdır (SPEC-SCHEMA-0001 §8.3). Sahə çıxarılarsa, diplom sərhədlərdən kənarda oxunmayan bir mətnə çevrilir.

6.4.5 Pilot iş bəndi ​

→ PM-GTM-0001: "YÖK ISCED-F 2013 proqram təsnifatının idxalı, aktuallığının təsdiqi və pilot universitetin proqram siyahısı ilə müqayisəsi."

Təsdiq qeydi: Mənbə 2020-ci ilə aiddir və sonradan yenilənmiş ola bilər. Pilotdan əvvəl YÖK-ün aktual nəşri əsasında yoxlanılmalıdır.


7. İnvariantlar ​

#İnvariant
E1Milli şəxsiyyət nömrəsi bu iki NETWORK sxemində yer almır (§1.2).
E2grade və thesis_title həmişə sd: always-dir (§3.3).
E3is_graduate sabit true-dir; false diplom mənasızdır.
E4StudentCredential exp daşıyır; DiplomaCredential daşımır.
E5DiplomaCredential status daşıyır; StudentCredential daşımır.
E6Hər iki sxemdə additionalProperties: false.
E7isced_f_code hər iki sxemdə məcburidir; 2, 3 və ya 4 rəqəmli ola bilər.
E8Hər LangString sahəsi ən azı qurumun rəsmi dilini ehtiva edir.
E9StudentCredential.exp - iat ≤ 90 gün (yuxarı hədd, §2.1.2).
E10Heç bir NETWORK təhsil sxemi milli şəxsiyyət nömrəsi sahəsini ehtiva etmir (§1.2).
E11Uyğunluq cədvəlində qarşılığı olmayan proqram üçün rəqəmsal sənədin verilməsi dayanır; təxmini kod yaradılmır (§6.4.2).

Təhlükəsizlik və məxfilik qeydləri ​

Disclosure sayı yan kanaldır. Yoxlayan tərəf təqdim olunan disclosure sayından "neçə sahənin gizlədildiyi" məlumatını çıxara bilər. Tək başına zərərsizdir, lakin iki təqdimatın müqayisəsi ilə korrelyasiya yarada bilər. Azaltma: rəqəmsal cüzdan eyni yoxlayan tərəfə edilən təkrar təqdimatlarda ardıcıl disclosure dəstindən istifadə etməlidir (SHOULD).

Status index korrelyasiyası. status.status_list.idx hər təqdimatda görünür (sd: never) və sabitdir. Eyni diplomu iki fərqli yoxlayan tərəfə təqdim edən məzun, həmin iki yoxlayan tərəf əməkdaşlıq edərsə, eyniləşdirilə bilər. Bu, məlum SD-JWT məhdudiyyətidir; həlli batch issuance-dir (SPEC-CRED-0001 §5, genişlənmə mərhələsi). Pilotda qəbul edilmiş riskdir və pilot iştirakçılarına açıq şəkildə bildirilməlidir.

Ləğv siyahısı gizlədilmiş claim-ləri sızdıra bilər. status bloku sd: never olduğu üçün həm idx, həm də siyahı URI-si hər təqdimatda görünür. Siyahı URI-si və ya siyahının bölünmə meyarı kohort məlumatı daşıyırsa, awarding_date və ya programme_title gizlədilmiş olsa belə, bu məlumatlar sızır.

Konkret nümunə: .../statuslist/edu-2026-a formatındakı URI məzun olma ilini birbaşa üzə çıxarır — məzun awarding_date-i açıqlamamış olsa belə.

Buna görə SPEC-CRED-0003 §6.3 və §6.4 iki qaydanı normativ edir: siyahı URI-si qeyri-şəffafdır (opaque) və siyahılar il/fakültə/kohort meyarı ilə bölünmür. Bu sənəddəki nümunələr (§3.6) həmin qaydaya uyğundur.

birth_date niyə sd: always. Doğum tarixi adla birləşdikdə yüksək ehtimalla unikal identifikatordur. Onun məcburi olaraq gizlədilə bilən olması məzunun onu verməməyi seçə bilməsini təmin edir.


Açıq məsələlər ​

  1. student_status enum-u bütün üzv dövlətlərin təhsil sistemlərini əhatə edirmi? (ON_LEAVE qarşılığı hər ölkədə varmı?)
  2. AttendanceCredential (diplom almadan təhsili tərk edənlər üçün) nə vaxt yazılacaq? Pilotdan kənardır, lakin tələb yarana bilər.
  3. İkili ixtisas / əlavə ixtisas diplomu necə təqdim olunur — iki ayrı rəqəmsal sənəd, yoxsa bir sənəddə massiv? Təklif: iki ayrı rəqəmsal sənəd (sadəlik). Qərar gözlənilir.
  4. Xarici vətəndaş olan məzunun awarding_body_country ilə vətəndaşlıq əlaqəsi — sxemdə vətəndaşlıq sahəsi yoxdur, bu, şüurlu seçimdir. Ekvivalentlik ssenarisində lazım olarsa, NATIONAL sxemə.
  5. ISCED-F uyğunluq cədvəlinə kim baxır? Təklif: @tamga-network/schemas paketində ümumi cədvəl + quruma görə üstələmə (override).

Əlaqəli sənədlər ​

SPEC-SCHEMA-0001 · RS-SCHEMA-0001 · ADR-0007 · ADR-0008 · SPEC-CRED-0001 · SPEC-CRED-0002 · SPEC-BC-0001 · PM-ASSUR-0001 · PM-GTM-0001 · ARCH-0003


Status ​

Qüvvədədir — versiya 1.0.0 (2026-10-02).