API холболт
API v1 · Сүүлд шинэчилсэн: 2026 оны 10 сарын 19
Сургалт, бүртгэл, ирц, сертификатын мэдээллийг танай систем болон burtgel.link хооронд сервер хооронд солилцох зориулалттай. Үндсэн хаяг: https://burtgel.link/api/v1. Туршилтын орчинд тухайн орчны платформын хаягийг хэрэглэнэ.
Багц ба боломж
| Багц | API боломж |
|---|---|
| Pro | Унших |
| Organization, Enterprise | Унших болон түлхүүрт зөвшөөрсөн үйлдлүүд |
| Free, Starter, хугацаа дууссан төлбөртэй багц | API ашиглахгүй; хуучин түлхүүрээ жагсааж, цуцалж болно |
Багцуудын үнэ, бусад боломжийг Үнэ хуудаснаас харна уу.
Түлхүүр ба эрх
Байгууллагын баталгаажсан эзэмшигч апп доторх API холболт хэсгээс түлхүүр үүсгэнэ. Нэр, эрх, шаардлагатай бол нэг хэлтэс, хүчинтэй хоногоо сонгоно. Анхны хугацаа 90 хоног, дээд хугацаа 365 хоног; нэг байгууллага 10 хүртэл идэвхтэй түлхүүртэй.
Нууц түлхүүрийг зөвхөн үүсгэх үед нэг удаа харуулна. Хуулж, холбох системийн серверийн нууц тохиргоонд хадгална. Браузерийн код, URL, нийтийн файл болон хүсэлтийн логт түлхүүрээ оруулахгүй.
Бүх хүсэлтэд дараах толгой хэрэгтэй. Доорх нь зөвхөн орлуулагч:
Authorization: Bearer <API_KEY>Нэвтэрсэн браузерийн cookie нь API түлхүүрийг орлохгүй. Түлхүүр байгууллагыг тогтооно; URL эсвэл JSON-д өөр байгууллагын ID өгч хандахгүй.
view эрх бүх түлхүүрт орно. Pro багцад зөвхөн энэ эрх ажиллана. Нэмэлт эрхүүд:
| Эрх | Зөвшөөрөх үйлдэл |
|---|---|
session.manage | Сургалт үүсгэх, засах, нийтлэх, цуцлах, дуусгах |
registration.manage | Оролцогч бүртгэх, бүртгэл цуцлах |
attendance.manage | Ирц засах |
certificate.issue | Сертификат олгох |
certificate.revoke | Сертификат хүчингүй болгох |
Сертификат дахин олгоход сертификатын хоёр эрх хоёулаа шаардлагатай. Унших эрх нь оролцогчийн нэр, имэйл, утас зэрэг холбоо барих мэдээлэлд хандах эрхтэй. Зөвхөн шаардлагатай хүрээ, эрхийг сонгоно.
Түлхүүрт сонгосон хэлтсийн хүрээг хүсэлтээр өргөжүүлэхгүй. Түлхүүр үүсгэсэн гишүүний одоогийн эрх, хэлтэс, баталгаажуулалт, байгууллагын хүчинтэй багцыг хүсэлт бүрт дахин шалгана. Эрх, хэлтсийг солихдоо шинэ түлхүүр үүсгэж, хуучныг цуцална. Түлхүүр алдагдсан бол API холболт хэсгээс даруй цуцална.
Хүсэлтүүд
Бүх зам үндсэн хаягийн араас залгана. {id} нь тухайн объектын UUID. Сургалтын хуваарийн dayId-г GET /sessions/{id}-ийн days жагсаалтаас авна.
Унших · view
| Хүсэлт | Утга |
|---|---|
GET | Сургалтын жагсаалт |
GET | Нэг сургалт, хуваарийн өдрүүд, бүртгэлийн тоо |
GET | Бүртгэл ба оролцогчийн холбоо барих мэдээлэл |
GET | Бүртгэл, өдөр тус бүрийн хадгалсан ирц |
GET | Сертификатын жагсаалт |
GET | Нэг бүртгэл |
GET | Нэг сертификат, төлөв ба баталгаажуулах хаяг |
Өөрчлөх · Organization, Enterprise
| Хүсэлт | Үйлдэл ба эрх |
|---|---|
POST | Сургалтын ноорог үүсгэхsession.manageIdempotency-Key |
PUT | Сургалтыг бүрэн мэдээллээр засахsession.manage |
POST | Сургалт нийтлэхsession.manage |
POST | Сургалт цуцлахsession.manage |
POST | Сургалт дуусгахsession.manage |
POST | Оролцогч бүртгэхregistration.manageIdempotency-Key |
POST | Бүртгэл цуцлахregistration.manage |
PUT | Ирц засахattendance.manage |
POST | Сертификат олгохcertificate.issueIdempotency-Key |
POST | Сертификат хүчингүй болгохcertificate.revoke |
POST | Сертификат дахин олгохcertificate.issuecertificate.revokeIdempotency-Key |
Унших хүсэлт ба хариу
GET /api/v1/sessions?page=1&perPage=50
Authorization: Bearer <API_KEY>Жагсаалтын хариу:
{
"data": [],
"pagination": { "page": 1, "perPage": 50, "total": 0, "pages": 1 }
}Нэг объектын болон үйлдлийн хариу {"data": ...} хэлбэртэй. Огноо ISO 8601 UTC мөрөөр, хоосон утга null гэж ирнэ. Амжилттай үүсгэсэн объект 201, бусад амжилттай хүсэлт 200 төлөвтэй. Аль хэдийн байгаа бүртгэл эсвэл хүчинтэй сертификатыг буцаахад мөн 200 ирж болно.
Хуудас ба хугацааны шүүлтүүр
page: 1-ээс эхлэх бүхэл тоо; анхны утга 1.perPage: 1–100; анхны утга 50.(page - 1) × perPageнь 100,000-аас ихгүй байна.fromнь хамрах эхлэл,toнь хамруулахгүй төгсгөл. Хоёрыг хамт, цагийн бүстэй ISO 8601 утгаар өгнө, жишээ нь2027-01-01T00:00:00Z. Эхлэл нь төгсгөлөөс өмнө, сонгосон цонх 366 хоногоос уртгүй байна.
| Жагсаалт | Хугацааны шүүлтүүрийн огноо |
|---|---|
| Сургалт | startsAt |
| Бүртгэл | registeredAt |
| Ирц | Тухайн өдрийн startsAt |
| Сертификат | issuedAt |
Олон жилийн мэдээллийг хугацааны цонхуудаар хувааж татна. status шүүлтүүр:
| Жагсаалт | status утгууд |
|---|---|
| Сургалт | draft, published, closed, completed, cancelled |
| Бүртгэл | confirmed, waitlisted, cancelled |
| Сертификат | valid, revoked, superseded |
Ирцийн жагсаалт зөвхөн хадгалсан мөрүүдийг өгнө; мөр байхгүйг шууд absent гэж тооцохгүй. Ирцэд status шүүлтүүр байхгүй. Давхардсан болон танихгүй query параметр, нэг объект унших болон өөрчлөх хүсэлтийн query параметрийг хүлээн авахгүй.
Өөрчлөх хүсэлт
Бүх POST, PUT хүсэлт Content-Type: application/json толгой, JSON объект биетэй байна. Талбаргүй үйлдэлд ч хоосон биеийн оронд {} илгээнэ. Биеийн дээд хэмжээ 64 KiB. Танихгүй талбаруудыг хүлээн авахгүй.
POST /api/v1/sessions/<SESSION_UUID>/publish
Authorization: Bearer <API_KEY>
Content-Type: application/json
{}Сургалт үүсгэх, засах
POST /sessions нь үргэлж ноорог үүсгэнэ. Дараа нь /publish үйлдлээр нийтэлнэ. PUT /sessions/{id} нь хэсэгчилсэн засвар биш: хадгалах бүх мэдээлэл, бүх өдрийн хуваарийг дахин илгээнэ. Шаардлагатай үндсэн талбарууд нь title, mode, capacity, days; сонголтот талбарыг орхивол анхны утга эсвэл null болж болно.
Үүсгэх болон засахад ашиглах бүрэн жишээ. Байгууллагынхаа өгөгдлөөр солино:
{
"departmentId": null,
"title": "Аюулгүй ажиллагааны сургалт",
"description": "Ажилтнуудад зориулсан сургалт",
"mode": "in_person",
"location": "Төв байр, 201 тоот",
"onlineUrl": null,
"trainerName": "Багшийн нэр",
"capacity": 30,
"waitlistEnabled": true,
"registrationDeadline": "2027-04-19T18:00:00+08:00",
"visibility": "public",
"days": [
{
"startsAt": "2027-04-20T09:00:00+08:00",
"endsAt": "2027-04-20T17:00:00+08:00"
}
],
"certificateTemplateId": null,
"feedbackFormId": null,
"attendanceThresholdPercent": 80,
"autoIssueCertificate": false,
"requireFeedbackForCertificate": false,
"durationHours": null,
"isPaid": false,
"priceAmount": null,
"paymentDueAt": null,
"lateWindowMin": 30
}| Талбар | Шаардлага / анхны утга |
|---|---|
title | 3–200 тэмдэгт |
mode | in_person, online, hybrid; танхим/хосолсон үед location, цахим/хосолсон үед onlineUrl заавал |
capacity | 1–100,000 бүхэл тоо; багцын суудлын хязгаар давхар үйлчилнэ |
days | 1–366 өдөр; мөр бүр зөвхөн startsAt, endsAt агуулна; дуусах цаг эхлэхээс хойш; нийт хугацаа 366 хоногоос уртгүй |
departmentId | Өөрийн байгууллагын хэлтсийн UUID эсвэл null; үүсгэхэд орхивол түлхүүрийн хүрээ, засахад орхивол одоогийн хэлтэс |
description, location, onlineUrl, trainerName | null эсвэл тус бүр 20,000 / 500 / 2,000 / 200 хүртэл тэмдэгт; onlineUrl нь HTTP/HTTPS URL байна |
waitlistEnabled, visibility | Анхны утга true, public; visibility нь public эсвэл invite_only |
registrationDeadline, paymentDueAt | Цагийн бүстэй ISO 8601 эсвэл null |
certificateTemplateId, feedbackFormId | Апп дотор үүсгэсэн өөрийн байгууллагын загвар/үнэлгээний UUID эсвэл null |
attendanceThresholdPercent | 0–100 бүхэл хувь; анхны утга 0 |
autoIssueCertificate, requireFeedbackForCertificate | Boolean; анхны утга false |
durationHours | 0–9999.99; орхих эсвэл null бол өдрүүдийн нийт хугацаанаас бодно |
isPaid, priceAmount | Анхны утга false; төлбөртэй бол эерэг бүхэл төгрөгийн дүн, байгууллагын дансны тохиргоо шаардлагатай |
lateWindowMin | 0–1440 бүхэл минут; анхны утга 30 |
Хэлтэст хязгаарласан түлхүүрийн хувьд departmentId-г орхих эсвэл өөрийн хэлтсийг өгнө; null болон өөр хэлтсээр хүрээг өргөжүүлэхгүй. Одоо байгаа сургалтын хэлтсийг шилжүүлэхэд түлхүүр үүсгэсэн гишүүн эзэмшигч хэвээр байх шаардлагатай.
certificateTemplateId, attendanceThresholdPercent, autoIssueCertificate, requireFeedbackForCertificate дөрвийг өөрчлөхөд certificate.issue эрх хэрэгтэй. Энэ эрхгүй засвар нь хадгалсан дөрвөн тохиргоог хэвээр үлдээнэ; үүсгэхэд автомат олголтыг идэвхжүүлэхгүй. Эрхгүй түлхүүрээр эдгээр талбарыг орхино.
GET /sessions/{id} хариуг шууд PUT рүү илгээхгүй: id, status, startsAt, endsAt, counts, өдрийн id, dayIndex зэрэг зөвхөн унших талбарыг хасна. Нийтэлсэн сургалтын хуваарь/байршлыг өөрчлөхөд оролцогчдод ердийн мэдэгдэл очно.
Оролцогч бүртгэх
POST /sessions/{id}/registrations хүсэлтэд оролцогчийн мэдээллийг participant объект дотор илгээнэ. email, firstName, lastName заавал; бусад нь сонголтот:
{
"participant": {
"email": "participant@example.com",
"firstName": "Нэр",
"lastName": "Овог",
"phone": "99112233",
"employer": "Байгууллагын нэр",
"position": "Албан тушаал"
}
}Бүртгэл нээлттэй, нийтлэгдсэн сургалтад бүртгэнэ. Суудал дүүрсэн үед хүлээлгийн жагсаалтын тохиргоо үйлчилнэ. Ижил имэйл байгууллага дотор нэг оролцогчийг заана; өөр нэрээр ашиглавал зөрчил болно. Байгаа бүртгэлийг буцаавал 200, шинээр бүртгэвэл 201 ирнэ. Баталгаажуулалт болон сануулгын ердийн мэдэгдлүүд үүснэ.
Бусад үйлдэл
| Хүсэлт | JSON бие |
|---|---|
| Сургалт нийтлэх, дуусгах; сертификат олгох | {} |
| Сургалт/бүртгэл цуцлах; сертификат хүчингүй болгох, дахин олгох | {"reason":"Өөрчлөлтийн шалтгаан"} |
| Ирц засах | {"status":"present","reason":"Ирцийг шалгаж баталгаажуулав"} |
reason нь 3–2000 тэмдэгт. Ирцийн status нь present, late, absent, excused утгатай; өдөр болон бүртгэл нэг сургалтынх байна. present, late ирсэнд тооцогдоно. Байгаа ирсэн цагийг хадгалж, анх гараар тэмдэглэхэд одоогийн цагийг хэрэглэнэ; absent, excused нь checkedInAt: null байна.
Зөвхөн хугацаа нь дууссан, нийтлэгдсэн эсвэл хаагдсан сургалтыг дуусгана. Сертификат олгоход баталгаажсан бүртгэл, ирц, үнэлгээ болон төлбөрийн одоогийн шаардлагууд үйлчилнэ; API эдгээрийг алгасах талбаргүй. Сертификат шинээр болон дахин олгоход 201, өмнө олгосон хүчинтэй сертификатыг буцаахад 200 ирнэ.
Давтан хүсэлт: Idempotency-Key
Сургалт үүсгэх, оролцогч бүртгэх, сертификат олгох, сертификат дахин олгох дөрвөн үйлдэлд Idempotency-Key заавал илгээнэ. 8–128 хэвлэгдэх ASCII тэмдэгттэй, эхлэл/төгсгөлдөө зайгүй утга хэрэглэнэ.
Idempotency-Key: hr-training-create-0001Сүлжээ тасарсан эсвэл хариу тодорхойгүй бол ижил түлхүүр, арга, зам, JSON мэдээллээр дахин оролдоно. Ижил хүсэлт 24 цагийн дотор өмнөх амжилттай хариугаа буцааж, давхар бүртгэл/сертификат үүсгэхгүй. Түлхүүрийг өөр мэдээлэлд ашиглавал 409 ирнэ. 24 цаг өнгөрвөл шинэ үйлдэлд тооцогдож болох тул эхлээд үүссэн объектоо шалгана. Давтах үед одоогийн эрх, багц, хэлтсийг дахин шалгана.
Алдаа
Алдаа дараах тогтмол бүтэцтэй:
{
"error": {
"code": "forbidden",
"message": "Танд энэ үйлдлийг хийх эрх байхгүй."
}
}Программын нөхцөлийг code болон HTTP төлөвөөр шалгана; message нь хүнд зориулсан тайлбар бөгөөд үг хэллэгээр нь шийдвэр гаргахгүй.
| HTTP | code | Утга |
|---|---|---|
400 | validation | JSON, талбар, огноо, UUID эсвэл параметр буруу |
401 | unauthenticated | Түлхүүр байхгүй, буруу, цуцалсан, хугацаа дууссан эсвэл үүсгэсэн гишүүн хүчингүй |
403 | forbiddenplan_required | Багц, эрх эсвэл хэлтсийн хүрээ тохирохгүй |
404 | not_found | Объект байхгүй, өөр байгууллага/хэлтсийн объект |
405 | method_not_allowed | Энэ замд HTTP арга дэмжигдэхгүй; боломжтой аргууд Allow толгойд байна |
409 | conflictsession_fullregistration_closedquota_exceedednot_eligible | Төлөв, багтаамж, сертификатын шаардлага эсвэл давтан хүсэлтийн зөрчил |
413 | payload_too_large | Хүсэлтийн мэдээлэл 64 KiB-аас их |
429 | rate_limited | Хүсэлтийн тоо хэтэрсэн; Retry-After секундын дараа дахин оролдоно |
500 | internal_error | Системийн алдаа; шинэ үүсгэх хүсэлт илгээхдээ өмнөх Idempotency-Key-г хадгална |
Хүсэлтийн хязгаар
Нэг түлхүүрт минутанд 120 хүсэлт; өөрчлөх үйлдэлд нэмэлтээр нэг түлхүүрт 30, байгууллагад нийт 60 хүсэлтийн хязгаар үйлчилнэ. Нэвтрэхээс өмнөх IP шалгалт ч тусдаа хязгаартай. Тоолуур сервер дахин эхлэхэд шинэчлэгддэг тул үүнийг төлбөрийн хэрэглээний тоолуур гэж үзэхгүй. API хариуг Cache-Control: no-store гэж буцаана.
API-д хамрахгүй үйлдлүүд
Төлбөр баталгаажуулах, багц/баг/хэлтэс удирдах, байгууллагын тохиргоо болон нийтлэг загвар өөрчлөхийг апп дотроос гүйцэтгэнэ. Нэргүй үнэлгээний хариулт, QR/PIN, ирцийн нууц код, төлбөрийн код, хувийн PDF файлыг API өгөхгүй. Оролцогчийн үндсэн мэдээлэл байгууллагын хэмжээнд хуваалцагддаг; сургалтын түүх, ирц, сертификат нь түлхүүрийн хүрээгээр хязгаарлагдана.
Асуулт байвал холбоо барих хуудсаар бидэнд хандана уу.