SkillSwap API (1.0.0)

Download OpenAPI specification:

SkillSwap Dev Team: dev@skillswap.example.mn License: MIT

SkillSwap бол оюутнууд хоорондоо ур чадвараа заах, сурах платформ. Session-ы төлбөрийг платформ доторх credit-ээр тооцно. Энэ API нь хайлт, session товлолт, check-in, credit үлдэгдэл, no-show мэдээлэл болон webhook бүртгэлийг хамарна.

Нэвтэрсний дараа access_token-ыг Swagger UI-ийн Authorize товчинд paste хийж Try it out ашиглана.

Auth

Нэвтрэлт

Нэвтэрч JWT access token авах

Request Body schema: application/json
required
email
required
string <email>
password
required
string <password>

Responses

Request samples

Content type
application/json
{
  • "email": "oyuntsetseg@num.edu.mn",
  • "password": "your_account_password"
}

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
  • "token_type": "Bearer",
  • "expires_in": 3600
}

Search

Ур чадвараар хайх (FR-02, FR-13)

Заагчийг ур чадвар, үнэлгээ, цагаар хайх

Үр дүнг үнэлгээгээр (өндрөөс нам) эрэмбэлнэ. Хариу 3 секундээс хэтрэхгүй (NFR-01).

Authorizations:
BearerAuth
query Parameters
skill
string
Example: skill=Франц хэл

Ур чадварын нэр. skill эсвэл category-ийн аль нэг заавал байна

category
string
Enum: "Хэл" "Программчлал" "Дизайн"
Example: category=Хэл

Ур чадварын ангилал

min_rating
number [ 1 .. 5 ]
Example: min_rating=4

Хамгийн бага дундаж үнэлгээ (1-5)

available_from
string <date-time>
Example: available_from=2026-10-12T14:00:00+08:00

Боломжит эхлэх цаг (ISO 8601)

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Sessions

Session товлолт, check-in, no-show (FR-04, 07, 10)

Session санал болгох

Огноо, цаг, credit хэмжээг санал болгоно. Нөгөө тал зөвшөөрч, татгалзаж эсвэл өөрчилж санал болгоно (FR-04).

Authorizations:
BearerAuth
Request Body schema: application/json
required
teacher_id
required
string
skill
required
string
start_time
required
string <date-time>
end_time
required
string <date-time>
credits
required
integer >= 1

Responses

Request samples

Content type
application/json
{
  • "teacher_id": "usr_4f2a91",
  • "skill": "Франц хэл",
  • "start_time": "2026-10-12T14:00:00+08:00",
  • "end_time": "2026-10-12T15:00:00+08:00",
  • "credits": 5
}

Response samples

Content type
application/json
{
  • "session_id": "ses_7c31d0",
  • "teacher_id": "usr_4f2a91",
  • "learner_id": "usr_b82e17",
  • "skill": "Франц хэл",
  • "start_time": "2026-10-12T14:00:00+08:00",
  • "end_time": "2026-10-12T15:00:00+08:00",
  • "credits": 5,
  • "status": "proposed",
  • "proposed_by": "usr_b82e17",
  • "checkins": {
    },
  • "completed_at": null,
  • "ratings": { },
  • "flag_id": null
}

Session-д check-in хийх

Session "confirmed" төлөвтэй байх ёстой (нөгөө тал зөвшөөрсний дараа). Хоёр тал тус тусдаа check-in хийснээр session "дууссан" болж, credit автоматаар шилжинэ (FR-06, FR-07). 24 цагт зөвхөн нэг тал хийвэл "unconfirmed" төлөвт орно.

Authorizations:
BearerAuth
path Parameters
sessionId
required
string
Example: ses_7c31d0

Session-ы ID

Request Body schema: application/json
required
role
required
string
Enum: "teacher" "learner"

Check-in хийж буй талын үүрэг

Responses

Request samples

Content type
application/json
{
  • "role": "learner"
}

Response samples

Content type
application/json
{
  • "session_id": "ses_7c31d0",
  • "teacher_id": "usr_4f2a91",
  • "learner_id": "usr_b82e17",
  • "skill": "Франц хэл",
  • "start_time": "2026-10-12T14:00:00+08:00",
  • "end_time": "2026-10-12T15:00:00+08:00",
  • "credits": 5,
  • "status": "completed",
  • "proposed_by": "usr_b82e17",
  • "checkins": {
    },
  • "completed_at": "2026-10-12T15:02:11.482Z",
  • "ratings": { },
  • "flag_id": null
}

No-show мэдээлэх

Session дууссанаас хойш 1 цагийн дотор мэдээлнэ. 30 хоногт 3 удаа мэдээлэгдвэл 7 хоног хязгаарлана (FR-10).

