SkillSwap API
    Preparing search index...

    Class SkillSwapClient

    SkillSwap REST API.

    Index
    • Parameters

      • OptionalbaseUrl: string = 'http://localhost:3000'

        Demo серверийн үндэс.

      Returns SkillSwapClient

      const client = new SkillSwapClient('http://localhost:3000');
      
    • Админы самбар: нээлттэй flag, no-show, царцаасан credit. Зөвхөн role=admin. Домэйн админ: Тэмүүлэн, temuulen@num.edu.mn.

      Returns Promise<AdminDashboard>

      401 UNAUTHORIZED

      403 FORBIDDEN — админ биш.

      const board = await admin.adminDashboard();
      
    • proposed эсвэл confirmed session-ыг цуцална. Calendar симуляци дээрх event хамт устана.

      Parameters

      • sessionId: string

      Returns Promise<Session>

      1. status нь cancelled.

      400 INVALID_STATE — цуцлах төлөвт биш.

      401 UNAUTHORIZED

      404 NOT_FOUND

      const cancelled = await client.cancel(session.session_id);
      // cancelled.skill === 'Франц хэл'
      // cancelled.status === 'cancelled'
    • Session-д нэг тал check-in хийнэ.

      Бат-Эрдэнэ (teacher) болон Оюунцэцэг (learner) тус тусдаа check-in хийсний дараа л status completed болж, 5 credit нэг удаа шилжинэ. Ганц тал 24 цаг өнгөрсөн хойш check-in хийгээгүй хэвээр байвал status unconfirmed болно. Давхар шилжүүлэг байхгүй.

      Parameters

      • sessionId: string

        proposeSession-оос авсан session_id.

      • role: "teacher" | "learner"

        Дуудаж буй хэрэглэгчийн үүрэг.

      Returns Promise<Session>

      1. Хоёр дахь check-in дээр status completed.

      400 VALIDATION_ERROR — role буруу, эсвэл тухайн role таных биш.

      400 INVALID_STATE — session confirmed биш.

      401 UNAUTHORIZED

      404 NOT_FOUND

      409 INSUFFICIENT_CREDITS — шилжүүлэх үед үлдэгдэл хүрэлцэхгүй.

      await teacher.checkIn(session.session_id, 'teacher');
      const done = await learner.checkIn(session.session_id, 'learner');
      // done.status === 'completed'
      // done.credits === 5
      // done.skill === 'Франц хэл'
    • Дууссанаас хойш 72 цагийн дотор credit маргаан нээж, заагчийн credit-ийг царцаана. Нэг session-д нэг flag.

      Parameters

      • sessionId: string
      • reason: string

        Домэйн: Тохирсон 5 credit биш өөр дүн нэхсэн.

      Returns Promise<FlagResult>

      400 VALIDATION_ERROR — reason дутуу.

      400 INVALID_STATE — session completed биш.

      400 FLAG_WINDOW_CLOSED — 72 цаг өнгөрсөн.

      400 ALREADY_FLAGGED

      401 UNAUTHORIZED

      404 NOT_FOUND

      const flag = await learner.flagSession(
      session.session_id,
      'Тохирсон 5 credit биш өөр дүн нэхсэн.'
      );
      // flag.status === 'open'
      // flag.credits === 5
    • Миний credit үлдэгдэл болон царцаасан дүнг буцаана.

      Returns Promise<CreditBalance>

      401 UNAUTHORIZED

      const wallet = await client.getBalance();
      // Оюунцэцэгийн анхны үлдэгдэл 25
    • Session товлохоос өмнө нөгөө талын үнэлгээ, дууссан session, no-show хувийг нэг хариунд авна.

      Parameters

      • userId: string

        Домэйн: usr_4f2a91 (Бат-Эрдэнэ).

      Returns Promise<ProfileResult>

      401 UNAUTHORIZED

      404 NOT_FOUND — хэрэглэгч байхгүй.

      const profile = await client.getProfile('usr_4f2a91');
      // profile.name === 'Бат-Эрдэнэ'
      // profile.skills[0].name === 'Франц хэл'
    • Session-ы мессежүүдийг авна. Зөвхөн оролцогч уншина.

      Parameters

      • sessionId: string

      Returns Promise<MessageList>

      401 UNAUTHORIZED

      404 NOT_FOUND

      const box = await client.listMessages(session.session_id);
      
    • Сануулга болон симуляци calendar event-үүдийг буцаана. Жинхэнэ FCM, Google Calendar руу холбогдохгүй.

      Returns Promise<NotificationResult>

      401 UNAUTHORIZED

      const inbox = await client.listNotifications();
      
    • Миний оролцсон session-уудыг буцаана.

      Returns Promise<SessionList>

      401 UNAUTHORIZED

      const mine = await client.listSessions();
      
    • Нэвтэрч JWT access token авна. Хариунд хэрэглэгчийн объект байхгүй. Зөвхөн token байна.

      Parameters

      • email: string

        Домэйн: oyuntsetseg@num.edu.mn.

      • password: string

        Demo нууц үг: your_account_password.

      Returns Promise<LoginResult>

      400 VALIDATION_ERROR — email эсвэл password дутуу.

      401 UNAUTHORIZED — имэйл эсвэл нууц үг буруу.

      const login = await client.login(
      'oyuntsetseg@num.edu.mn',
      'your_account_password'
      );
      client.setToken(login.access_token);
    • Одоогийн token-ы хэрэглэгчийг буцаана.

      Returns Promise<MeResult>

      401 UNAUTHORIZED — token байхгүй эсвэл хүчингүй.

      const me = await client.me();
      // me.user_id === 'usr_b82e17'
      // me.name === 'Оюунцэцэг'
    • Session дотор мессеж илгээнэ. Текст 500 тэмдэгтээр таслагдана.

      Parameters

      • sessionId: string
      • text: string

        Домэйн: Франц хэлний цагийг 14:00 цагт баталгаажуулъя.

      Returns Promise<ChatMessage>

      400 VALIDATION_ERROR — text дутуу.

      401 UNAUTHORIZED

      404 NOT_FOUND

      const message = await client.postMessage(
      session.session_id,
      'Франц хэлний цагийг 14:00 цагт баталгаажуулъя.'
      );
      // message.from === 'usr_b82e17'
    • Суралцагч заагчид skill session санал болгоно.

      Оюунцэцэг Бат-Эрдэнэд Франц хэлний 1 цагийн хичээлийг 5 credit-ээр санал болгоход ашиглана. Session proposed төлөвт үүснэ. Credit энэ мөчид шилжихгүй. Үлдэгдэл нь credits-ээс багагүй байх ёстой.

      Parameters

      Returns Promise<Session>

      1. status нь proposed.

      400 VALIDATION_ERROR — талбар дутуу, credits бүхэл биш, цаг буруу, teacher_id буруу.

      401 UNAUTHORIZED

      403 RESTRICTED — 30 хоногт 3 no-show, 7 хоног хаагдсан.

      403 INSUFFICIENT_CREDITS — үлдэгдэл хүрэлцэхгүй.

      const session = await client.proposeSession({
      teacherId: 'usr_4f2a91',
      skill: 'Франц хэл',
      startTime: '2026-10-12T14:00:00+08:00',
      endTime: '2026-10-12T15:00:00+08:00',
      credits: 5
      });
      // session.learner_id === 'usr_b82e17'
      // session.status === 'proposed'
    • Дууссан session дээр нөгөө талыг 1–5 одоор үнэлнэ. Нэг хэрэглэгч нэг session-д нэг л удаа үнэлнэ.

      Parameters

      Returns Promise<RateResult>

      400 VALIDATION_ERROR — stars 1–5 бүхэл биш.

      400 INVALID_STATE — session completed биш.

      400 ALREADY_RATED

      401 UNAUTHORIZED

      404 NOT_FOUND

      const rating = await learner.rate(session.session_id, {
      stars: 5,
      comment: 'Бат-Эрдэнэ Франц хэлний цагийг тодорхой заасан.'
      });
      // rating.rated_user === 'usr_4f2a91'
    • Шинэ хэрэглэгч бүртгэнэ. Нэр, утас, имэйл, нууц үг заавал. Ур чадвар заавал биш. Нууц үг хамгийн багадаа 8 тэмдэгт. Давхардсан имэйлдаас татгалзана.

      Parameters

      • input: {
            email: string;
            name: string;
            password: string;
            phone: string;
            skills?: Skill[];
        }
        • email: string

          Имэйл.

        • name: string

          Харагдах нэр.

        • password: string

          Хамгийн багадаа 8 тэмдэгт.

        • phone: string

          Утас.

        • Optionalskills?: Skill[]

          Заах ур чадвар.

      Returns Promise<RegisterResult>

      400 VALIDATION_ERROR — талбар дутуу, нууц үг богино, имэйл бүртгэлтэй.

      const created = await client.register({
      name: 'Оюунцэцэг',
      phone: '99112233',
      email: 'oyuntsetseg.new@num.edu.mn',
      password: 'your_account_password',
      skills: []
      });
    • Ирээгүй оролцогчийг no-show гэж мэдээлнэ.

      Зөвхөн confirmed session дээр, эхэлсэн цагаас хойш, дууссанаас хойш 1 цагийн дотор. 30 хоногт 3 удаа бүртгэгдвэл тухайн хүн 7 хоног шинэ session захиалах эрхгүй болно.

      Parameters

      Returns Promise<NoShowResult>

      400 VALIDATION_ERROR — absent_user_id нь оролцогч биш, эсвэл өөрөө.

      400 INVALID_STATE — confirmed биш.

      400 NO_SHOW_TOO_EARLY — session эхлээгүй.

      400 NO_SHOW_WINDOW_CLOSED — дууссанаас хойш 1 цаг өнгөрсөн.

      401 UNAUTHORIZED

      404 NOT_FOUND

      const report = await learner.reportNoShow(session.session_id, {
      absentUserId: 'usr_4f2a91',
      comment: 'Бат-Эрдэнэ Франц хэлний цагт ирээгүй.'
      });
      // report.status === 'no_show_reported'
    • Нээлттэй flag-ыг approve эсвэл reject хийнэ. approve бол царцаасан credit суралцагчид буцна. reject бол заагчид суллагдана.

      Parameters

      Returns Promise<FlagResult>

      1. status нь upheld эсвэл rejected.

      400 VALIDATION_ERROR — decision буруу.

      401 UNAUTHORIZED

      403 FORBIDDEN

      404 NOT_FOUND — нээлттэй flag байхгүй.

      const closed = await admin.resolveFlag(flag.id, {
      decision: 'approve',
      note: 'Франц хэлний 5 credit-ийн маргааныг суралцагчийн талд шийдсэн.'
      });
    • Санал хүлээн авсан тал зөвшөөрөх, татгалзах, эсвэл counter хийнэ. Санал тавьсан хүн өөрөө хариулж болохгүй. accept хийвэл session confirmed болж, сануулга болон calendar симуляци үүснэ.

      Parameters

      Returns Promise<Session>

      400 INVALID_STATE — proposed биш, эсвэл санал тавьсан хүн нь өөрөө.

      400 VALIDATION_ERROR — action эсвэл counter талбар буруу.

      401 UNAUTHORIZED

      403 INSUFFICIENT_CREDITS — accept үед суралцагчийн үлдэгдэл хүрэхгүй.

      404 NOT_FOUND

      // Бат-Эрдэнийн token-оор
      const confirmed = await teacher.respond(session.session_id, {
      action: 'accept'
      });
      // confirmed.status === 'confirmed'
    • Ур чадвар, ангилал, хамгийн бага үнэлгээ, боломжит цагаар заагч хайна. skill эсвэл category-ийн аль нэг заавал. Үр дүн үнэлгээгээр буурна. Админ болон өөрөө хайлтад орохгүй.

      Parameters

      • query: {
            availableFrom?: string;
            category?: string;
            minRating?: number;
            skill?: string;
        }
        • OptionalavailableFrom?: string

          ISO-8601. Домэйн: 2026-10-12T14:00:00+08:00.

        • Optionalcategory?: string

          Яг таарах ангилал. Домэйн: Хэл.

        • OptionalminRating?: number

          0–5. Домэйн: 4.

        • Optionalskill?: string

          Нэрийн дэд мөр. Домэйн: Франц хэл.

      Returns Promise<SearchResult>

      400 VALIDATION_ERROR — skill болон category хоёул хоосон, min_rating мужийн гадна, огноо буруу.

      401 UNAUTHORIZED

      const found = await client.searchSkills({
      skill: 'Франц хэл',
      category: 'Хэл',
      minRating: 4,
      availableFrom: '2026-10-12T14:00:00+08:00'
      });
      // found.results[0].user_id === 'usr_4f2a91'
    • Дараагийн хүсэлтэд Bearer token тавина.

      Parameters

      • accessToken: string

        login()-оос авсан access_token.

      Returns void

      client.setToken(login.access_token);
      
    • Session үйл явдлын webhook бүртгэнэ. callback URL зөвхөн HTTPS. events нь WEBHOOK_EVENTS-ээс байна.

      Parameters

      Returns Promise<WebhookResult>

      400 VALIDATION_ERROR — URL нь https биш, эсвэл event танихгүй.

      401 UNAUTHORIZED

      const hook = await client.subscribeWebhook({
      callbackUrl: 'https://oyuntsetseg.num.edu.mn/hooks/skillswap',
      events: ['session.confirmed', 'credit.transferred']
      });