Authorizations:
BearerAuth
path Parameters
sessionId
required
string
Example: ses_7c31d0

Session-ы ID

Request Body schema: application/json
required
absent_user_id
required
string

Ирээгүй хэрэглэгчийн ID

comment
string

Нэмэлт тайлбар

Responses

Request samples

Content type
application/json
{
  • "absent_user_id": "usr_b82e17",
  • "comment": "15 минут хүлээсэн ч холбогдсонгүй"
}

Response samples

Content type
application/json
{
  • "session_id": "ses_7c31d0",
  • "status": "no_show_reported",
  • "absent_user_restricted": false
}

Саналд хариулах

Нөгөө тал зөвшөөрөх (accept), татгалзах (decline) эсвэл өөрчилж санал болгоно (counter) (FR-04). Зөвшөөрөхөд Calendar event үүсэж, сануулга товлогдоно (FR-11, FR-15).

Authorizations:
BearerAuth
path Parameters
sessionId
required
string
Example: ses_7c31d0

Session-ы ID

Request Body schema: application/json
required
action
required
string
Enum: "accept" "decline" "counter"
credits
integer >= 1
start_time
string <date-time>
end_time
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "action": "accept"
}

Response samples

Content type
application/json
{
  • "session_id": "ses_7c31d0",
  • "teacher_id": "usr_4f2a91",
  • "learner_id": "usr_b82e17",
  • "skill": "Франц хэл",
  • "start_time": "2026-10-12T14:00:00+08:00",
  • "end_time": "2026-10-12T15:00:00+08:00",
  • "credits": 5,
  • "status": "confirmed",
  • "proposed_by": "usr_b82e17",
  • "checkins": {
    },
  • "completed_at": null,
  • "ratings": { },
  • "flag_id": null
}

Credits

Credit үлдэгдэл (FR-05)

Өөрийн credit үлдэгдэл харах

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "balance": 25,
  • "frozen": 5
}

Webhooks

Үйл явдлын мэдэгдэл (FR-11)

Webhook URL бүртгэх

Session-ы үйл явдлын мэдэгдлийг өөрийн URL руу хүлээн авна.

Authorizations:
BearerAuth
Request Body schema: application/json
required
callback_url
required
string <uri>
events
required
Array of strings
Items Enum: "session.confirmed" "session.completed" "session.cancelled" "credit.transferred"

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Users

Бүртгэл ба профайл (FR-01, FR-03)

Шинээр бүртгүүлэх

Нэр, утас, имэйл, нууц үг, заах ур чадвар бүртгэнэ (FR-01). Нууц үг hash хийгдэж хадгалагдана (NFR-03).

Request Body schema: application/json
required
name
required
string
phone
required
string
email
required
string <email>
password
required
string <password> >= 8 characters
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "Сарнай",
  • "phone": "88001122",
  • "email": "sarnai2@num.edu.mn",
  • "password": "your_account_password",
  • "skills": [
    ]
}

Response samples

Content type
application/json
{
  • "user_id": "usr_91ab3e",
  • "name": "Сарнай",
  • "email": "sarnai2@num.edu.mn",
  • "skills": [
    ]
}

Disputes

Үнэлгээ ба маргаан (FR-08, FR-12)

Session-д үнэлгээ өгөх

Дууссан session дээр нөгөө талыг 1-5 одоор үнэлнэ (FR-08). Нэг session-ыг нэг хүн нэг удаа үнэлнэ.

Authorizations:
BearerAuth
path Parameters
sessionId
required
string
Example: ses_7c31d0

Session-ы ID

Request Body schema: application/json
required
stars
required
integer [ 1 .. 5 ]
comment
string

Responses

Request samples

Content type
application/json
{
  • "stars": 5,
  • "comment": "Маш ойлгомжтой заасан"
}

Response samples

Content type
application/json
{
  • "session_id": "ses_7c31d0",
  • "rated_user": "usr_4f2a91",
  • "stars": 5
}

Credit тооцоог flag хийх

Шударга бус гэж үзсэн credit тооцоог session дууссанаас хойш 72 цагийн дотор admin-д flag хийнэ. Шийдвэр гартал credit царцна (FR-12).

Authorizations:
BearerAuth
path Parameters
sessionId
required
string
Example: ses_7c31d0

Session-ы ID

Request Body schema: application/json
required
reason
required
string

Responses

Request samples

Content type
application/json
{
  • "reason": "Тохирсон 5 credit-ийн оронд 8 credit тооцогдсон"
}

Response samples

Content type
application/json
{
  • "id": "flg_5b21c8",
  • "session_id": "ses_7c31d0",
  • "raised_by": "usr_b82e17",
  • "reason": "Тохирсон 5 credit-ийн оронд 8 credit тооцогдсон",
  • "status": "open",
  • "credits": 5
}